Amazon Simple Storage Service(S3)에 요청하면 Amazon S3가 5xx 상태 오류를 반환합니다.
간략한 설명
Amazon S3에 요청하면 다음 예와 유사한 오류 메시지가 표시될 수 있습니다.
- "AmazonS3Exception: Internal Error (Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Error; Request ID: A4DBBEXAMPLE2C4D)"
- "AmazonS3Exception: Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; Request ID: A4DBBEXAMPLE2C4D)"
"500 Internal Error" 오류 메시지는 Amazon S3가 해당 시점에 요청을 관리할 수 없을 때 발생합니다. "503 Slow Down" 오류 메시지는 일반적으로 S3 버킷이 많은 수의 요청을 수신할 때 발생합니다. 파티션된 Amazon S3 접두사마다 초당 3,500개의 PUT/COPY/POST/DELETE 또는 5,500개의 GET/HEAD 요청을 보낼 수 있습니다. 그러나 요청이 AWS 리전 전체에 복사하는 데 사용할 수 있는 대역폭을 초과할 경우 Amazon S3에서 "503 Slow Down" 응답을 보낼 수 있습니다.
5xx 상태 오류를 해결하거나 방지하려면 다음 작업을 수행하십시오.
- 요청을 보내는 애플리케이션의 경우 재시도 메커니즘을 사용합니다.
- 요청 속도를 점진적으로 늘리도록 애플리케이션을 구성합니다.
- 여러 접두사로 객체를 배포합니다.
- 5xx 오류 응답 수를 모니터링합니다.
참고: 접두사를 만들 때 Amazon S3는 지원되는 요청 속도에 대한 추가 리소스를 자동으로 할당하지 않습니다. Amazon S3의 규모는 요청 패턴에 따라 조정됩니다. 요청 속도가 증가하면 Amazon S3는 새로운 요청 속도에 맞게 동적으로 최적화합니다.
해결 방법
재시도 메커니즘 사용
Amazon S3의 분산 특성으로 인해 500 또는 503 오류를 반환하는 요청을 다시 시도할 수 있습니다. Amazon S3에 요청하는 애플리케이션에 재시도 로직을 구축하는 것이 가장 좋습니다. AWS SDK에는 재시도 메커니즘이 내장되어 있습니다.
참고: 일부 시나리오에서는 동일한 키에 대한 빠른 동시 요청으로 인해 503 응답이 발생할 수 있습니다. 이러한 시나리오에서는 실패한 요청을 다시 시도하는 것이 가장 좋습니다.
요청 속도를 점진적으로 늘리도록 애플리케이션 구성
요청 속도가 높거나 객체에 대한 요청 속도가 갑자기 증가하면 "503 Slow Down" 오류 메시지가 표시될 수 있습니다. 요청 속도를 유지하고 지수 백오프를 통한 재시도를 구현하도록 애플리케이션을 구성하십시오. 지수 백오프는 연속적인 오류 응답에 대한 재시도 사이의 대기 시간을 점점 더 연장합니다. 이 구성을 사용하면 Amazon S3가 요청 패턴을 모니터링하고 백엔드에서 규모를 조정하여 요청 속도를 관리할 수 있습니다.
먼저 낮은 초당 트랜잭션 요청 속도로 시작하도록 애플리케이션을 구성하십시오. 그런 다음, 애플리케이션의 요청 속도를 기하급수적으로 높입니다. Amazon S3는 더 높은 요청 속도를 관리하도록 자동으로 규모를 조정합니다.
여러 접두사에 객체 분산
요청 속도는 Amazon S3 버킷의 각 접두사에 적용됩니다. 더 높은 요청 속도를 관리하도록 버킷을 설정하려면 여러 접두사에 객체를 분산하십시오. 예를 들어 버킷을 사용하여 이미지와 비디오를 저장하는 경우 파일을 다음 두 접두사로 분산하십시오.
- mybucket/images
- mybucket/videos
접두사에 대한 요청 속도가 점차 증가하면 Amazon S3는 각 접두사에 대한 요청을 개별적으로 관리하도록 규모를 확장합니다. 따라서 버킷은 요청 속도의 두 배를 관리할 수 있습니다.
5xx 상태 오류 응답 수 모니터링
수신하는 5xx 상태 오류 응답의 수를 모니터링하려면 다음 옵션 중 하나를 사용하십시오.
추가 문제 해결
신속 옵션을 사용하여 보관된 객체를 검색할 때 다음 오류 메시지 중 하나를 받을 수 있습니다.
- "GlacierExpeditedRetrievalNotAvailable"
- "Glacier expedited retrievals are currently not available, please try again later"
이러한 문제는 신속 RestoreObject 요청을 처리할 용량이 충분하지 않을 때 발생합니다. 수요가 지속적으로 높은 기간 동안 Amazon S3는 신속 검색 요청을 거부하고 503 오류 메시지를 반환할 수 있습니다. 프로비저닝된 용량 단위를 사용하여 요청 시 신속 검색 용량을 사용할 수 있는지 확인하십시오. 각 단위에 대해 5분마다 최소 3회의 신속 검색을 수행할 수 있습니다. 각 단위는 최대 150MBps의 검색 처리량을 제공합니다. 표준 또는 대량 검색 옵션을 사용할 수도 있습니다.
검색을 다시 시도할 수 있습니다. 그러나 문제가 계속 발생할 수 있습니다. 수요가 매우 많은 경우를 제외하고 용량을 프로비저닝하지 않아도 신속 검색이 가능합니다. 지속적인 변화와 프로비저닝되지 않은 용량에서 신속 검색을 사용할 수 있어야 한다는 요구가 높아짐에 따라 신속 검색 SLA는 없습니다.
계속해서 높은 5xx 상태 오류율이 발생하는 경우 AWS Support에 문의하십시오. 5xx 상태 오류 코드로 실패한 요청에 여러 Amazon S3 요청 ID 쌍을 포함하십시오.
관련 정보
S3 Storage Lens 지표를 사용하여 성능 개선
Amazon CloudWatch를 통한 지표 모니터링