[바로] DeadLock 범인 찾기 (Ft. 위험한 FK?)
·
프로젝트
Part 1. DeadLock 현상 발생단일 품목 주문 API 부하테스트를 진행하면서 아래와 같이 응답이 실패함을 확인할 수 있었다 실패의 원인을 찾는데는 APM 툴로 Pinpoint를 사용하고 있었기에 크게 어렵지 않았다. 모니터링한 결과, DeadLock이 빈번하게 발생하고 있음을 확인했다. 위의 사진에서 보다시피 CannotAcquireLockException이 반복적으로 나타나고 있으며, 특히 HikariCP 데이터베이스 연결 풀에서 2,443ms 동안 대기하는 것을 볼 수 있다. 지금부터 DeadLock이 왜 발생했는지 찾아보자! Part 2. 문제 원인 분석현재 주문 처리의 핵심 플로우는 다음과 같다. Orders와 Order_items 테이블에 순차적으로 INSERT를 수행한..