안녕하세요.
베스핀글로벌 클라우드 기술지원팀 이주원 입니다.
고객님 문의 중 Classic Type의 ELB 사용 중에 발생한 오류 문의에 대한 FAQ 입니다.
Question
서비스 중인 ELB 에서 간헐적으로 504 Timeout 에러가 발생합니다. 해당 현상에 대한 문의 드립니다.
Answer
구성하신 ELB는 현재 Classic Load Balancer 이고 발생한 504 에러는 'HTTP 504: Gateway timeout' 에러로 확인됩니다.
504 Gateway timeout Error 가 발생하는 원인은 주로 유휴 제한 시간 내에 요청이 완료되지 않아 로드밸런서가 연결을 닫아 발생하는 것 입니다.
이슈 확인)
전달받은 ELB 에서 두 번의 HTTPCode_ELB_5XX 에러가 발생한 것을 확인할 수 있었습니다.
고객 문의에 따르면 해당 지표가 맞으며 발생당시 504 Timeout 에러가 발생한 것으로 보입니다.
해결방안)
CLB에서 발생하는 504 에러는 주로 응답을 보내는 어플리케이션의 유휴시간이 ELB의 유휴시간보다 짧아 응답을 완료하지 못한 경우 응답받지 못한 ELB에서 발생하는 오류 입니다.
해결방법은 ELB 유휴 제한시간보다 어플리케이션의 유휴시간을 더 크게 설정하는 것 입니다. (아래 [1] 번 링크 참조)
현재 구성을 확인해보니 해당 ELB 의 유휴 제한시간은 60초 이고, 보내주신 Tomcat 설정을 보면 connectionTimeout 이 2000 (ms) 으로 확인됩니다.
즉 현재 구성은 ELB 에서 연결접속에 대해 60초간 지속하지만, 서비스하고 있는 어플리케이션에서 연결접속 시간이 2초로 요청한 데이터 양이 크거나 할 경우 설정한 2초 보다 길어져 연결이 끊키게 되고
ELB 에서는 응답을 받지 못한 채 Timeout 으로 오류처리가 되는 것 입니다.
이러한 오류를 방지하기 위해 ELB 의 유휴제한 시간보다 어플리케이션의 유휴시간을 더 크게 설정할 수 있습니다.
현재 구성으로도 2000ms 초는 2초로 많이 짧은 시간이기 때문에 보다 더 크게 설정하시는 것을 추천드립니다.
참고자료)
[1] HTTP 504: Gateway timeout : https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/ts-elb-error-message.html#ts-elb-errorcodes-http504
[2] CLB 504 오류 해결 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/504-error-classic/
작성한 FAQ 가 도움이 되셨기를 바랍니다. ?
감사합니다.
베스핀글로벌
클라우드기술지원팀
이주원