본문 바로가기

Storage&CDN/S3

Amazon S3 I/O 성능

 

S3는 여러 파티션으로 분할된 Storage

S3는 파티션 별로 객체의 키 값(prefix)를 토대로 인덱싱

 

사용할 수 있는 HTTP Method는 PUT/LIST/DELETE 그리고 GET

보편적으로 각 파티션 I/O는 PUT/LIST/DELETE Method의 경우 초당 100 / GET Method의 경우 초당 300 정도입니다. 업로드의 경우 현재 성능이 매우 개선되어 고려할 필요가 없을 정도가 되었음. 

아래 명령어 수행 후 cp 혹은 sync 수행(CPU/Bandwidth가 중요하며, Path 별 구분을 통해 Parallel하게 수행 권장

aws configure set default.s3.max_concurrent_requests 20(default 10)

aws configure set default.s3.max_queue_size 10000

 

 

 

 

해당 성능 범위를 넘어설 경우 S3 업로드 및 다운로드에 제약이 발생될 수 있습니다.

따라서 객체를 업로드 및 다운로드 하실 경우 Prefix를 추가하여 파티션을 분산하면 S3의 I/O 성능을 향상 시킬 수 있습니다.

 

 

가령, examplebucket/23-2013-26-05-15-00-00/cust1234234/photo1.jpg 

      examplebucket/7b-2013-26-05-15-00-00/cust3857422/photo2.jpg 대로 Prefix를 추가했다면

 

2, 7, 23, 7b와 같이 Prefix를 기준으로 파티셔닝 되어 기존 100 RPS에서 400 RPS로 성능이 증가하게 됩니다. 

 

만약 16진수를 최대로 사용하여 2문자를 추가한 Prefix를 구성하셨다면 16*16 = 25600 RPS까지 성능이 증가됩니다.

Prefix를 추가해서 바로 파티셔닝이 되는 것은 아닙니다. 빈도 수에 따라 성능이 점차 증가됩니다. 갑작스러운 Migration은 대응되지 않습니다.

 

따라서 해당 요건을 갖춘 뒤 호출 관련한 제한을 해제 요청을 해주셔야 합니다. 메뉴얼한 파티션 작업은 일주일 정도 소요됩니다.

 

Bucket RPS 제한 해제 요청(일반적인 Limit 해제가 아닌 구성 요건이 필수)

Bucket Region:

Bucket Name:

API Breakup: GET:______TPS, PUT:______TPS, LIST:______TPS, Multipart PUT (Upload Part):______TPS

Key-space design: bucketname/[A-Z0-9][A-Z0-9]/<region>/<customer>/<file>.jpg

Algorithm/method used to generate key-space:

Are keys evenly distributed within the key-space:

Will this bucket be used 'Multi-Part' Uploads:

Will this bucket be used for 'Cross Region Replication'? If so, as the source or destination?

 

S3 요청 빈도 및 성능 고려 사항 - 

 

모범 사례 설계 패턴: Amazon S3 성능 최적화 - Amazon Simple Storage Service

모범 사례 설계 패턴: Amazon S3 성능 최적화 애플리케이션으로 Amazon S3의 스토리지를 업로드하고 검색할 때 요청 성능에서 초당 수천 회의 트랜잭션을 쉽게 달성할 수 있습니다. Amazon S3은 높은 요청 빈도로 자동으로 조정됩니다. 예를 들어, 애플리케이션으로 버킷에서 접두사별로 초당 최소 3,500개의 PUT/COPY/POST/DELETE 및 5,500개의 GET/HEAD 요청을 달성할 수 있습니다. 버킷의 접두사 수에는 제한이 없습니다

docs.aws.amazon.com