Halaman ini menunjukkan cara mengganti konfigurasi waktu tunggu default dan mengonfigurasi kebijakan percobaan ulang menggunakan library klien Spanner.
Library klien menggunakan setelan kebijakan waktu tunggu dan percobaan ulang 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 operasi baca, memiliki waktu tunggu default 3.600 detik. Sebaiknya gunakan
default ini. Namun, Anda dapat menetapkan kebijakan waktu tunggu atau percobaan ulang kustom di
aplikasi 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 maksimum tercapai.
- Kumpulan kode error untuk operasi percobaan ulang.
Dalam contoh berikut, waktu tunggu 60 detik ditetapkan untuk operasi yang diberikan.
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 percobaan 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.