Search

NGINX에서 499 Client Closed Request 오류 해결하기

생성일

문제

최근 카카오 챗봇에서 API 서버로 요청을 보낸 후 응답을 받기까지 시간이 5초 이상 소요되는 경우가 발생하고 있다. 이로 인해 NGINX 로그에 HTTP 499 오류가 기록되고 있다.
499 오류는 클라이언트가 서버로부터 응답을 기다리던 중 연결을 끊은 경우에 발생한다. 이 문제는 실시간 응답이 중요한 서비스에서 사용자 경험에 직접적인 영향을 미치기 때문에, 신속하고 정확한 문제 해결이 필요하다.
1.
클라우드 환경 (GCP e2-micro)
인스턴스 리전
us-west1-a
OS
Ubuntu 20.04.1
CPU
2 vCPU
RAM
1GB
HDD
30GB
2.
요청과 응답
카카오 챗봇(클라이언트)은 서버로 API 요청을 보낸 후 최대 5초 동안 응답을 기다린다.
그러나 간헐적으로 서버가 5초 이내에 응답을 반환하지 못하고 있다.
아래는 문제를 나타내는 NGINX 로그이다.
219.xxx.xxx.xx - - [03/Jan/2025:11:44:56 +0000] "POST /api/spring/dish HTTP/1.1" 200 647 "-" "AHC/2.1" "-" 219.xxx.xxx.xx - - [03/Jan/2025:12:08:37 +0000] "POST /api/spring/cafeteria HTTP/1.1" 499 0 "-" "AHC/2.1" "-" 219.xxx.xxx.xx - - [03/Jan/2025:12:09:08 +0000] "POST /api/spring/department-notice HTTP/1.1" 499 0 "-" "AHC/2.1
Bash
복사
3.
문제의 증상
장시간 동안 서비스가 유휴(idle) 상태에 있다가 처음 요청이 들어오면 첫 번째 요청이 지연되며 타임아웃이 발생한다.
그 후 반복적인 요청에는 문제가 없거나 상대적으로 빠른 응답이 이루어진다.

API 서버 별 응답 시간 실험

Spring

Postman 응답 결과 (Spring)

NestJS

Postman 응답 결과 (NestJS)
실험 결과, 두 API 서버 모두 장시간 동안 서비스가 유휴(idle) 상태에 있다가 처음 요청에서 30초 이상 지연이 발생했다.

원인

해결 방법

참고 문헌