API-Ratenbegrenzungen

API-Ratenbegrenzungen definieren die Anzahl der Anfragen, die an die Compute Engine API gerichtet werden können. API-Ratenbegrenzungen gelten pro Projekt. Wenn Sie gcloud compute oder die Google Cloud Console verwenden, stellen Sie auch Anfragen an die API. Diese Anfragen werden auf die API-Ratenbegrenzung angerechnet. Dasselbe gilt für Zugriffe auf die API über Dienstkonten.

Die derzeit für die jeweiligen Kategorien von API-Anfragen gültigen Limits sind unten aufgeführt. Jede Kategorie wird separat gezählt, sodass Sie das Limit in den jeweiligen Kategorien gleichzeitig erreichen können: Ratenlimits werden in einem Intervall von 100 Sekunden durchgesetzt. Bei 20 Anfragen pro Sekunde würde sich also übertragen auf 100 Sekunden ein Limit von 2.000 Anfragen ergeben. Wenn Sie an einem beliebigen Punkt innerhalb von 100 Sekunden ein bestimmtes Limit erreichen, können Sie keine weiteren Anfragen senden, sondern müssen erst warten, bis Ihr Kontingent-Bucket aktualisiert wurde.

  • Abfragen – Limits für alle Methoden außer den *.get- und *.list-Methoden:
    • Rate pro Projekt: 20 Anfragen/Sekunde
    • Rate pro Nutzer: 20 Anfragen/Sekunde
  • Leseanfragen – Limits für *.get-Methoden:
    • Rate pro Projekt: 20 Anfragen/Sekunde
    • Rate pro Nutzer: 20 Anfragen/Sekunde
  • Anfragen auflisten – Limits für *.list-Methoden:
    • Rate pro Projekt: 20 Anfragen/Sekunde
    • Rate pro Nutzer: 20 Anfragen/Sekunde
  • Vorgangsleseanfragen – Limits für *OperationsService.Get-Methoden:
    • Rate pro Projekt: 20 Anfragen/Sekunde
    • Rate pro Nutzer: 20 Anfragen/Sekunde
  • Umfangreiche Leseanfragen – Limits für *.AggregatedList-Methoden:
    • Rate pro Projekt: 10 Anfragen/Sekunde
    • Rate pro Nutzer: 10 Anfragen/Sekunde
  • Umfangreiche Mutationsanfragen – Limits für patch-, delete- und insert-Methoden für die Features InterconnectsService und InterconnectAttachmentsService:
    • Rate pro Projekt: 10 Anfragen/Sekunde
    • Rate pro Nutzer: 10 Anfragen/Sekunde
  • Instanz-SimulateMaintenanceEvent-Anfragen – Limits für *.SimulateMaintenanceEvent-Methoden:
    • Rate pro Projekt: 2 Anfragen/Sekunde
    • Rate pro Nutzer: 2 Anfragen/Sekunde
  • Lizenzeinfügeanfragen – Limits für *.LicensesService.Insert-Methoden:
    • Rate pro Projekt: 2 Anfragen/Sekunde
    • Rate pro Nutzer: 2 Anfragen/Sekunde
  • Globale Anfragen zum Ändern von Ressourcen – Limits für die Methoden disks.createSnapshot, snapshots.delete, snapshots.setLabels, images.insert, images.delete, images.deprecate, images.setLabels, machineImages.insert und machineImages.delete:
    • Rate pro Projekt: 5 Anfragen/Sekunde
    • Rate pro Nutzer: 5 Anfragen/Sekunde

Wenn Sie eine höhere Ratenbegrenzung für API-Anfragen benötigen, können Sie eine Erhöhung über die Google Cloud Console anfordern.

Best Practices

Im Folgenden finden Sie einige Best Practices, die Ihnen bei der Arbeit mit API-Ratenbegrenzungen in Compute Engine helfen.

  • Verwenden Sie Bursting sparsam und selektiv. Bursting bedeutet, dass ein bestimmter Client in kurzer Zeit viele API-Anfragen ausführen darf. Normalerweise ist dies eine Maßnahme in außergewöhnlichen Situationen, z. B. wenn Ihre Anwendung mehr Datenverkehr als gewöhnlich verarbeiten muss. Bursting führt zu einem schnellen Verbrauch Ihres API-Ratenlimits. Sie sollten diese Funktion nur verwenden, wenn es unbedingt notwendig ist.

  • Verwenden Sie ein clientseitiges Ratenlimit. Damit wird ein künstliches Limit definiert, das der betreffende Client nicht überschreiten darf. Er hat dann nur ein bestimmtes Kontingent zur Verfügung. Dadurch wird verhindert, dass ein einzelner Client das gesamtes Kontingent verbraucht.

  • Verwenden Sie exponentielles Backoff, um den Abstand zwischen den Anfragen stufenweise zu erhöhen, sobald das Kontingent erreicht wurde. Das gibt dem Server Zeit, die Kontingent-Buckets wieder aufzufüllen.

  • Vermeiden Sie kurze Abfrageintervalle, bei denen Ihre Clients fortlaufend Anfragen an den Server senden, ohne auf Antwort zu warten. Bei kurzen Abfrageintervallen wird es schwieriger, fehlerhafte Anfragen abzufangen, die keine nützlichen Daten zurückgeben, aber dennoch auf Ihr Kontingent angerechnet werden.

  • Teilen Sie Ihre Anwendungen auf mehrere Projekte auf. Da Kontingente auf Projektebene angewendet werden, können Sie Ihre Anwendungen so aufteilen, dass jede Anwendung über einen eigenen Kontingentpool verfügt.

  • Wenn Sie einen 403-Fehler mit der Fehlermeldung rateLimitExceeded erhalten, warten Sie einige Sekunden, bevor Sie die Anfrage wiederholen. Kontingent-Buckets werden alle 100 Sekunden neu aufgefüllt. Nach Ablauf dieses Intervalls sollte Ihre Anfrage erfolgreich sein.