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