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:
-
RetryMode
menentukan salah satu dari tiga mode coba lagi, yang didefinisikan dalam Amazon.Runtime. RequestRetryModepencacahan.Nilai default untuk aplikasi Anda dapat dikontrol dengan menggunakan variabel
AWS_RETRY_MODE
lingkungan atau pengaturan retry_mode dalam file konfigurasi bersamaAWS.
-
MaxErrorRetry
menentukan 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 untukMaxErrorRetry
dikonfigurasi dengan nilai yang sesuai dari tabel sebelumnya. -
Jika mode coba lagi telah disetel di lingkungan Anda, nilai tersebut digunakan sebagai default untuk
RetryMode
. Default untukMaxErrorRetry
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 untuk
MaxErrorRetry
. Amazon DynamoDB adalah pengecualian untuk aturan ini; nilai default DynamoDBMaxErrorRetry
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 HttpWebRequestTimeout
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 HttpClientHttpWebRequest
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.
-
Timeout
danReadWriteTimeout
disetel ke nilai maksimum jika metode yang dipanggil mengunggah aliran, seperti Amazons3Client. PutObjectAsync(), Amazons3Client. UploadPartAsync(), AmazonGlacierClient. UploadArchiveAsync(), dan sebagainya. -
Versi dari target AWS SDK for .NET yang ditetapkan .NET Framework
Timeout
danReadWriteTimeout
ke nilai maksimum untuk semua Amazons3Client dan objek. AmazonGlacierClient -
Versi AWS SDK for .NET yang menargetkan perpustakaan kelas portabel (PCL) dan .NET Core diatur
Timeout
ke nilai maksimum untuk semua Amazons3Client dan objek. AmazonGlacierClient
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 });