Batas Waktu dan Percobaan Ulang untuk Aplikasi Peka Latensi - Pola Desain Praktik Terbaik: Mengoptimalkan Performa Amazon S3

Batas Waktu dan Percobaan Ulang untuk Aplikasi Peka Latensi

Ada situasi tertentu saat aplikasi menerima respons dari Amazon S3 yang menunjukkan bahwa perlu adanya percobaan ulang. Amazon S3 memetakan nama objek dan bucket ke data objek yang terkait dengannya. Jika aplikasi menghasilkan tingkat permintaan yang tinggi (biasanya terus di tingkat dengan lebih dari 5.000 permintaan per detik untuk sedikit objek), kemungkinan akan menerima respons perlambatan HTTP 503. Jika kesalahan ini terjadi, setiap AWS SDK mengimplementasikan logika percobaan ulang otomatis menggunakan backoff eksponensial. Jika Anda tidak menggunakan AWS SDK, Anda harus menerapkan logika percobaan ulang saat menerima kesalahan HTTP 503. Untuk informasi tentang teknik back-off, lihat Percobaan Ulang Kesalahan dan Backoff Eksponensial di AWS di Referensi Umum Amazon Web Services.

Amazon S3 secara otomatis menskalakan sebagai respons terhadap tingkat permintaan baru yang berkelanjutan, mengoptimalkan performa secara dinamis. Saat Amazon S3 mengoptimalkan tingkat permintaan baru secara internal, Anda akan menerima respons permintaan HTTP 503 sementara hingga pengoptimalan selesai. Setelah Amazon S3 mengoptimalkan performa tingkat permintaan baru secara internal, semua permintaan umumnya dilayani tanpa percobaan ulang.

Untuk aplikasi yang peka terhadap latensi, Amazon S3 menyarankan untuk melacak dan mencoba kembali operasi yang lebih lambat secara berulang. Saat mencoba kembali permintaan, sebaiknya gunakan koneksi baru ke Amazon S3 dan melakukan pencarian DNS baru.

Saat membuat permintaan berukuran besar (misalnya, lebih dari 128 MB), sebaiknya lacak throughput yang dicapai dan coba kembali 5 persen permintaan yang paling lambat. Jika Anda membuat permintaan yang lebih kecil (misalnya, kurang dari 512 KB), yang latensi mediannya biasanya berada dalam rentang puluhan milidetik, sebaiknya coba kembali operasi GET atau PUT setelah 2 detik. Jika diperlukan pengulangan tambahan, praktik terbaiknya adalah back off. Sebagai contoh, sebaiknya percobaan ulang setelah 2 detik dan percobaan ulang kedua setelah 4 detik tambahan.

Jika aplikasi Anda membuat permintaan berukuran tetap ke Amazon S3, maka waktu respons untuk setiap permintaan ini lebih konsisten. Dalam hal ini, strategi sederhananya adalah dengan mengidentifikasi 1 persen permintaan paling lambat dan mencobanya lagi. Bahkan satu percobaan ulang bisa efektif dalam mengurangi latensi.

Jika Anda menggunakan AWS Key Management Service (AWS KMS) untuk enkripsi sisi server, lihat Kuota dalam AWS Key Management Service Panduan Developer untuk informasi tentang tingkat permintaan yang didukung untuk kasus penggunaan Anda.