Amazon Elasticsearch Service에서 HTTP 503 Service Unavailable 오류를 방지하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 8월 23일

Amazon Elasticsearch Service(Amazon ES) 도메인을 쿼리하면 HTTP 503 Service Unavailable 오류가 발생합니다.

참고: 이 오류의 원인은 다양합니다. 이 문서에서는 일반적인 근본 원인과 해결 방법을 설명합니다.

간략한 설명

로드 밸런서는 각 Amazon ES 도메인을 전면에 위치해 데이터 노드에 수신되는 트래픽을 분산합니다. HTTP 503 오류는 클러스터에서 하나 이상의 데이터 노드가 오버로드되어 노드에 요청을 처리할 용량이 충분하지 않음을 나타냅니다. 이러한 상황은 과도한 수신 트래픽이나 리소스가 많이 소모되는 쿼리로 인해 발생하는 경우가 많습니다.

팁: RequestCount Amazon CloudWatch 지표를 사용하여 HTTP 응답 코드를 추적할 수 있습니다.

​해결 방법

HTTP 503 오류를 해결하려면 다음 방법 중 하나를 사용합니다.

더 많은 컴퓨팅 리소스 프로비저닝

  • 크기가 더 큰 인스턴스로 전환하여 도메인을 확장하거나, 클러스터에 더 많은 노드를 추가하여 확장합니다. 자세한 내용은 Amazon ES 도메인 구성을 참조하십시오.
  • 사용 사례에 적합한 인스턴스 유형을 사용하고 있는지 확인합니다. 자세한 내용은 인스턴스 유형 선택 및 테스트를 참조하십시오.

쿼리의 리소스 사용률을 줄임

  • 샤드 및 클러스터 아키텍처에 대한 모범 사례를 따르고 있는지 확인합니다. 클러스터가 잘못 설계되어 사용 가능한 리소스를 모두 사용하지 못합니다. 일부 노드는 다른 노드가 유휴 상태로 있는 동안 오버로드될 수 있습니다. Elasticsearch는 오버로드된 노드에서 문서를 가져올 수 없습니다.
  • 도메인에 대한 동시 요청 수를 줄입니다.
  • 쿼리 범위를 줄입니다. 예를 들어 시간 프레임을 쿼리하는 경우 날짜 범위를 줄이거나 Kibana에서 인덱스 패턴을 구성하여 결과를 필터링합니다.
  • 크기가 큰 인덱스에서 select* 쿼리를 실행하지 마십시오. 대신 필터를 사용하여 인덱스의 일부를 쿼리하고 가능한 한 적은 수의 필드를 검색합니다.
  • 샤드 수를 다시 인덱싱하고 줄입니다. Elasticsearch 클러스터에 샤드가 많을수록 courier fetch 오류가 발생할 가능성이 높습니다. 각 샤드에는 자체 리소스 할당 및 오버헤드가 있으므로 샤드 수가 많으면 클러스터에 부담을 줍니다. 클러스터의 샤드 수를 줄이려면 내 Amazon Elasticsearch Service 도메인이 한참 동안 처리 상태에서 멈춰 있습니다. 항목을 참조하십시오.