목록 보기
의심했던 범인은 알리바이가 있었다.
백엔드

의심했던 범인은 알리바이가 있었다.

무신사
무신사
2026년 7월 9일

두줄요약

Jenkins 배치의 5분~12분 Hang 원인을 JFR로 추적해, 의심했던 로그 appender가 아니라 N+1 쿼리와 Aurora 읽기 지연이 범인임을 밝혀냈습니다. 운영 코드 변경 없이 JVM 옵션 한 줄로 진단하고 쿼리 통합으로 문제를 해결했습니다.

문제 상황

  • Spring Batch를 Jenkins로 트리거하는 배치에서 기동 후 첫 Step 시작 전 공백이 5분~12분까지 늘어나는 간헐적 Hang 발생
  • Thread dump, heap dump, APM만으로는 재현 시점의 JVM 내부 흐름과 시간 축을 함께 보기 어려운 한계 존재
  • 운영 코드를 건드리지 않고 항상 켜둘 수 있는 진단 수단 필요

해결 방법

  • JVM 옵션 -XX:StartFlightRecording로 JFR을 코드 변경 없이 운영에 적용
  • JMC의 Threads, Socket I/O, Method Profiling으로 main 스레드의 대기 구간과 코드 경로를 추적
  • 의심했던 AwsLogsAppender를 배제하고, Aurora 읽기 지연을 유발한 partition 단위 N+1 쿼리를 확인
  • 쿼리 통합으로 read 횟수와 대기 시간을 줄여 Hang 원인 제거

무신사 계열사 채용24건

채용 사이트에서 전체 보기

다음 읽기

같은 회사의 연관 글

로그가 서비스를 죽였다

동기 stdout 로깅이 커넥션 풀 고갈과 요청 실패로 이어진 원인을 분석했습니다. caller에서 추적 ID를 캡처해 비동기 로깅과 관측성을 함께 유지했습니다.

무신사
무신사
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...