로드 밸런서에 연결하는 데 문제가 발생하고 HTTP: 503 Service Unavailable 또는 HTTP: 504 Gateway Timeout 오류가 표시되는 경우가 있습니다. Amazon CloudWatch를 사용하여 로드 밸런서를 모니터링하여 SurgeQueueLength 지표의 max 통계가 큰 폭으로 증가하는 것을 확인했습니다. 즉, 등록된 인스턴스에 대해 제출 보류 중(대기 중)인 총 요청 수가 개수로 제공되는 것을 확인합니다.
참고
최대 SurgeQueueLength가 초과되면 대기열이 꽉 차서 SpilloverCount 지표의 sum 통계가 거부된 총 요청 수를 측정하기 시작합니다. 최대 SurgeQueueLength 값은 1024입니다.
서지 대기열 길이는 Elastic Load Balancing(ELB)에 의해 대기열에 저장되는 요청 수에 의해 정의됩니다. 백엔드 시스템에서 수신 요청을 수신되는 속도로 처리할 수 없는 경우에 요청이 대기열에 저장됩니다. 로드 밸런서가 SurgeQueueLength 지표에 대해 높은 max 통계를 갖게 되는 이유는 다음과 같습니다.
- 오버로드된 백엔드 인스턴스 - 백엔드 인스턴스 리소스(CPU, 메모리, 네트워크 등)가 오버로드되어 수신 요청을 적절히 처리할 수 없습니다.
- 애플리케이션 종속성 문제 - 모뎀 웹 애플리케이션에 외부 리소스(예: 데이터베이스, S3 버킷 또는 기타 애플리케이션)에 대한 여러 종속 항목이 존재할 수 있습니다. 애플리케이션의 외부 종속 항목에 성능 문제가 있는 경우 애플리케이션 성능에 영향을 줍니다. 예를 들어, 애플리케이션이 제대로 인덱싱되지 않은 데이터베이스 테이블에 종속되는 경우 데이터베이스 성능으로 인해 애플리케이션 성능이 저하될 수 있습니다.
- 최대 연결 수 도달 - 백엔드 웹 서버가 허용되는 최대 연결 한도에 도달하여 새 요청을 처리할 수 없습니다.
높은 서지 대기열 길이와 잠재적으로 높은 스필오버 수를 가진 문제를 완화하려면 다음 단계를 따르십시오.
- Auto Scaling 개발자 안내서의 Auto Scaling 그룹에 로드 밸런서 사용에 설명된 대로 Elastic Load Balancing을 통해 Auto Scaling을 활성화합니다.
- Amazon CloudWatch를 사용한 로드 밸런서 모니터링에 설명된 대로 Amazon CloudWatch를 사용하여 로드 밸런서를 모니터링합니다.
- Amazon EC2 인스턴스에 대한 세부 모니터링 활성화 또는 비활성화에 설명된 대로 Amazon CloudWatch를 통해 백엔드 인스턴스의 CPUUtilization 지표를 모니터링하여 CPU 사용률이 과도하게 높아지는지 확인합니다. 특정 Amazon EC2 인스턴스에 대한 통계를 가져오려면 특정 EC2 인스턴스에 대한 통계 얻기를 참조하십시오. CPU 사용률이 급격하게 증가하는 경우 백엔드 인스턴스가 기존 요청을 처리하느라 새 요청을 수락할 수 없는 경우일 가능성이 높습니다. 이 시나리오에서는 백엔드 인스턴스를 스케일 아웃하거나 컴퓨팅에 최적화된(C4) 인스턴스와 같이 추가 처리 성능을 갖춘 유형으로 확장하는 것이 좋습니다. Amazon EC2 인스턴스의 유형과 기능에 대한 자세한 내용은 Amazon EC2 인스턴스를 참조하십시오.
- Elastic Load Balancing 문제 해결: HTTP 오류에 설명된 로드 밸런서에 의해 반환되는 특정 HTTP 오류 해결을 위한 권장 사항을 따르십시오. 로드 관련 문제는 일반적으로 HTTP 503: Service Unavailable 또는 HTTP 504: Gateway Timeout 오류를 반환합니다.
- 백엔드 웹 서버가 허용되는 최대 연결 한도를 초과하여 서지 대기열 길이가 증가할 경우 각 프로세스에 사용 가능한 스레드 수 또는 하위 프로세스 수를 높여야 할 수 있습니다. 예를 들어, Apache 웹 서버에 대한 다음 구성 파일을 수정하여 프로세스당 스레드 또는 하위 프로세스 수를 높일 수 있습니다.
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000 - 시간이 경과하면서 웹 서버에서 트래픽이 증가하는 것은 정상적인 현상입니다. 이 경우 인스턴스 사용량이 초과하여 성능에 영향을 줄 수 있습니다. 이 문제를 해결하려면 인스턴스 크기 조정에 설명된 대로 용량을 늘려 보십시오.
Elastic Load Balancing, VPC, SurgeQueueLength, CPUUtilization, Amazon CloudWatch, 성능, 부족한 리소스, 웹 서버 구성, 용량