Mencoba lagi dan batas waktu - AWS SDK for .NET

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

Mencoba lagi dan batas waktu

AWS SDK for .NETIni memungkinkan Anda untuk mengonfigurasi jumlah percobaan ulang dan nilai batas waktu untuk permintaan HTTP ke AWS layanan. Jika nilai default untuk percobaan ulang dan batas waktu tidak sesuai untuk aplikasi Anda, Anda dapat menyesuaikannya dengan persyaratan spesifik Anda, tetapi penting untuk memahami bagaimana hal itu akan memengaruhi perilaku aplikasi Anda.

Untuk menentukan nilai mana yang akan digunakan untuk percobaan ulang dan batas waktu, pertimbangkan hal berikut:

  • Bagaimana seharusnya AWS SDK for .NET dan aplikasi Anda merespons ketika konektivitas jaringan menurun atau AWS layanan tidak dapat dijangkau? Apakah Anda ingin panggilan gagal dengan cepat, atau apakah pantas untuk panggilan untuk terus mencoba lagi atas nama Anda?

  • Apakah aplikasi Anda merupakan aplikasi atau situs web yang harus responsif, atau apakah itu pekerjaan pemrosesan latar belakang yang memiliki toleransi lebih untuk peningkatan latensi?

  • Apakah aplikasi digunakan pada jaringan yang andal dengan latensi rendah, atau apakah itu digunakan di lokasi terpencil dengan konektivitas yang tidak dapat diandalkan?

Percobaan ulang

Ikhtisar

Permintaan AWS SDK for .NET dapat mencoba ulang yang gagal karena pelambatan sisi server atau koneksi terputus. Ada dua properti kelas konfigurasi layanan yang dapat Anda gunakan untuk menentukan perilaku coba lagi dari klien layanan. Kelas konfigurasi layanan mewarisi properti ini dari Amazon.Runtime abstrak. ClientConfigkelas Referensi AWS SDK for .NET API:

  • MaxErrorRetrymenentukan jumlah percobaan ulang yang diizinkan di tingkat klien layanan; SDK mencoba ulang operasi beberapa kali yang ditentukan sebelum gagal dan melempar pengecualian.

    Nilai default untuk aplikasi Anda dapat dikontrol dengan menggunakan variabel AWS_MAX_ATTEMPTS lingkungan atau pengaturan max_attempts dalam file AWS konfigurasi bersama.

Deskripsi terperinci untuk properti ini dapat ditemukan di Amazon.Runtime abstrak. ClientConfigkelas Referensi AWS SDK for .NET API. Setiap nilai RetryMode sesuai secara default dengan nilai tertentuMaxErrorRetry, seperti yang ditunjukkan pada tabel berikut.

RetryMode Corresponding MaxErrorRetry (Amazon DynamoDB) Corresponding MaxErrorRetry (all others)
Legacy 10 4
Standard 10 2
Adaptive (experimental) 10 2

Perilaku

Saat aplikasi Anda dimulai

Ketika aplikasi Anda dimulai, nilai default untuk RetryMode dan MaxErrorRetry dikonfigurasi oleh SDK. Nilai default ini digunakan saat Anda membuat klien layanan kecuali Anda menentukan nilai lainnya.

  • Jika properti tidak disetel di lingkungan Anda, default untuk RetryMode dikonfigurasi sebagai Legacy dan default untuk MaxErrorRetry dikonfigurasi dengan nilai yang sesuai dari tabel sebelumnya.

  • Jika mode coba lagi telah disetel di lingkungan Anda, nilai tersebut digunakan sebagai default untukRetryMode. Default untuk MaxErrorRetry dikonfigurasi dengan nilai yang sesuai dari tabel sebelumnya kecuali nilai untuk kesalahan maksimum juga telah ditetapkan di lingkungan Anda (dijelaskan selanjutnya).

  • Jika nilai untuk kesalahan maksimum telah ditetapkan di lingkungan Anda, nilai tersebut digunakan sebagai default untukMaxErrorRetry. Amazon DynamoDB adalah pengecualian untuk aturan ini; nilai default DynamoDB MaxErrorRetry untuk selalu nilai dari tabel sebelumnya.

Saat aplikasi Anda berjalan

Saat membuat klien layanan, Anda dapat menggunakan nilai default untuk RetryMode danMaxErrorRetry, seperti yang dijelaskan sebelumnya, atau Anda dapat menentukan nilai lainnya. Untuk menentukan nilai lain, buat dan sertakan objek konfigurasi layanan seperti AmazonDynamoDbConfig atau AmazonSQSconfig saat Anda membuat klien layanan.

Nilai-nilai ini tidak dapat diubah untuk klien layanan setelah dibuat.

Pertimbangan-pertimbangan

Ketika percobaan ulang terjadi, latensi permintaan Anda meningkat. Anda harus mengonfigurasi percobaan ulang berdasarkan batas aplikasi untuk latensi permintaan total dan tingkat kesalahan.

Timeout

AWS SDK for .NETIni memungkinkan Anda untuk mengonfigurasi batas waktu permintaan dan nilai batas waktu baca/tulis soket di tingkat klien layanan. Nilai-nilai ini ditentukan dalam Timeout dan ReadWriteTimeout properti abstrak Amazon.Runtime. ClientConfigkelas. Nilai-nilai ini diteruskan sebagai Timeout dan ReadWriteTimeout properti dari HttpWebRequestobjek yang dibuat oleh objek klien AWS layanan. Secara default, Timeout nilainya 100 detik dan ReadWriteTimeout nilainya 300 detik.

Ketika jaringan Anda memiliki latensi tinggi, atau ada kondisi yang menyebabkan operasi dicoba ulang, menggunakan nilai batas waktu yang lama dan jumlah percobaan ulang yang tinggi dapat menyebabkan beberapa operasi SDK tampak tidak responsif.

catatan

Versi AWS SDK for .NET yang menargetkan perpustakaan kelas portabel (PCL) menggunakan HttpClientkelas bukan HttpWebRequest kelas, dan hanya mendukung properti Timeout.

Berikut ini adalah pengecualian untuk nilai batas waktu default. Nilai-nilai ini diganti ketika Anda secara eksplisit menetapkan nilai batas waktu.

Contoh

Contoh berikut menunjukkan kepada Anda cara menentukan mode coba ulang Standar, maksimal 3 percobaan ulang, batas waktu 10 detik, dan batas waktu baca/tulis 10 detik (jika ada). Konstruktor Amazons3Client diberikan objek Amazons3config.

var s3Client = new AmazonS3Client( new AmazonS3Config { Timeout = TimeSpan.FromSeconds(10), // NOTE: The following property is obsolete for // versions of the AWS SDK for .NET that target .NET Core. ReadWriteTimeout = TimeSpan.FromSeconds(10), RetryMode = RequestRetryMode.Standard, MaxErrorRetry = 3 });