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 nilai default ini. Namun, Anda dapat menetapkan kebijakan percobaan ulang atau waktu tunggu kustom di aplikasi jika diperlukan.
Jika Anda memutuskan untuk mengubah waktu tunggu, tetapkan ke jumlah waktu sebenarnya yang dikonfigurasi untuk menunggu hasil.
Jangan mengonfigurasi kebijakan percobaan ulang yang lebih agresif dari 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 ulang permintaan.
- Penundaan maksimum.
- Pengali 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 ulang. Klien menunggu selama 500 md sebelum memulai upaya percobaan ulang pertama. Jika percobaan ulang pertama gagal, klien akan menunggu selama 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 akan gagal dengan error DEADLINE_EXCEEDED jika total waktu yang dihabiskan untuk mencoba operasi melebihi nilai waktu tunggu total 60 detik.