Amazon S3에서 발생하는 HTTP 500 또는 503 오류 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

Amazon Simple Storage Service(S3)에 요청하면 Amazon S3가 5xx 상태 오류를 반환합니다.

간략한 설명

Amazon S3는 다음 예와 비슷한 5xx 상태 오류를 반환합니다.

  • "AmazonS3Exception: 내부 오류(서비스: 아마존 S3; 상태 코드: 500; 오류 코드: 500 내부 오료; 요청 ID: A4DBBEXAMPLE2C4D)"
  • "AmazonS3Exception: 속도 저하(서비스: 아마존 S3; 상태 코드: 503; 오류 코드: 503 속도 저하; 요청 ID: A4DBBEXAMPLE2C4D)"

오류 코드 500 내부 오류는 Amazon S3가 해당 시점에 요청을 처리할 수 없음을 나타냅니다. 오류 코드 503 속도 저하는 일반적으로 S3 버킷에 대한 요청 수가 많음을 나타냅니다. 예를 들어 S3 버킷의 접두사당 초당 3,500개의 PUT/COPY/POST/DELETE 요청 또는 5,500개의 GET/HEAD 요청을 전송할 수 있습니다. 하지만 Amazon S3는 요청이 리전 간 복사에 사용할 수 있는 대역폭을 초과하는 경우 503 속도 저하 응답을 반환할 수 있습니다.
5xx 상태 오류를 해결하거나 방지하려면 다음 방법을 시도하세요.

  • 요청을 보내는 애플리케이션의 경우 재시도 메커니즘을 사용하세요.
  • 점진적으로 요청 속도를 늘리도록 애플리케이션을 구성하세요.
  • 여러 접두사로 객체를 배포합니다.
  • 5xx 오류 응답 수를 모니터링합니다.

참고: 접두사가 생성되면 Amazon S3는 지원되는 요청 속도에 맞는 추가 리소스를 자동으로 할당하지 않습니다. Amazon S3는 요청 패턴에 따라 조정됩니다. 요청 속도가 증가함에 따라 Amazon S3는 새로운 요청 속도에 맞게 동적으로 최적화합니다.

해결 방법

재시도 메커니즘 사용

Amazon S3의 분산 특성 때문에 500 또는 503 오류를 반환하는 요청을 다시 시도할 수 있습니다. Amazon S3에 요청하는 애플리케이션에 재시도 로직을 구축하는 것이 가장 좋습니다.

모든 AWS SDK에는 지수 백오프를 사용하는 알고리즘이 포함된 재시도 메커니즘이 내장되어 있습니다. 이 알고리즘은 연속적인 오류 응답에 대한 재시도 사이의 대기 시간을 점점 더 연장합니다. 많은 지수 백오프 알고리즘에는 연속적인 충돌을 방지하기 위해 지터(무작위 지연)가 사용됩니다. 자세한 내용은 재시도 동작을 참조하세요.

참고: Amazon S3는 단일 접두사에 대한 초당 최대 3500개의 Put 요청 속도를 지원합니다. 일부 시나리오에서는 동일한 키에 대한 빠른 동시 Put 요청으로 503 응답이 발생할 수 있습니다. 이러한 경우에는 실패한 요청을 다시 시도하는 것이 가장 좋습니다.

요청 속도를 점진적으로 늘리도록 애플리케이션을 구성하세요.

속도 제한에 근접할 정도로 높은 요청 속도로 요청하면 Amazon S3에서 503 속도 저하 오류를 반환합니다. 접두사의 객체에 대한 요청 속도가 갑자기 증가하면 503 속도 저하 오류가 발생합니다. 요청 속도를 유지하고 기하급수적 백오프를 통한 재시도를 구현하도록 애플리케이션을 구성하세요. 이렇게 하면 Amazon S3에서 요청 패턴을 모니터링할 시간을 확보하고 백엔드에서 요청 속도를 처리하도록 축소됩니다.

503 속도 저하 오류를 방지하려면 더 낮은 요청 속도(초당 트랜잭션 수)로 시작하도록 애플리케이션을 구성하세요. 그런 다음 애플리케이션의 요청 속도를 기하급수적으로 늘립니다. Amazon S3는 더 높은 요청 속도를 처리하도록 자동으로 확장됩니다.

여러 접두사로 객체 분산

요청 속도는 Amazon S3 버킷의 접두사별로 적용됩니다. 전반적으로 높은 요청률을 처리하고 503 속도 저하 오류를 방지하도록 버킷을 설정하려면 객체를 여러 접두사로 분산해야 합니다. 예를 들어 Amazon S3 버킷을 사용하여 이미지와 비디오를 저장한 다음 파일을 두 개의 접두사로 배포하는 경우:

  • mybucket/images
  • mybucket/videos

접두사에 대한 요청 속도가 점차 증가하면 Amazon S3는 두 접두사 각각에 대한 요청을 개별적으로 처리하도록 확장됩니다. Amazon S3는 접두사당 초당 3,500개의 PUT/POST/DELETE 또는 5,500개의 GET 요청을 처리할 수 있도록 확장됩니다. 그 결과 버킷이 처리하는 전체 요청 속도가 두 배로 늘어납니다.

5xx 상태 오류 응답 수 모니터링

수신되는 5xx 상태 오류 응답 수를 모니터링하려면 다음 옵션 중 하나를 사용하세요.

5xx 오류의 추가 원인

빠른 복구 계층을 사용하여 보관된 객체를 검색하면 다음 예와 비슷한 오류가 발생할 수 있습니다.

  • "GlacierExpeditedRetrievalNotAvailable"
  • “빙하 빠른 검색은 현재 사용할 수 없습니다. 나중에 다시 시도하세요.”

이러한 오류는 빠른 요청을 처리할 용량이 충분하지 않을 경우 발생합니다.

수요가 지속적으로 높은 기간 동안 Amazon S3는 빠른 검색 요청을 거부하고 503 오류를 반환할 수 있습니다. 프로비저닝된 용량 유닛(PCU)을 사용하여 요청 시 빠른 검색을 위해 검색 용량을 사용할 수 있도록 하세요. 각 유닛에서는 5분마다 최소 3회의 빠른 검색을 수행할 수 있습니다. 각 유닛은 최대 150MBps(초당 메가바이트)의 검색 처리량을 제공합니다. “표준” 또는 “대량” 검색 옵션을 사용할 수도 있습니다.

검색을 다시 시도할 수 있지만 성공되지 않을 수 있습니다. 수요가 매우 많은 경우를 제외하고 용량을 프로비저닝하지 않아도 빠른 검색이 가능합니다. AWS Support는 프로비저닝되지 않은 용량에서의 빠른 검색에 대한 지속적인 변화와 높은 요구로 인해 SLA를 보장하지 않습니다.

계속해서 높은 5xx 상태 오류 비율을 받는 경우에는 AWS Support에 문의하세요. 5xx 상태 오류 코드로 실패한 요청에 여러 Amazon S3 요청 ID 쌍을 포함시키세요.

관련 정보

Amazon S3 문제 해결

Amazon CloudWatch를 통한 지표 모니터링

AWS 공식
AWS 공식업데이트됨 10달 전