Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pedoman Kinerja untuk Amazon S3

Ketika membangun aplikasi yang mengunggah dan mengambil objek dari Amazon S3, ikuti panduan praktik terbaik kami untuk mengoptimalkan performa. Kami juga menawarkan Pola Desain Performa yang lebih terperinci.

Untuk mendapatkan performa terbaik untuk aplikasi Anda di Amazon S3, kami merekomendasikan panduan berikut ini.

Mengukur Performa

Ketika mengoptimalkan performa, lihat kebutuhan throughput jaringan, CPU, dan DRAM. Bergantung pada perpaduan permintaan untuk sumber daya yang berbeda ini, mungkin akan untuk mengevaluasi berbagai jenis instans Amazon EC2. Untuk informasi selengkapnya tentang jenis instans, lihat Jenis Instans di Panduan Pengguna Amazon EC2.

Ini juga membantu untuk melihat waktu pencarian DNS, latensi, dan kecepatan transfer data menggunakan alat analisis HTTP saat mengukur performa.

Untuk memahami persyaratan performa dan mengoptimalkan performa aplikasi Anda, Anda juga dapat memantau respons kesalahan 503 yang Anda terima. Memantau metrik performa tertentu dapat menimbulkan biaya tambahan. Untuk informasi selengkapnya, lihat Harga Amazon S3.

Pantau jumlah respons kesalahan status 503 (Perlambat)

Untuk memantau jumlah respons kesalahan status 503 yang Anda dapatkan, Anda dapat menggunakan salah satu opsi berikut:

  • Gunakan metrik CloudWatch permintaan Amazon untuk Amazon S3. Metrik CloudWatch permintaan menyertakan metrik untuk respons status 5xx. Untuk informasi selengkapnya tentang metrik CloudWatch permintaan, lihatMemantau metrik dengan Amazon CloudWatch.

  • Gunakan jumlah kesalahan 503 (Layanan Tidak Tersedia) yang tersedia di bagian metrik lanjutan Lensa Penyimpanan Amazon S3. Untuk informasi selengkapnya, lihat Menggunakan metrik S3 Storage Lens untuk meningkatkan kinerja.

  • Gunakan pencatatan log akses server Amazon S3. Dengan pencatatan akses server, Anda dapat memfilter dan meninjau semua permintaan yang menerima respons 503 (Kesalahan Internal). Anda juga dapat menggunakan Amazon Athena untuk mengurai log. Untuk informasi selengkapnya tentang pencatatan log akses server, lihat Pencatatan permintaan dengan pencatatan akses server.

Dengan memantau jumlah kode kesalahan status HTTP 503, Anda sering kali dapat memperoleh wawasan berharga tentang prefiks, kunci, atau bucket mana yang mendapatkan permintaan throttling paling banyak.

Skala Koneksi Penyimpanan Secara Horizontal

Menyebarkan permintaan di berbagai koneksi adalah pola desain umum untuk menskalakan performa secara horizontal. Ketika Anda membangun aplikasi berperforma tinggi, bayangkan Amazon S3 sebagai sistem terdistribusi yang sangat besar, bukan sebagai titik akhir jaringan tunggal seperti server penyimpanan tradisional. Anda dapat mencapai performa terbaik dengan mengeluarkan beberapa permintaan sekaligus ke Amazon S3. Sebarkan permintaan ini melalui koneksi terpisah untuk memaksimalkan bandwidth yang dapat diakses dari Amazon S3. Amazon S3 tidak memiliki batas untuk jumlah koneksi yang dilakukan ke bucket Anda.

Menggunakan Byte-Range Fetches

Menggunakan Header HTTP Range di permintaan GET Object, Anda dapat mengambil rentang byte dari objek, dengan hanya mentransfer bagian tertentu. Anda dapat menggunakan koneksi bersamaan ke Amazon S3 untuk mengambil byte yang berbeda dari dalam objek yang sama. Ini membantu Anda mencapai throughput agregat yang lebih tinggi dibandingkan permintaan objek utuh tunggal. Pengambilan rentang objek besar yang lebih kecil juga memungkinkan aplikasi Anda untuk meningkatkan waktu coba kembali ketika permintaan terganggu. Untuk informasi selengkapnya, lihat Mengunggah objek.

Ukuran umum untuk permintaan rentang byte adalah 8 MB atau 16 MB. Jika objek adalah PUT yang menggunakan pengunggahan multibagian, praktik yang baik adalah GET dalam ukuran bagian yang sama (atau setidaknya sejajar dengan batas bagian) untuk performa terbaik. Permintaan GET dapat secara langsung menangani bagian individual; misalnya, GET ?partNumber=N.

Permintaan Coba Lagi untuk Aplikasi yang Sensitif Latensi

Batas waktu dan percobaan ulang yang agresif membantu mendorong latensi yang konsisten. Mengingat skala besar Amazon S3, jika permintaan pertama berjalan lambat, permintaan yang dicoba kembali kemungkinan besar mengambil jejak yang berbeda dan dengan cepat berhasil. AWS SDK memiliki batas waktu yang dapat dikonfigurasi dan nilai coba ulang yang dapat Anda sesuaikan dengan toleransi aplikasi spesifik Anda.

Gabungkan Amazon S3 (Penyimpanan) dan Amazon EC2 (Komputasi) yang Sama Wilayah AWS

Meskipun nama bucket S3 bersifat unik secara global, setiap bucket disimpan di Wilayah yang Anda pilih saat membuat bucket. Untuk mengoptimalkan kinerja, sebaiknya Anda mengakses bucket dari instans Amazon EC2 secara bersamaan Wilayah AWS jika memungkinkan. Ini membantu mengurangi latensi jaringan dan biaya transfer data.

Untuk informasi lebih lanjut tentang biaya transfer data, lihat Harga Amazon S3.

Gunakan Amazon S3 Transfer Acceleration untuk Meminimalkan Latensi yang Disebabkan oleh Jarak

Mengonfigurasi transfer file yang cepat dan aman menggunakan Amazon S3 Transfer Acceleration mengelola transfer file yang cepat, mudah, dan aman dalam jarak geografis yang panjang antara klien dan bucket S3. Transfer Acceleration memanfaatkan lokasi edge yang didistribusikan secara global di Amazon CloudFront. Saat data tiba di lokasi edge, data diarahkan ke Amazon S3 melalui jalur jaringan yang dioptimalkan. Transfer Acceleration ideal untuk mentransfer gigabyte ke terabyte data secara teratur melintasi benua. Ini juga berguna bagi klien yang mengunggah ke bucket terpusat dari seluruh dunia.

Anda dapat menggunakan Amazon S3 Transfer Acceleration Speed Comparison tool untuk membandingkan kecepatan unggahan yang dipercepat dan tidak dipercepat di seluruh Wilayah Amazon S3. Alat Speed Comparison menggunakan unggahan multibagian untuk mentransfer file dari browser Anda ke berbagai Wilayah Amazon S3 dengan dan tanpa menggunakan Amazon S3 Transfer Acceleration.

Gunakan versi terbaru dari SDK AWS

AWS SDK menyediakan dukungan bawaan untuk banyak pedoman yang direkomendasikan untuk mengoptimalkan kinerja Amazon S3. SDK menyediakan API yang lebih sederhana untuk memanfaatkan Amazon S3 dari dalam aplikasi dan diperbarui secara berkala untuk mengikuti praktik terbaik terbaru. Misalnya, SDK memasukkan logika untuk secara otomatis mencoba kembali permintaan pada kesalahan HTTP 503 dan berinvestasi dalam kode untuk merespons dan beradaptasi dengan koneksi yang lambat.

SDK juga menyediakan Transfer Manager, yang mengotomatiskan koneksi penskalaan horizontal untuk mencapai ribuan permintaan per detik, menggunakan permintaan rentang byte di mana itu sesuai. Penting untuk menggunakan AWS SDK versi terbaru untuk mendapatkan fitur pengoptimalan kinerja terbaru.

Anda juga dapat mengoptimalkan performa saat Anda menggunakan permintaan API REST HTTP. Saat menggunakan API REST, Anda harus mengikuti praktik terbaik yang sama yang merupakan bagian dari SDK. Izinkan batas waktu dan percobaan ulang pada permintaan yang lambat, dan beberapa koneksi untuk memungkinkan pengambilan data objek secara paralel. Untuk informasi selengkapnya tentang API REST, lihat Referensi API Amazon Simple Storage Service.