Back to blog
Troubleshooting1 min read2025년 7월 28일

지연 시간 디버깅: 범위를 좁혀 나가는 절차

사용자가 체감하는 지연에서 시작해 특정 큐, 락, 의존성까지 범위를 좁혀 가는 절차를 정리했습니다.

지연 시간 디버깅은 범위를 좁히는 작업입니다. 각 단계는 탐색 범위를 절반으로 줄여야 하고, 동시에 스레드에 그대로 붙일 수 있는 근거를 남겨야 합니다.

화면 단위로 좁히고, 그다음 홉 단위로

가장 느린 사용자 화면에서 시작해 요청 경로를 한 홉씩 따라가세요. 각 홉에서 p50과 p99를 함께 비교합니다. p99만 나빠졌다면 대기나 경합을 가리키고, p50이 통째로 밀렸다면 실제로 더 비싸진 작업을 가리킵니다.

대기열 직관

큐를 찾기

지연의 대부분은 큐에 있습니다. 커넥션 풀, 스레드 풀, 디스크, 락 중 하나입니다. 사용률 곡선이 지연 곡선과 같이 움직이는 자원을 찾으면 그게 문제의 큐입니다.

변경으로 확인하기

마지막 단계는 항상 통제된 변경입니다. 풀 크기를 올리거나, 락을 제거하거나, 부하를 덜어내고 곡선이 실제로 움직이는지 확인합니다. 이 단계를 건너뛰면 진단이 아니라 가설이 남습니다.

Topics

latencyobservability