Question

1. aws 공식문서에 s3의 GET request per second 값에 대한 성능 지표가 나와있지 않아서 성능에 대한 기술적인 정보와 s3 아래 공식문서에 보면 prefix마다 초당 5,500 GET까지 가능한 것 같은데 맞을까요? 

https://aws.amazon.com/ko/premiumsupport/knowledge-center/s3-request-limit-avoid-throttling/ 

2. prefix 값을 높이는 것도 가능할까요?


Answer

1. aws 공식문서에 s3의 GET request per second 값에 대한 성능 지표가 나와있지 않아서 성능에 대한 기술적인 정보와 prefix마다 초당 5,500 GET까지 가능한 것 같은데 맞을까요? 

  • 한 prefix 당 PUT/COPY/POST/DELETE 요청은 초당 3,500 까지 지원하며, GET/HEAD 요청을 초당 5,500 까지 지원합니다. [1]

  • 유의할 점으로 prefix가 생성되는 시점으로부터 3,500/5,500 의 퍼포먼스가 할당되는 것이 아닌,  S3 내부적으로 설계된 퍼포먼스 기반으로 받는 Request에 따라 S3에서 제공하는 Request Rate를 점진적으로 증가시킵니다.

  • 그렇기에 만약 S3에서 지원하는 Auto Scale 성능을 상회하는 Spike 성의 요청 수를 받게 된다면 503 Slow Down 에러를 수신할 수 있습니다.  이러한 상황을 피하기 위해 backoff algoritm을 통해 어플리케이션 설계를 AWS에서 권장하고 있습니다. [2]



2. Prefix 설정값 조절 가능 여부

  • 한 Prefix당 제한은 3,500/5,500 으로 설계되었습니다. 이는 S3 내부적으로 설계되었기에 설정이 불가능합니다. 만약 3,500/5,500 을 상회하는 요청 수가 예상된다면 Prefix를 병렬로 구성하여 이에 대응하셔야 합니다.

  • Prefix 개수에 대한 제한은 없으며 Prefix를 병렬로 구성하여 R/W 퍼포먼스를 증가시킬 수 있습니다. [3]



Reference

[1] Why am I getting 503 Slow Down errors from Amazon S3 when the requests are within the supported request rate per prefix? - https://aws.amazon.com/premiumsupport/knowledge-center/s3-503-within-request-rate-prefix/?nc1=h_ls 


[2] Error retries and exponential backoff in AWS - https://docs.aws.amazon.com/general/latest/gr/api-retries.html 

[3] Best practices design patterns: optimizing Amazon S3 performance - https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html