IT&Programming/Error fix

504 Gateway time out

YongE 2024. 3. 14. 14:01

 

프로젝트를 배포하고 테스트 도중에 브라우저 콘솔에서 위 제목과 같은 에러가 발생하였다.

 

이 에러가 왜 발생했을까..

Postman에서 문제 발생 확인(퍼옴)

 

 

 

504 Gateway Time-out 오류는 클라이언트가 보낸 요청에 대해 제한 시간 내에 업스트림에서 응답을 보내지 않아  게이트웨이와 업스트림(upstream) 사이의 연결이 끊긴 것이다.

 

가운데 nginx(리버스 프록시), 오른쪽 tomcat(업스트림)

 

나는 GCP의 load balancer를 사용했지만 nginx가 더 널리 사용돼서 위 사진에서는 nginx가 사용됐다.

 

GCP의 load balancer와 nginx 모두 게이트웨이의 역할을 맡고 있다. 그리고 downstream으로도 불린다. 반대로 tomcat 등의 was는 upstream으로 불린다.

 

해결

 

만약 위와 같은 504를 맞닥뜨렸다면 해결 방법은 두 가지다.

 

  1. 응답 제한 시간을 늘린다.
  2. 제한 시간 내에 응답이 되도록 로직을 수정한다.

 

웬만하면 1)응답 제한 시간을 늘리는 것보다, 2) 시간 내에 응답되도록 로직을 수정하는 편이 좋다고 한다. 응답 제한 시간을 대폭 늘리는 것 또한 서버에 부담이 될 수 있다고..

 

나는 1번과 2번을 전부 적용했다. 제한 시간을 늘리고, 식단 생성 알고리즘을 대폭 수정했다. 결과는 잘 해결됐지만 향후에는 이를 고려해서 처리해야겠다.

 

 

 

GCP Load Balancer 응답 제한 시간 설정

 

누군가에게 도움이 되길 바라며 GCP load balancer에서 설정하는 방법을 남기겠다!

 

1. load balancer에 들어가서 사용설정한 분산기를 선택, 그리고 수정을 누른다.

 

 

2. 구성목록이 보일 텐데, 백엔드 구성을 누르고, 우측 백엔드 서비스에서 연필 아이콘을 누른다.

 

 

3. 수정 탭에 나와있는데 제한 시간을 원하는 초로 수정한다.

728x90
반응형