Überprüfen von Ratenbegrenzungsfehlern

Abgeschlossen

Anforderungen geben den Statuscode 429 für die Ausnahme Anforderungsrate zu groß zurück. Dieser Statuscode gibt an, dass die Anforderungsrate an Azure Cosmos DB begrenzt ist.

Wenn ein bereitgestellter Durchsatz verwendet wird, ist die Anzahl der Anforderungseinheiten pro Sekunde (RU/s) für die Workload festgelegt. An den Dienst gerichtete Vorgänge (Lesen, Schreiben, Abfragen) verbrauchen Anforderungseinheiten (Request Units, RUs). Wenn die Vorgänge in einer Sekunde mehr RUs verbrauchen als die bereitgestellten RU/s, gibt Azure Cosmos DB eine 429-Ausnahme zurück. Sehen wir uns die drei verschiedenen Gründe an, warum diese Ausnahme auftreten kann.

Anforderungsrate ist hoch

Der häufigste Grund für eine 429-Ausnahme liegt darin, dass die Anforderungsrate groß ist. Überprüfen Sie das Vorkommen dieser Ausnahme im Azure Cosmos DB-Erkenntnisbericht Gesamtanforderung nach Statuscode auf der Registerkarte Anforderung. Stellen Sie fest, wie groß der Prozentsatz der aufgetretenen 429-Ausnahmen im Vergleich zu erfolgreichen Anforderungen für Ihre Datenbank ist.

Obwohl 429-Ausnahmen in den Diagrammen angezeigt werden, beachten Sie, dass viele Anwendungen Anforderungen ein- oder mehrmalig wiederholen, wenn derartige Ausnahmen auftreten. Es ist also möglich, dass die Anwendungen die Drosselung bewältigen, ohne Fehler zurückzugeben.

Falls die Analyse des Diagramms ergibt, dass 1 bis 5 % der Workloadanforderungen eine 429-Ausnahme generieren und die End-to-End-Latenz akzeptabel ist, sollte keine Aktion erforderlich sein. Dieser geringe Prozentsatz von Ausnahmen ist ein Zeichen für eine akzeptable Nutzung von RU/s.

Wenn der Prozentsatz der 429-Ausnahmen jedoch größer als 5 % ist, können die Ausnahmen durch eine Partition mit übermäßig hoher Last verursacht werden. Wenn eine relativ kleine Anzahl logischer Partitionsschlüssel einen viel größeren Anteil der gesamten Anforderungseinheiten pro Sekunde verbraucht, kann eine Partition mit übermäßig hoher Last entstehen. Partitionen mit übermäßig hoher Last können eine 429-Ausnahme verursachen, da der Durchsatz nicht optimal auf mehrere Partitionen verteilt wird.

Um festzustellen, ob eine Partition mit übermäßig hoher Last vorhanden ist, überprüfen Sie den Azure Cosmos DB-Erkenntnisbericht Normalisierter RU-Verbrauch (%) nach PartitionKeyRangeID auf der Registerkarte Durchsatz. In diesem Bericht gibt PartitionKeyRangeID die jeweilige physische Partition an. Jede physische Partition, die mit einem deutlich höheren Verbrauch in diesem Diagramm angezeigt wird, kann eine Partition mit übermäßig hoher Last sein. Dies gilt insbesondere, wenn diese physische Partition konstant bei 100 % bleibt, während die anderen physischen Partitionen fast immer viel geringere Prozentsätze aufweisen.

Um festzustellen, welche Anforderungstypen die 429-Ausnahmen verursachen, kann die Ausführung einer Abfrage unter Azure-Diagnoseprotokolle die vom Anforderungstyp verbrauchten RUs zurückgeben. Die folgende Beispielabfrage gibt die durchschnittliche Anzahl von RUs pro Minute pro Vorgang für Vorgänge mit einer 429-Ausnahme zurück.

AzureDiagnostics
| where TimeGenerated >= ago(24h)
| where Category == "DataPlaneRequests"
| summarize throttledOperations = dcountif(activityId_g, statusCode_s == 429), totalOperations = dcount(activityId_g), totalConsumedRUPerMinute = sum(todouble(requestCharge_s)) by databaseName_s, collectionName_s, OperationName, requestResourceType_s, bin(TimeGenerated, 1min)
| extend averageRUPerOperation = 1.0 * totalConsumedRUPerMinute / totalOperations 
| extend fractionOf429s = 1.0 * throttledOperations / totalOperations
| order by fractionOf429s desc

Dies sind einige mögliche Lösungen für derartige 429-Ausnahmen:

  • Wenn festgestellt wird, dass die 429-Ausnahmen aufgrund einer Partition mit übermäßig hoher Last auftreten, sollten Sie den Partitionsschlüssel ändern.
  • Wenn die Ausnahmen nicht durch eine Partition mit übermäßig hoher Last verursacht werden, kann die Erhöhung der RU/s für den Container die Lösung sein.
  • Wenn die Ausnahmen bei Anforderungen für die Abfrage von Dokumenten auftreten, müssen Sie die Abfragen mit hoher RU-Belastung genauer auf Probleme untersuchen.

Ratenbegrenzung bei Metadatenanforderungen

Eine Vielzahl von Metadatenvorgängen kann 429-Ausnahmen verursachen. Metadatenvorgänge sind Vorgänge, die Datenbanken oder Container auflisten, erstellen, ändern oder löschen. Sie können auch Vorgänge wie das Abfragen des aktuell bereitgestellten Durchsatzes sein.

Überprüfen Sie das Vorkommen derartiger 429-Ausnahme im Azure Cosmos DB-Erkenntnisbereich Metadatenanforderungen, die die Kapazität überschritten haben (429s) auf der Registerkarte System.

Wenn solche Anforderungen 429-Ausnahmen verursachen, wird nicht empfohlen, die bereitgestellten RU/s zu erhöhen. Das Erhöhen der bereitgestellten RU/s hat keine Auswirkungen auf das Auftreten dieser Ausnahmen. Für metadatenbasierte Anforderungen gibt es einen systemseitig reservierten RU-Grenzwert.

Dies sind mögliche Lösungen für 429-Ausnahmen, die durch Metadatenanforderungen verursacht werden:

  • Erwägen Sie die Implementierung einer Backoffrichtlinie, um die Metadatenanforderungen mit einer niedrigeren Rate durchzuführen.
  • Verwenden Sie eine einzelne DocumentClient-Instanz für die Lebensdauer Ihrer Anwendung.
  • Speichern Sie die Namen der Datenbanken und Container zwischen.

Ratenbegrenzung aufgrund eines vorübergehenden Dienstfehlers

Wenn solche Anforderungen 429-Ausnahmen verursachen, wird nicht empfohlen, die bereitgestellten RU/s zu erhöhen. Das Erhöhen der bereitgestellten RU/s hat keine Auswirkungen auf das Auftreten dieser Ausnahmen. Das Wiederholen der Anforderung ist die einzige empfohlene Lösung. Wenn die Ausnahme weiterhin auftritt, müssen Sie ein Supportticket im Azure-Portal eröffnen. Vorübergehende Dienstfehler können auch annähernd gleichzeitig zu 429-Fehlern gemeldet werden.