So beheben Sie REQUEST_LIMIT_EXCEEDED bei Salesforce-Deployments

Die Org hat ihr API-Anfragekontingent aufgebraucht, sodass weitere Aufrufe, einschließlich Deployment-Vorgängen, bis zur Zurücksetzung abgelehnt werden.

Tritt auf bei: jedem API-Aufruf, sobald das rollierende 24-Stunden-Kontingent der Org ausgeschöpft ist

Was das bedeutet

REQUEST_LIMIT_EXCEEDED bedeutet, dass die Org ihr API-Anfragelimit ausgeschöpft hat, typischerweise das rollierende 24-Stunden-Kontingent, sodass weitere Aufrufe über REST, SOAP oder Bulk API abgelehnt werden, bis sich die Nutzung zurücksetzt oder das Limit erhöht wird. Es ist eine organisationsweite Obergrenze, die durch jede Kombination von Integrationen ausgelöst werden kann, nicht nur durch die Deployment-Pipeline selbst.

Das Kontingent skaliert mit Edition und Anzahl lizenzierter Benutzer, sodass eine Scratch-Org oder Developer-Edition-Sandbox mit einem kleinen festen Kontingent diese Obergrenze durch eine für die Produktion dimensionierte CI-Pipeline erreichen kann, lange bevor die Produktion selbst es je täte.

Diagnose

Häufige Ursachen

CI-Pipeline fragt Status mit vielen kleinen Aufrufen ab
Eine Pipeline prüft den Deployment- oder Job-Status mit häufigen einzelnen API-Anfragen, statt sie zu bündeln oder zeitlich zu strecken.
Andere Integrationen teilen sich dasselbe Tageslimit
Andere mit der Org verbundene Systeme verbrauchen den Großteil des gemeinsamen API-Kontingents, bevor die eigenen Aufrufe des Deployments laufen.
Scratch-Org oder Sandbox hat ein niedrigeres Limit als die Produktion
Das kleinere tägliche API-Kontingent einer niedrigeren Umgebungsstufe wird durch eine für den Produktionsgebrauch dimensionierte Pipeline ausgeschöpft.

Die Lösung

  1. Aufrufe mit Bulk API oder Composite Requests bündeln
    Ersetzen Sie häufige einzelne REST-Aufrufe durch die Bulk API oder die Composite API, um die Gesamtzahl der Anfragen zu senken.
  2. Nutzung überwachen und schwere Jobs staffeln
    Prüfen Sie die API-Nutzung unter Setup, System Overview, und planen Sie schwere Jobs so, dass sie sich nicht mit anderen Integrationen überlagern.
    sf data query --query "SELECT ApiCurrentUsage, ApiRequestsPerDay FROM OrganizationLimits" --target-org myOrgAlias --use-tooling-api
  3. Eine Limiterhöhung anfordern, wo die Nutzung berechtigterweise hoch ist
    Beantragen Sie für Orgs, bei denen echte, anhaltende Nutzung regelmäßig an die Obergrenze stößt, eine API-Limiterhöhung bei Salesforce.
In der Praxis

Wie Serpent das verhindert

Serpent bündelt und nutzt Verbindungen über die Umgebungen eines Teams hinweg wieder, statt pro Task eine neue, gesprächige Sitzung zu öffnen, wodurch die API-Nutzung niedriger bleibt als bei einer Reihe unabhängig geskripteter CI-Jobs, die dieselbe Org ansprechen. Siehe die Bibliothek der Salesforce-Deployment-Fehler.

Release-Dashboard mit Konfliktwarnungen in Serpent

Prävention

Deployment-Status mit exponentiellem Backoff abfragen, nicht mit festen kurzen Intervallen
Staffeln Sie Statusabfragen mit zunehmender Verzögerung, statt alle paar Sekunden zu pollen, was das Tageskontingent bei lang laufenden Deployments schnell aufbraucht.
API-Nutzung pro Integration verfolgen, nicht nur organisationsweit
Ermitteln Sie, welche Connected App oder welches Servicekonto die meisten Aufrufe verbraucht, damit eine außer Kontrolle geratene Integration erkannt wird, bevor sie die Deployment-Pipeline aushungert.
CI-Aufrufvolumen an das tatsächliche Kontingent der Umgebung anpassen
Prüfen Sie das spezifische tägliche API-Limit einer Scratch-Org oder Sandbox, bevor Sie annehmen, dass eine für die Produktion dimensionierte Pipeline hineinpasst.
Häufige Fragen

REQUEST_LIMIT_EXCEEDED, erklärt

Wird dieses Limit um Mitternacht in der Zeitzone meiner Org zurückgesetzt?
Es ist ein rollierendes 24-Stunden-Fenster basierend auf der Nutzung, keine feste Zurücksetzung um Mitternacht, daher hängt der genaue Zurücksetzungszeitpunkt davon ab, wann die Aufrufe ursprünglich getätigt wurden.
Zählt die für Deployments verwendete Metadata API gegen dasselbe Limit wie REST-API-Aufrufe?
Ja. Metadata-API-, REST-, SOAP-, Bulk- und Tooling-API-Aufrufe schöpfen alle aus demselben organisationsweiten Tageskontingent, sodass eine schwere Datenintegration das Limit ausschöpfen kann, das ein Deployment danach nicht mehr nutzen kann.
Kann ich die verbleibenden API-Aufrufe vor dem Start eines Deployments prüfen?
Ja, fragen Sie das OrganizationLimits-Objekt über die Tooling API ab, oder prüfen Sie unter Setup, System Overview, die aktuelle Nutzung und das Tageskontingent, bevor Sie einen großen Job starten.

Kostenlos starten. Keine Kreditkarte, keine Installation, keine Verpflichtung.

Einrichtung in unter 15 Minuten. Keine DevOps-Fachkraft nötig.

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.