← 전체 글로 돌아가기

API

API 응답이 갑자기 느려질 때: 원인 좁히기

API가 느려졌을 때 요청과 응답을 분석해서 병목을 찾는 방법입니다.

운영 중에는 작은 이상 신호도 빨리 분리해서 봐야 한다. 에러는 안 나지만 응답이 느리면 사용자 경험만 악화되고, 원인을 찾기는 더 어렵다.

문제의 경계 파악

API 전체가 느린 건지, 특정 엔드포인트만 느린 건지 구분해야 한다. 요청/응답의 흐름을 먼저 끊어서 본다.

특히 status code가 애매하면 다른 부분을 고쳐도 결과가 안 바뀐다. 200을 받으면서 느린 건지, 5xx 에러가 나서 느린 건지 명확히 하자.

로컬과 운영 비교

API 문제가 반복된다면 확인 순서를 고정해두는 게 낫다. 매번 감으로 접근하면 같은 실수를 반복한다.

  • 로컬에서는 얼마나 빠른가?
  • 운영 환경에서는 얼마나 느린가?
  • 특정 시간대에만 느린가?

정상일 때의 요청/응답 상태를 기록해두자.

응답 확인

실제 API 응답을 확인해본다:

curl -i 'https://example.com/api/items?page=1'

응답 헤더의 타이밍 정보를 본다. 응답 body 크기는 얼마나 되는가? 어디서 시간이 걸리는가?

응답 body와 설정

요청/응답 작업은 로컬과 운영의 차이가 자주 숨어 있다. 각 환경에서 데이터베이스 응답 시간, 캐시 설정, 네트워크 지연이 다를 수 있다.

환경 차이까지 같이 적어두면 원인 추적이 쉬워진다.

인증 상태 확인

API가 인증을 요구하는 경우, 인증 토큰 유효성 검사에 시간이 걸릴 수도 있다. 토큰이 만료되었거나 갱신 중이면 응답이 느려진다.

설정을 확인해서 타임아웃 값이 적절한지, 재시도 로직이 있는지 본다.

수정 후 확인

원래 증상이 같은 조건에서 다시 나는지 확인한다. 로그나 응답에서 바뀐 부분을 한 줄로 설명한다. 공개 환경에서도 성능이 개선되었는지 최종 확인한다.

체크리스트

다음에 비슷한 증상이 나오면 먼저 현재 값을 기록하고, 하나씩 비교하면 된다. 작은 기록이 모이면 다음 확인이 훨씬 빨라진다.