[GCP] GKE Ingress에서 504 상태 코드에 대한 Timeout 수정 사례

GKE Ingress에서 504 상태 코드에 대한 Timeout 수정 사례


환경

  • GKE


배경

  • E2E 테스트를 실행하던 중에 API 요청에 대한 코드는 실행되었지만 상태 코드가 504로 반환된 상황


해결 방법 및 과정

504 상태 코드의 경우 “Gateway Timeout”으로 서버가 게이트웨이 혹은 프록시 역할을 하는 동안 업스트림 서버로부터 정해진 시간안에 응답을 받지 못한 경우를 의미한다.

조금 더 쉽게 정리하면 요청을 받고 뒤에 있는 서버에 넘겼는데 설정된 Timeout 시간이 넘어가서 504 상태 코드를 반환한걸 의미한다.

아래는 MDN Web Docs에 있는 설명이다.

The HyperText Transfer Protocol (HTTP) 504 Gateway Timeout server error response code indicates that the server, while acting as a gateway or proxy, did not get a response in time from the upstream server that it needed in order to complete the request.

사용했던 API의 Endpoint는 GKE Ingress라서 Timeout이 걸려있는 부분이 있나 살펴봤다.

GCP 콘솔의 Ingress에서 아래와 같은 방식으로 타고 갈 수 있었다.

ingress => load balancer => backend services

“Backend services”에서 우리가 요청했던 API를 받는 곳이 있었고 해당 부분에 Timeout이 설정되어 있었다.

해당 Timeout을 변경해서 적용하니 Timeout이 길어졌으며 504 상태 코드가 아닌 202 상태 코드를 받을 수 있었다.


참고자료