Auf dieser Seite erfahren Sie, wie Sie die Standardkonfiguration für Zeitüberschreitungen überschreiben und eine Wiederholungsrichtlinie mit den Spanner-Clientbibliotheken 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 eine kurze Zeit in Anspruch nehmen (z. B. CreateSession
), 30 Sekunden. Längere Vorgänge wie Abfragen oder Lesevorgänge haben ein Standardzeitlimit von 3.600 Sekunden. Wir empfehlen, diese Standardeinstellungen zu verwenden. Sie können in Ihrer Anwendung jedoch bei Bedarf ein benutzerdefiniertes Zeitlimit oder eine Wiederholungsrichtlinie festlegen.
Wenn Sie das Zeitlimit ändern möchten, legen Sie dafür die tatsächliche Zeit fest, die die Anwendung so konfiguriert, dass sie auf das Ergebnis wartet.
Konfigurieren Sie keine Wiederholungsrichtlinie, die aggressiver als die Standardeinstellung ist, da zu viele Wiederholungsversuche das Back-End überlasten und Ihre Anfragen drosseln können.
In jedem Snippet wird eine Wiederholungsrichtlinie mit folgenden Eigenschaften definiert:
- Die anfängliche oder Startwartezeit, bevor die Anfrage wiederholt wird.
- Eine maximale Verzögerung.
- Ein Multiplikator, der mit der vorherigen Wartezeit zur Berechnung der nächsten Wartezeit bis zum Erreichen des Maximums verwendet wird.
- 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 dem Fehler DEADLINE_EXCEEDED
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 der erste Wiederholungsversuch fehlschlägt, wartet der Client 1,5 × 500 ms = 750 ms, bevor der zweite Wiederholungsversuch startet. Diese Wiederholungsverzögerung verlängert sich weiter, bis der Vorgang entweder erfolgreich war oder die maximale Wiederholungsverzögerung von 16 Sekunden erreicht. Der Vorgang schlägt mit dem Fehler DEADLINE_EXCEEDED
fehl, wenn die Gesamtzeit, die für den Versuch aufgewendet wird, das Zeitlimit von 60 Sekunden überschreitet.