Load balancer Timeout 오류

AWS Load balancer로 구축된 웹 서버와 API 서버가 있다.

  • A load balancer — Nginx 웹 서버 (instance 3대)
  • B load balancer — API 서버 (instance 3대)

이렇게 각각 2개의 로드밸런서를 구축하고 아무런 문제 없이 운영하고 있는데 오류가 발생했다.

오류의 내용은, timeout error 였다.

2024/11/05 14:40:24 [error] 905#0: *974 upstream timed out (110: Connection timed out) while reading response header from upstream

이런 내용의 에러 였다.

구글링을 해보니, 프록시 서버에서의 읽는 시간과 연결 시간이 너무 짧게 설정되어 있어서 해당 오류가 뜬다고 나와있다.

nginx.conf 파일을 살펴보니 따로 timeout에 대해 설정이 되어 있진 않았다. 설정이 되어있지 않다면 디폴트값은 다음과 같다.

proxy_connect_timeout: 60초
proxy_read_timeout: 60초
proxy_send_timeout: 60초

일단 로드밸런서의 서버 리소스는 충분했고, DB 지연시간이나 DB CPU가 많이 먹는 상태는 아니었기 때문에 1순위로 timeout 설정이 잘못되어 졌다고 생각했다.

오류가 난 서버에 위 설정을 두배정도인 120s 로 설정 했다.

proxy_connect_timeout 120s;
proxy_read_timeout 120s;
proxy_send_timeout 120s;

그리고, 한가지 더 의심이 갔던 부분은 로드밸런서를 구성할 때 대상그룹의 상태검사 부분에서 health check 하는 부분이 있다.

여기서도 timeout — 제한시간이라는 이름으로 응답에 관련한 항목이 있다.

이 부분도 web 서버의 로드밸런서와 api 서버의 로드밸런서가 서로 시간이 상이했기 때문에 upstream timeout 에러가 났다고 추측했다.

제한시간 타임을 조금 늘리고, 각각의 로드밸런서의 시간을 동일하게 맞췄다.

그리고 나서는 따로 오류가 나지 않는 상태.

댓글

댓글 남기기