Analyzing a Long-Running Transaction and Database Lock Incident Caused by a Cursor Paging Bug
커서 페이징 오류로 인한 장시간 트랜잭션과 DB Lock 장애 분석
TL;DR
배경
문제 발생 징후
1. 애플리케이션 로그에서 발견된 신호
장애 분석 과정
2. 실행 중인 DB 작업 확인
3. Lock 대기 상태 확인
4. 장시간 트랜잭션 식별
5. 실행 SQL 역추적의 어려움
응급 조치: 트랜잭션 강제 종료
KILL 시 데이터는 어떻게 되는가?
근본 원인 분석
문제의 커서 페이징 로직
문제 핵심
왜 장애로 이어졌는가
1. 트랜잭션 내부에서 실행
2. 동기 이벤트 리스너 사용
3. 락 -> 커넥션 풀 고갈 -> 장애
개선 방향 및 재발 방지
1. 트랜잭션 경계 축소
2. 이벤트 처리 구조 개선
체크리스트
1. DB 관점
2. 애플리케이션 관점
PreviousAvoiding spatial index for trade-offNextCase Study: Analysis of Git Branch Contamination and Recovery
Last updated