내용으로 건너뛰기

Amazon S3에서 발생하는 HTTP 500 또는 503 오류를 해결하려면 어떻게 해야 합니까?

4분 분량
0

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 상태 오류 응답의 개수를 모니터링하려면 다음 옵션 중 하나를 사용합니다.

추가 문제 해결

Expedited 옵션을 사용해 보관된 객체를 검색하면 다음 오류 메시지 중 하나가 표시될 수 있습니다.

  • ‘GlacierExpeditedRetrievalNotAvailable’
  • ‘Glacier expedited retrievals are currently not available, please try again later’

이 문제는 Expedited RestoreObject 요청을 처리할 용량이 부족하면 발생합니다. 수요가 높은 수준으로 지속되는 동안에는 Amazon S3가 Expedited 검색 요청을 거부하고 503 오류 메시지를 반환할 수 있습니다. 프로비저닝된 용량 단위를 사용해 수요가 있으면 사용할 만큼 Expedited 검색 용량이 있는지 확인하십시오. 이런 신속 검색은 각 단위에서 5분에 최소 3개씩 수행할 수 있습니다. 각 단위는 최대 150MBps의 검색 처리량을 제공합니다. Standard 또는 Bulk 검색 옵션을 사용할 수도 있습니다.

검색을 재시도할 수 있습니다. 그래도 여전히 문제가 발생할 수 있습니다. 수요가 극히 많은 경우를 제외하면, Expedited 검색은 프로비저닝된 용량 없이도 가능합니다. 상황이 끊임없이 변화하고 프로비저닝되지 않은 용량에서 Expedited 검색 가용성 수요가 많기 때문에, Expedited 검색 SLA는 없습니다.

계속해서 5xx 상태 오류가 많이 발생하는 경우, AWS Support에 문의하십시오. 실패하고 5xx 상태 오류 코드를 반환하는 Amazon S3 요청 ID 페어를 여러 개 포함하십시오.

관련 정보

S3 Storage Lens 지표를 사용하여 성능 개선

Amazon CloudWatch를 통한 지표 모니터링