Auf dieser Seite erfahren Sie, wie Sie die Konfiguration der Standardeinstellungen für Zeitlimits überschreiben und wie Sie mit den Spanner-Clientbibliotheken eine Wiederholungsrichtlinie konfigurieren.
Die Clientbibliotheken verwenden die Standardeinstellungen für Zeitlimits und Wiederholungsversuche, die in den folgenden Konfigurationsdateien definiert sind.
- spanner_grpc_service_config.json
- spanner_admin_instance_grpc_service_config.json
- spanner_admin_database_grpc_service_config.json
In den Konfigurationsdateien beträgt das Standardzeitlimit für Vorgänge, die nur kurze Zeit in Anspruch nehmen, z. B. CreateSession
, 30 Sekunden. Längere Vorgänge wie Abfragen oder Lesevorgänge haben ein Standard-Zeitlimit von 3.600 Sekunden. Wir empfehlen, diese Standardeinstellungen zu verwenden. Sie können bei Bedarf ein benutzerdefiniertes Zeitlimit oder eine Wiederholungsrichtlinie in Ihrer Anwendung festlegen.
Wenn Sie das Zeitlimit ändern möchten, legen Sie es auf die tatsächliche Zeit fest, die die Anwendung für das Ergebnis benötigt.
Kurze Zeitlimits führen dazu, dass Ihre Anwendung den Vorgang häufiger als nötig wiederholt.Konfigurieren Sie keine Wiederholungsrichtlinie, die aggressiver ist als die Standardeinstellung, da zu viele Wiederholungen das Back-End überlasten und Ihre Anfragen gedrosselt werden können.
In jedem Snippet wird eine Wiederholungsrichtlinie mit den folgenden Merkmalen definiert:
- Die anfängliche oder Startwartezeit, bevor die Anfrage wiederholt wird.
- Maximale Verzögerung.
- Ein Multiplikator, der mit der vorherigen Wartezeit verwendet wird, um die nächste Wartezeit zu berechnen, bis die maximale Wartezeit erreicht ist.
- Eine Reihe von Fehlercodes für Wiederholungsvorgänge.
Im folgenden Beispiel wird ein Zeitlimit von 60 Sekunden für den jeweiligen Vorgang festgelegt.
Wenn der Vorgang länger als dieses Zeitlimit dauert, schlägt er mit einem DEADLINE_EXCEEDED
-Fehler fehl.
Wenn der Vorgang mit dem Fehlercode UNAVAILABLE
fehlschlägt, z. B. bei einem vorübergehenden Netzwerkproblem, wird der Vorgang wiederholt. Der Client wartet 500 ms, bevor er den ersten Wiederholungsversuch startet. Wenn die erste Wiederholung fehlschlägt, wartet der Client 1,5 * 500 ms = 750 ms, bevor er die zweite Wiederholung startet. Diese Verzögerung für Wiederholungsversuche nimmt weiter zu, bis der Vorgang entweder erfolgreich abgeschlossen wird oder die maximale Verzögerung von 16 Sekunden erreicht ist. Der Vorgang schlägt mit einem DEADLINE_EXCEEDED
-Fehler fehl, wenn die Gesamtzeit, die für den Vorgang aufgewendet wird, den Gesamtwert für das Zeitlimit von 60 Sekunden überschreitet.