Questa pagina mostra come eseguire l'override del timeout predefinito e configurare un criterio per i nuovi tentativi usando Spanner librerie client.
Le librerie client utilizzano le impostazioni predefinite dei criteri di timeout e dei nuovi tentativi, che sono definita nei seguenti file di configurazione.
- spanner_grpc_service_config.json
- spanner_admin_instance_grpc_service_config.json
- spanner_admin_database_grpc_service_config.json
Nei file di configurazione, il timeout predefinito per le operazioni che richiedono un tempo breve
di tempo, ad esempio CreateSession
, è di 30 secondi. Operazioni più lunghe, come
le query o le letture hanno un timeout predefinito di 3600 secondi. È consigliabile utilizzare
queste impostazioni predefinite. Tuttavia, puoi impostare un timeout personalizzato o un criterio per nuovi tentativi nella tua
se necessario.
Se decidi di modificare il timeout, impostalo sulla quantità effettiva di di tempo in cui l'applicazione è configurata per attendere il risultato.
Non configurare un criterio per i nuovi tentativi che sia più aggressivo di quello predefinito perché un numero eccessivo di nuovi tentativi potrebbe sovraccaricare il backend e limitare le richieste.
In ogni snippet è definito un criterio per i nuovi tentativi, con quanto segue caratteristiche:
- La durata del tempo di attesa iniziale (o iniziale) prima di riprovare la richiesta.
- Un ritardo massimo.
- Un moltiplicatore da utilizzare con il tempo di attesa precedente per calcolare quello successivo fino a raggiungere il limite massimo.
- Una serie di codici di errore per nuove operazioni.
Nel seguente esempio, viene impostato un timeout di 60 secondi per l'operazione specificata.
Se l'operazione richiede più tempo del timeout, l'operazione non va a buon fine e
DEADLINE_EXCEEDED
errore.
Se l'operazione non riesce e viene visualizzato un codice di errore UNAVAILABLE
, ad esempio se ci sono
si tratta di un problema di rete temporaneo, l'operazione verrà ripetuta. Il cliente
attende 500 ms prima di avviare il primo tentativo. Se il primo tentativo
non riesce, il client attende 1,5 * 500 ms = 750 ms prima di avviare il secondo
riprova. Questo ritardo continua ad aumentare finché l'operazione
l'operazione riesce o raggiunge il ritardo massimo per i nuovi tentativi di 16 secondi. L'operazione non riesce
con un errore DEADLINE_EXCEEDED
se il tempo totale impiegato per provare
l'operazione supera il valore di timeout totale di 60 secondi.