로그 집계 → 시간대 패턴 → DB 슬로우 쿼리 JOIN → 실행 계획 확인
특정 API에서 간헐적으로 500 오류가 발생한다는 이슈를 받았을 때, 가장 먼저 한 건 에러 로그를 타임스탬프 기준으로 정렬하는 것이었습니다. ELK 스택으로 로그를 집계해 오류가 몰리는 시간대를 찾았고, 특정 시간에만 발생하는 패턴이 보였습니다. 같은 시간대 DB 슬로우 쿼리 로그를 함께 분석하니 특정 세션이 잠금을 오래 잡고 있는 케이스가 연결됐습니다.
EXPLAIN ANALYZE로 실행 계획을 보니 인덱스 미사용으로 풀 스캔이 일어나고 있었고, 인덱스 추가 후 오류가 사라졌습니다. 로그와 DB 지표를 함께 봐야 원인을 정확히 짚을 수 있다는 걸 그 경험으로 배웠습니다.