Halaman ini menunjukkan cara mengganti konfigurasi waktu tunggu default dan mengonfigurasi kebijakan percobaan ulang menggunakan library klien Spanner.
Library klien menggunakan setelan kebijakan percobaan ulang dan waktu tunggu default yang ditentukan dalam file konfigurasi berikut.
- spanner_grpc_service_config.json
- spanner_admin_instance_grpc_service_config.json
- spanner_admin_database_grpc_service_config.json
Dalam file konfigurasi, waktu tunggu default untuk operasi yang memerlukan waktu singkat, seperti CreateSession
, adalah 30 detik. Operasi yang lebih lama, seperti kueri atau pembacaan, memiliki waktu tunggu default 3.600 detik. Sebaiknya gunakan
setelan default ini. Namun, Anda dapat menetapkan kebijakan percobaan ulang atau waktu tunggu kustom di aplikasi Anda jika perlu.
Jika Anda memutuskan untuk mengubah waktu tunggu, tetapkan ke jumlah waktu sebenarnya yang dikonfigurasi aplikasi untuk menunggu hasil.
Jangan mengonfigurasi kebijakan percobaan ulang yang lebih agresif daripada default, karena terlalu banyak percobaan ulang dapat membebani backend dan membatasi permintaan Anda.
Kebijakan percobaan ulang ditentukan di setiap cuplikan, dengan karakteristik berikut:
- Durasi waktu tunggu awal, atau awal, sebelum mencoba lagi permintaan.
- Penundaan maksimum.
- Pengganda yang akan digunakan dengan waktu tunggu sebelumnya untuk menghitung waktu tunggu berikutnya, hingga waktu tunggu maksimum tercapai.
- Kumpulan kode error untuk operasi percobaan ulang.
Dalam contoh berikut, waktu tunggu 60 detik ditetapkan untuk operasi tertentu.
Jika operasi memerlukan waktu lebih lama dari waktu tunggu ini, operasi akan gagal dengan error DEADLINE_EXCEEDED
.
Jika operasi gagal dengan kode error UNAVAILABLE
, misalnya, jika ada masalah jaringan sementara, operasi akan dicoba lagi. Klien
menunggu selama 500 md sebelum memulai upaya percobaan ulang pertama. Jika percobaan ulang pertama gagal, klien akan menunggu 1,5 * 500 md = 750 md sebelum memulai percobaan ulang kedua. Penundaan percobaan ulang ini terus meningkat hingga operasi berhasil atau mencapai penundaan percobaan ulang maksimum 16 detik. Operasi gagal
dengan error DEADLINE_EXCEEDED
jika total waktu yang dihabiskan untuk mencoba
operasi melebihi total nilai waktu tunggu 60 detik.