AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

Application Load Balancer를 사용할 때 반환되는 504 오류를 해결하려면 어떻게 해야 하나요?

3분 분량
0

Application Load Balancer 액세스 로그, Amazon CloudWatch 지표 또는 Application Load Balancer를 통해 내 서비스에 연결할 때 HTTP 504 오류가 표시됩니다. 이 문제를 해결하려면 어떻게 해야 하나요?

간략한 설명

HTTP 504 오류는 게이트웨이 또는 프록시가 시간 초과되었음을 나타내는 HTTP 상태 코드입니다.

다음 경우에 Application Load Balancer HTTP 504 오류가 발생할 수 있습니다.

  • 연결 제한 시간(10초)이 만료되기 전에 로드 밸런서가 타겟에 연결을 설정하지 못했습니다.
  • 로드 밸런서가 대상에 대한 연결을 설정했지만 유휴 제한 시간이 경과하기 전에 대상이 응답하지 않았습니다.
  • 서브넷에 대한 네트워크 ACL은 대상에서 휘발성 포트(1024-65535)의 로드 밸런서 노드로의 트래픽을 허용하지 않았습니다.
  • 대상은 엔터티 본문보다 큰 Content-Length 헤더 값을 반환합니다. 로드 밸런서가 누락된 바이트를 기다리는 동안 시간이 초과되었습니다.
  • 대상이 AWS Lambda 함수이고 연결 제한 시간이 만료되기 전에 서비스가 응답하지 않았습니다.

해결 방법

로드 밸런서의 유휴 제한 시간을 확인하고 필요한 경우 수정

백엔드 인스턴스가 구성된 유휴 제한 시간 내에 요청에 응답하지 않으면 로드 밸런서 HTTP 504 오류가 발생할 수 있습니다. 기본적으로 Application Load Balancer의 유휴 제한 시간은 60초입니다.

CloudWatch 지표가 활성화된 경우 Application Load Balancer에 대한 CloudWatch 지표를 확인하십시오. HTTPCode_ELB_5xx 지표는 로드 밸런서에서 발생한 504 오류를 나타냅니다. HttpCode_ELB_504_count 지표 데이터포인트가 없는 경우 로드 밸런서가 아닌 애플리케이션 서버에서 504 오류를 반환합니다.

CloudWatch 지표TargetResponseTime에 대한 최대값과 평균값을 확인합니다. 제한 시간 값은 대상으로부터 로드 밸런서 요청을 받은 후 경과된 시간을 나타낼 수 있습니다.

이를 해결하려면 다음을 수행하세요.

HTTP 요청이 유휴 제한 시간 내에 완료되도록 로드 밸런서의 유휴 제한 시간을 수정합니다.

또는

HTTP 요청에 더 빠르게 응답하도록 애플리케이션을 수정합니다. 애플리케이션이 응답하는 데 구성된 유휴 제한 시간보다 오래 걸리지 않는지 확인합니다.

(선택 사항) 백엔드 웹 서버 애플리케이션 로그에 다음 사용자 지정 필터를 추가하여 느린 응답 시간의 원인을 파악합니다.

Apache 웹 서버

a- Apache : %D in log format

Nginx 웹 서버

b- Nginx: $request_time and $upstream_response_timein log format

IIS 웹 서버

c- IIS: “time-taken” in log format

Apache Tomcat 웹 서버

d- Apache Tomcat Access logs: %D in log format

로드 밸런서가 등록된 대상과의 트래픽을 허용하는지 확인

로드 밸런서 및 백엔드 대상과 연결된 네트워크 보안 그룹이 트래픽 및 상태 확인 포트에서 양방향으로 서로 들어오는 트래픽을 허용하는지 확인합니다. 서브넷에 대한 네트워크 ACL이 대상에서 휘발성 포트(1024-65535)의 로드 밸런서 노드로의 트래픽을 허용하는지 확인합니다.

참고: 다음과 같은 Application Load Balancer 보안 그룹 규칙을 사용하는 것이 좋습니다.

CloudWatch 지표 TargetConnectionErrorCountsum 통계와 함께 검토하면 유의미한 데이터포인트를 볼 수 있는 가능성이 높아집니다. 예를 들어 로드 밸런서와 대상 간에 성공적으로 설정되지 않은 연결의 수를 볼 수 있습니다.

자세한 내용은 콘솔을 사용하여 유휴 제한 시간 구성을 참조하세요.

연결 제한 시간이 만료되기 전에 Lambda 함수가 응답하는지 확인

대상이 Lambda 함수인 경우 최대 통계로 성능 지표 기간을 확인하여 이벤트가 처리되는 시간을 확인합니다. 자세한 내용은 성능 지표 사용하기를 참조하십시오.


관련 정보

HTTP 504: 게이트웨이 시간 초과

Application Load Balancer의 높은 대기 시간 문제를 해결하려면 어떻게 해야 하나요?

Application Load Balancer에서 인증 구성 문제를 해결하려면 어떻게 해야 합니까?

Classic Load Balancer를 사용할 때 반환되는 504 오류를 어떻게 해결합니까?

AWS 공식
AWS 공식업데이트됨 3년 전