Freigeben über


Grenzwerte für Rate und Nutzung

Azure DevOps Services

Azure DevOps Services verwendet mehrere Mandanten, um Kosten zu senken und die Leistung zu verbessern. Dieses Design kann Leistungsprobleme oder Ausfälle verursachen, wenn andere Benutzer von freigegebenen Ressourcen Spitzen beim Verbrauch haben. Um dies zu verhindern, schränkt Azure DevOps die Ressourcen ein, die jeder Benutzer nutzen kann, und die Anzahl der Anforderungen, die er an bestimmte Befehle vornehmen kann. Wenn Sie diese Grenzwerte überschreiten, können zukünftige Anforderungen verzögert oder blockiert werden.

Erfahren Sie mehr in Git-Grenzwerten und bewährten Methoden, um Treffratenlimits zu vermeiden.

Globale Verbrauchsgrenze

Azure DevOps verfügt über ein globales Verbrauchslimit, das Anforderungen einzelner Benutzer verzögert, wenn freigegebene Ressourcen Gefahr laufen, überfordert zu werden. Dieser Grenzwert trägt dazu bei, Ausfälle zu vermeiden, wenn freigegebene Ressourcen nahezu überwältigt sind. Einzelne Benutzer erleben in der Regel nur verzögerte Anfragen, wenn einer der folgenden Vorfälle auftritt:

  • Eine ihrer gemeinsamen Ressourcen läuft Gefahr, überwältigt zu werden.
  • Ihre persönliche Nutzung überschreitet den Verbrauch eines typischen Benutzers innerhalb eines gleitenden Zeitfensters von fünf Minuten um das 200-Fache.

Die Verzögerung hängt vom anhaltenden Verbrauchsniveau des Benutzers ab. Verzögerungen reichen von einigen Millisekunden pro Anforderung bis zu 30 Sekunden. Wenn der Verbrauch auf Null fällt oder die Ressource nicht überfordert ist, werden die Verzögerungen innerhalb von fünf Minuten beendet. Wenn der Verbrauch hoch bleibt, können Verzögerungen unbegrenzt fortgesetzt werden, um die Ressource zu schützen.

Wenn eine Benutzeranforderung um einen erheblichen Betrag verzögert wird, erhält der Benutzer eine E-Mail und ein Warnbanner im Web. Für das Builddienstkonto und andere ohne E-Mail-Adresse erhalten Mitglieder der Gruppe „Project Collection Administrators“ die E-Mail. Weitere Informationen finden Sie unter Auslastungsüberwachung.

Wenn die Anforderungen eines einzelnen Benutzers blockiert werden, empfängt der Benutzer Antworten mit HTTP-Code 429 (zu viele Anforderungen) und eine Nachricht ähnlich der folgenden:

TF400733: The request has been canceled: Request was blocked due to exceeding usage of resource <resource name> in namespace <namespace ID>.

Azure DevOps-Durchsatzeinheiten

Azure DevOps-Benutzer verbrauchen viele freigegebene Ressourcen, und der Verbrauchsgrad hängt von Faktoren wie:

  • Das Hochladen einer großen Anzahl von Dateien in die Versionsverwaltung, wodurch Datenbanken und Speicherkonten geladen werden.
  • Ausführen komplexer Arbeitsaufgabenabfragen, wodurch die Datenbanklast basierend auf der Anzahl der durchsuchten Arbeitsaufgaben erhöht wird.
  • Ausführen von Builds, die Dateien aus der Versionskontrolle herunterladen und Logausgaben produzieren.
  • Allgemeine Vorgänge, die CPU und Arbeitsspeicher in verschiedenen Teilen des Diensts verbrauchen.

Um diese Aktivität zu messen, drückt Azure DevOps den Ressourcenverbrauch in Azure DevOps-Durchsatzeinheiten (TSTUs) aus. Ein TSTU ist eine abstrakte Lasteinheit, die eine Mischung verschiedener Ressourcen darstellt, darunter:

  • Datenbanknutzung – in erster Linie über Azure SQL-Datenbank-DTUs gemessen.
  • Berechnungsauslastung – CPU, Arbeitsspeicher und E/A von Anwendungsebenen und Job-Agenten.
  • Speichernutzung – Azure Storage-Bandbreite.

Hinweis

TSTUs sind absichtlich abstrakt. Sie aggregieren den Ressourcenverbrauch über Compute-, Speicher- und Datenbankebenen innerhalb einer verteilten Infrastruktur. Die zugrunde liegenden Metriken (CPU, Arbeitsspeicher, E/A, DTUs) sind nicht direkt verfügbar oder aussagekräftig. TSTUs bieten eine einheitliche Möglichkeit zum Darstellen von Last und erleichtern die Verwaltung und Überwachung der Nutzung, ohne die volle Komplexität einzelner Ressourcenkomponenten verfügbar zu machen. Sie können die Verwendung in TSTUs für eine Aktion mit einer Formel nicht berechnen, aber Sie können sehen, wie viele TSTUs ein Vorgang auf der Verwendungsüberwachungsseite verbraucht. Einige Vorgänge, wie Arbeitsaufgabenabfragen, schwanken im Verbrauch, während Ihre Organisation wächst und sich verändert, sodass Sie in regelmäßigen Abständen leistungsbezogene Vergleiche anstellen müssen, um genaue Ergebnisse zu gewährleisten.

Derzeit konzentrieren sich TSTUs hauptsächlich auf Azure SQL-Datenbank-DTUs, da Datenbanken die gemeinsam genutzte Ressource sind, die höchstwahrscheinlich von übermäßigem Verbrauch überfordert wird.

  • Ein TSTU stellt die durchschnittliche Last dar, die von einem typischen Azure DevOps-Benutzer über fünf Minuten generiert wird.
  • Normale Benutzeraktivitäten können Spitzen von 10 TSTUs oder weniger pro fünf Minuten generieren.
  • Größere aber weniger häufige Spitzenwerte können bis zu 100 TSTUs erreichen.
  • Der globale Grenzwert beträgt 200 TSTUs innerhalb eines gleitenden fünfminütigen Fensters.

Bewährte Methoden

  • Beachten Sie den Retry-After Header: Wenn Sie ihn in einer Antwort erhalten, warten Sie die angegebene Zeit, bevor Sie eine andere Anforderung senden. Die Antwort gibt weiterhin HTTP 200 zurück, daher ist keine Wiederholungslogik erforderlich.
  • Überwachen Sie X-RateLimit-Header: Wenn verfügbar, verfolgen Sie X-RateLimit-Remaining und X-RateLimit-Limit, um zu ermitteln, wie schnell Sie sich dem Schwellenwert nähern. Dies ermöglicht es Ihrem Client, Anfragen auszugleichen und Zeitverzögerungen zu vermeiden.

Hinweis

Identitäten, die von Tools und Anwendungen für die Integration in Azure DevOps verwendet werden, können gelegentlich höhere Geschwindigkeits- und Nutzungsgrenzwerte über die zulässige Verbrauchsgrenze hinaus benötigen. Erhöhen Sie diese Grenzwerte, indem Sie die Zugriffsstufe "Basic + Test Plans " den identitäten zuweisen, die Ihre Anwendung verwendet. Nachdem Sie keine höheren Ratenbeschränkungen mehr benötigen, stellen Sie die vorherige Zugriffsebene wieder her. Sie werden für die Zugriffsstufe "Basic + Test Plans " nur für die Dauer berechnet, die der Identität zugewiesen ist. Identitäten, denen bereits ein Visual Studio Enterprise-Abonnement zugewiesen wurde, können erst die Zugriffsebene Basic + Test Plans zugewiesen bekommen, nachdem Sie das Abonnement entfernt haben.

Rohrleitungen

Die Zinsbegrenzung funktioniert für Azure-Pipelines auf die gleiche Weise. Jede Pipeline ist eine einzelne Entität, und der Ressourcenverbrauch wird separat nachverfolgt. Selbst wenn Build-Agents selbst gehostet werden, generieren sie Ladevorgänge durch Klonen und Senden von Protokollen.

Es gibt ein Limit von 200 TSTU für jede Pipeline in einem gleitenden 5-Minuten-Fenster. Dieser Grenzwert entspricht dem globalen Verbrauchslimit für Benutzer. Wenn die Ratenbegrenzung eine Pipeline verzögert oder blockiert, wird eine Meldung in den angehängten Protokollen angezeigt.

API-Clientumgebung

Wenn Anforderungen verzögert oder blockiert werden, gibt Azure DevOps Antwortheader zurück, um API-Clients beim Reagieren zu unterstützen. Obwohl sie nicht vollständig standardisiert sind, sind diese Header weitgehend mit anderen beliebten Diensten in Einklang.

In der folgenden Tabelle sind die verfügbaren Kopfzeilen und deren Bedeutung aufgeführt. Mit Ausnahme von X-RateLimit-Delay werden alle diese Header gesendet, bevor die Anforderungen verzögert werden. Mit diesem Design können Clients ihre Anforderungsrate proaktiv senken.

Kopfzeilenname

Beschreibung


Retry-After

Der RFC 6585-angegebene Header, der Ihnen mitteilt, wie lange Sie warten müssen, bevor Sie Ihre nächste Anfrage senden, um den Erkennungsschwellenwert zu unterschreiten. Einheiten: Sekunden.


X-RateLimit-Resource

Ein benutzerdefinierter Header, der den Dienst und den Typ des erreichten Schwellenwerts angibt. Schwellenwerttypen und Dienstnamen können im Laufe der Zeit und ohne Warnung variieren. Es wird empfohlen, diese Zeichenfolge einem Menschen anzuzeigen, jedoch nicht für Berechnungen darauf zu vertrauen.


X-RateLimit-Delay

Wie lange die Anfrage verzögert wird. Einheiten: Sekunden mit bis zu drei Dezimalstellen (Millisekunden).


X-RateLimit-Limit

Die Gesamtzahl der zulässigen TSTUs, bevor Verzögerungen ausgelöst werden.


X-RateLimit-Remaining

Die Anzahl der verbleibenden TSTUs, bevor Verzögerungen beginnen. Wenn Anforderungen bereits verzögert oder blockiert wurden, ist es 0.


X-RateLimit-Reset

Zeitpunkt, zu dem, wenn der gesamte Ressourcenverbrauch sofort gestoppt wird, die nachverfolgte Nutzung auf 0 TSTUs zurückgeht. Ausgedrückt in Unix-Epochenzeit.


Grenzwerte für Arbeitsüberwachung, Prozesse und Projekte

Azure DevOps begrenzt die Anzahl der Projekte, die Sie in einer Organisation haben können, und die Anzahl der Teams, die Sie in jedem Projekt haben können. Es gibt auch Grenzwerte für Arbeitsaufgaben, Abfragen, Backlogs, Boards, Dashboards und vieles mehr. Weitere Informationen finden Sie unter Arbeitsverfolgung, Prozess- und Projektgrenzwerte.

Wiki

Neben den üblichen Repositorygrenzwerten kann eine Wiki-Datei in einem Projekt bis zu 25 MB betragen.

Dienstverbindungen

Für das Erstellen von Dienstverbindungen gibt es keine Pro-Projekt-Beschränkungen. Einschränkungen können jedoch über die Microsoft Entra-ID auferlegt werden. Weitere Informationen finden Sie in den folgenden Artikeln: