백엔드
SQS 기반 알림톡 처리에서 발생한 DB 커넥션 데드락 분석기
두줄요약
SQS 기반 알림톡 처리로 전환한 뒤 DB 커넥션 타임아웃과 데드락이 발생한 원인을 분석했습니다. REQUIRES_NEW 제거와 SQS 메시지 수 조정으로 커넥션 경합을 해소했습니다.
문제 상황
- 알림톡 발송 로직이 비즈니스 트랜잭션과 강하게 결합된 구조
- SQS 이벤트 기반 전환 이후 배포 후 DB 커넥션 타임아웃과 데드락 발생
원인 분석
- SQS MaxNumberOfMessages가 DB 커넥션 풀보다 크게 설정된 병렬 처리 구조
REQUIRES_NEW로 인해 알림 1건당 부모 트랜잭션과 추가 트랜잭션이 동시에 커넥션을 점유- 커넥션이 모두 점유된 상태에서 추가 커넥션을 기다리며 자원 경합 발생
해결 방법
REQUIRES_NEW제거로 알림 1건당 추가 커넥션 요구 제거- SQS 최대 폴링 메시지 수를 커넥션 수 이하로 조정
- 병렬 메시지 처리량과 커넥션 요구량을 함께 제어하는 방향으로 수정
