본문으로 건너뛰기

데드락

홈 화면 > 프로젝트 선택 > 분석 > 데드락

데드락(Dead Lock)은 둘 이상의 트랜잭션이 각각 상대방이 잠근 리소스(테이블 또는 행)를 기다리며 서로 진행하지 못하는 상태입니다. 빈번한 데드락은 최종 사용자에게 불편함을 주고 서비스 품질을 저하시킵니다.

  • 데드락이 발생한 시점과 관련 정보를 조회할 수 있습니다.

  • 에이전트가 SHOW ENGINE INNODB STATUS 명령어를 주기적으로 실행하여 데드락 정보를 수집합니다.

  • 수집한 정보가 이전과 중복되면 별도로 저장하지 않습니다.

노트

이 명령어의 특성상 가장 최근에 발생한 데드락 정보만 확인할 수 있습니다. 수집 주기 사이에 여러 건의 데드락이 발생하더라도 마지막 한 건만 수집됩니다.

사전 설정

데드락을 사용하려면 Agent 설정이 필요합니다.

Agent 설정

별도 설정 없이 1시간 간격으로 데드락 정보를 수집합니다. 수집 주기를 변경하려면 whatap.conf에 다음 설정을 추가합니다.

deadlock_interval=60
설정 항목타입기본값설명
deadlock_intervalInt60데드락 정보를 수집하는 간격(분)을 설정합니다. 설정한 주기 동안 발생한 데드락 중 가장 마지막에 발생한 하나의 데드락 정보만 수집합니다.

SHOW ENGINE INNODB STATUS 명령어는 시스템 부하가 거의 없으므로, 데드락이 빈번한 환경에서는 수집 간격을 줄여 모니터링하는 것을 권장합니다. 수집 간격이 길면 그 사이에 발생한 데드락이 유실될 수 있습니다.

데드락 분석하기

사용자는 특정 시간, 인스턴스를 선택하여 데드락 이벤트를 조회할 수 있습니다.

기본 옵션

상단 필터 영역에서 조회 기간, 대상 인스턴스를 설정할 수 있습니다.

  • 시간: 조회할 시간 범위를 선택합니다. 최대 3주까지 선택할 수 있습니다.
  • 인스턴스: 조회 대상 DB 인스턴스를 선택합니다.

데드락 목록

설정한 조건으로 검색하면, 데이터베이스에서 발생한 데드락 정보를 테이블 형태로 제공합니다.

알람 설정

데드락 발생에 대한 알람을 설정할 수 있습니다. 단, 데드락 정보는 deadlock_interval 주기마다 확인되므로, 알람은 실시간으로 발생하지 않고 해당 주기에 확인된 데드락에 대해 발생합니다.

데이터 해석 가이드

주요 확인 포인트

  • 데드락 발생 빈도: 짧은 기간에 반복적으로 발생하면 → 트랜잭션 설계 또는 인덱스 구조 점검 필요
  • 관련 테이블/행: 동일한 테이블에서 반복 발생하면 → 해당 테이블의 접근 패턴과 락 범위 확인
  • 관련 트랜잭션: 어떤 SQL이 충돌하는지 확인 → 트랜잭션 순서 조정, 락 범위 축소 검토
  • 발생 시간대: 특정 시간대에 집중되면 → 배치 작업, 트래픽 증가 등 외부 요인 확인

실전 활용 시나리오

시나리오 1. 데드락 발생 이력 조회

  1. 시간 필터에서 확인하려는 기간 설정

  2. 인스턴스를 선택한 뒤 검색

  3. 데드락 목록에서 발생 시점과 관련 정보 확인

시나리오 2. 반복 데드락 원인 분석

  1. 최근 1~3주 기간으로 조회하여 데드락 발생 패턴 확인

  2. 동일한 테이블이나 SQL에서 반복 발생하는지 확인

  3. 관련 트랜잭션의 실행 순서와 락 범위를 분석하여 설계 개선

시나리오 3. 수집 주기 및 알람 조정

  1. 데드락이 빈번하여 누락이 우려되면 deadlock_interval 값을 줄여 수집 주기 단축

  2. 데드락 발생 시 즉시 인지가 필요하면 알람 설정을 활성화하고 deadlock_interval을 짧게 조정