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 erzwungen und automatisch in Intervallen alle 100 Sekunden aufgefüllt. Wenn Sie das Ratenlimit für ein Intervall überschreiten, sollte Ihre Anfrage erfolgreich sein, nachdem Sie dieses Intervall überschritten haben. Zum Beispiel würden 20 Anfragen pro Sekunde 2.000 Anfragen innerhalb von 100 Sekunden bedeuten. 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 – Standardlimits für alle nicht gelisteten 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 die Methoden globalOperations.get, globalOrganizationOperations.get, regionOperations.get und zonalOperations.get:
    • 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 Ressourcen interconnects und interconnectAttachments:
    • 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
    • Rate pro Tag und Projekt: 30 Anfragen/Tag
  • Lizenzeinfügeanfragen – Limits für die Methode licenses.insert:
    • Rate pro Projekt: 2 Anfragen/Sekunde
    • Rate pro Nutzer: 2 Anfragen/Sekunde
  • Globale Mutationsanfragen für 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
  • Häufige Metadateninstanzen-Anfragen für Projektsätze – Limits für die Methode projects.setCommonInstanceMetadata:
    • Rate pro Projekt: 0,5 Anfragen/Sekunde
    • Rate pro Nutzer: 0,5 Anfragen/Sekunde

Wenn Sie eine höhere Ratenbegrenzung für API-Anfragen benötigen, können Sie die aktuelle Nutzung prüfen und in der Google Cloud Console auf der Seite „Kontingente” der Compute Engine API eine Erhöhung anfordern. Weitere Informationen zu Kontingenten.

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 kann die API-Ratenbegrenzung schnell überschreiten. Sie sollten es nur bei Bedarf verwenden.

  • 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 ist 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.