백엔드
배포 직후 발생하는 응답 지연을 해결하기 위한 여정 (feat. JVM 웜업)
두줄요약
배포 직후 발생하던 DB Connection Timeout과 응답 지연의 원인을 분석했습니다. JVM 웜업과 startupProbe 적용으로 초기 지연 문제를 해결했습니다.
문제 상황
- 배포 직후 요청에서 DB Connection Timeout과 응답 지연이 반복 발생
- 커넥션 풀을 늘리고 배포 트래픽을 줄여도 현상 재발
원인 분석
- HikariCP 커넥션 부족만으로는 설명되지 않는 패턴
- 배포 직후 클래스 로딩과 초기화 작업이 요청 처리와 겹치며 커넥션 점유 시간 증가
- CPU 사용량과 GC 증가가 초기 병목으로 작용
해결 방법
- 애플리케이션 기동 후 핵심 API 로직을 미리 호출하는 JVM 웜업 적용
- Kubernetes startupProbe로 웜업 완료 전 유저 트래픽 유입 차단
- 배포 직후 클래스 로딩 및 초기 지연 해소
