기술 경험 + 개념 설명
사이드 프로젝트에서 응답 시간이 2초를 넘는 API를 최적화한 경험이 있습니다. 먼저 JVM GC 로그를 분석했더니 풀 GC가 500ms 이상 걸리는 구간이 반복됐습니다. Heap 크기와 G1GC 리전 설정을 조정하고, 장기 생존 객체를 별도 풀로 분리하면서 GC 빈도와 지연을 줄였습니다. 또한 핫 코드 경로에서 불필요한 객체 생성을 줄이는 리팩토링을 병행했습니다. 결과적으로 P99 레이턴시가 1.8초에서 420ms로 줄었습니다. 대규모 트래픽 환경에서는 GC 튜닝보다 오브젝트 생성 자체를 줄이는 게 더 근본적인 접근이라는 걸 배웠습니다. JVM 튜닝은 증상보다 원인을 찾는 과정이 핵심이라는 걸 배웠습니다.
GC 로그와 힙 덤프를 먼저 읽는 습관이 레이턴시 문제 해결의 출발점이라고 생각합니다.