2016-06-16 2 views
3

AWS ELB을 사용하고 있습니다. ELB의 그래프를 본 후, 5XX 에로가 거의 없었다. 로그를 활성화하고 ELB 로그의 오류가 504이므로 등록 된 인스턴스에 대한 api call 중 하나가 시간 초과되었습니다. 5XX 응답을 던지면 등록 된 인스턴스를 다시 모니터링했으나 응답하지 않았습니다. nginx keep-alive timeout은 15s으로 설정되고 ELB의 시간 제한은 60s입니다. 따라서 요청이 실제로 시간 초과되는 것보다 ELB 수준이 아닌 인스턴스 수준에서 시간 초과되어야합니다. 아무도 오류의 가능한 시나리오가 될 수 있다고 제안 할 수 있습니까?AWS ELB가 5XX를 던지고 있지만 등록 된 인스턴스에서 5XX 오류가 발생하지 않습니다

+0

ELB가 구성된 포트에서 연결할 수있는 백엔드 인스턴스의 보안 그룹에 항목이 있습니까? –

+0

@KarenB 포트는 모두 80이며, ELB는 매번 특정 API 호출시 5XX를 발생시킵니다. –

+0

504가 타임 아웃이기 때문에 nginx는 504를 기록하지 않습니다. 어떤 종류의 용량 문제처럼 들립니다. 인스턴스 상태를 점검하고 데이터베이스를 조회하는 경우 적당한 시간 내에 요청 된 데이터를 리턴 할 수 있는지 확인하십시오. –

답변

1

504가 nginx에 의해 ELB에 반환되지 않았습니다. ELB는 API 인스턴스로부터의 응답을 기다리는 시간을 초과하기 때문에 504를 반환합니다. 이는 nginx가 서비스를 끝내지 않은 쿼리에서 HTTP 상태 코드를 반환 할 수 없음을 의미합니다. 이 문서에서 알 수 있듯이 인스턴스의 연결 유지 시간은 적어도 ELB 시간 초과의 크기 여야합니다. http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html#ts-elb-errorcodes-http504