Skip to content

S3 Performance Optimization

Amazon S3 được thiết kế để mở rộng vô hạn và cung cấp hiệu năng cao, nhưng để đạt hiệu quả tối đa, bạn cần hiểu rõ cách hoạt động và áp dụng các kỹ thuật tối ưu.
Bài này sẽ hướng dẫn các phương pháp cải thiện hiệu suất lưu trữ và truy xuất dữ liệu.

Nguyên tắc hiệu năng của S3

  • Scalability: S3 tự động phân tán dữ liệu và cân bằng tải giữa nhiều server.
  • Throughput: Tốc độ truyền dữ liệu phụ thuộc vào băng thông mạng và cách bạn tổ chức key.
  • Parallelization: Sử dụng nhiều kết nối song song để tăng tốc upload/download.

Tối ưu đặt tên object key

  • S3 sử dụng partition key để phân tán dữ liệu. Việc đặt tên không tối ưu có thể gây “hot partition”.
  • Ứng dụng của bạn có thể xử lý 3,500 PUT/COPY/POST/DELETE hoặc 5,500 GET/HEAD request trên mỗi prefix trong bucket
    • *Không có giới hạn prefix trên mỗi bucket
  • Prefix (Object path):
    • bucket/folder-1/sub-fold-1/file.txt => /folder-1/sub-fold-1/
    • bucket/folder-1/file.txt => /folder-1/

Tăng tốc upload và download

Sử dụng Multipart Upload

  • Chia file lớn thành nhiều phần (tối đa 10,000 part), upload song song.
    • Với file > 5GB thì cần bắt buộc phải chia nhỏ để upload
  • Nếu một part bị lỗi, chỉ cần upload lại part đó.

Dùng S3 Transfer Acceleration

  • Rút ngắn thời gian upload/download từ các vị trí xa region của bucket.
  • Sử dụng hạ tầng Amazon CloudFront edge locations để tối ưu tuyến mạng.

Tối ưu truy xuất dữ liệu

Sử dụng Byte-Range Fetches

  • Chỉ tải phần cần thiết của file thay vì toàn bộ.
  • Giúp tăng tốc độ và giảm chi phí dữ liệu.