Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Drosselung diagnostizieren
Wenn in Ihrer Anwendung eine Drosselung auftritt, stellt DynamoDB detaillierte Ausnahmeinformationen und gezielte CloudWatch Metriken bereit, um Sie bei der Diagnose dieser Ereignisse zu unterstützen.
In diesem Abschnitt wird ein systematischer Ansatz zum Verständnis von Drosselungsereignissen in Ihren DynamoDB-Anwendungen vorgestellt. Es zeigt, wie Sie Drosselungsausnahmen interpretieren, sie mit CloudWatch Metriken korrelieren, um tiefere Einblicke zu erhalten, und wie Sie verstehen, welche Änderungen die Drosselung in Ihren DynamoDB-Anwendungen reduzieren würden.
Grundlegendes zu Drosselungsausnahmen
Wenn DynamoDB eine Anforderung drosselt, gibt es spezifische Ausnahmen mit detaillierten Diagnoseinformationen zurück. In Java gehören ProvisionedThroughputExceededException dazu beispielsweise,, oder. RequestLimitExceeded ThrottlingException
Jede Ausnahme umfasst eine Sammlung von Personen ThrottlingReason mit zwei SchlüsselfeldernThrottlingReasons, die Ihnen helfen sollen, die Drosselung zu identifizieren und zu verstehen:
-
Ein Grund — Ein verkettetes Feld, das dem Format folgt
<ResourceType><OperationType><LimitType> -
Ein Ressourcen-ARN — Der Amazon-Ressourcenname (ARN) der betroffenen Tabelle oder des betroffenen Indexes
Das Feld „Grund“ folgt einem konsistenten Muster, das Ihnen hilft, genau zu verstehen, was passiert:
-
ResourceType(Was wird gedrosselt): oder
TableIndex -
OperationType(Welche Art von Operation): oder
ReadWrite -
LimitType(Warum die Drosselung aufgetreten ist):
-
KeyRangeThroughputExceeded: Dies tritt auf, wenn eine bestimmte Partition, die Ihre Tabelle oder Ihren Index unterstützt, Lese- oder Schreibkapazität verbraucht hat, die die internen Durchsatzgrenzen pro Partition überschreitet. -
ProvisionedThroughputExceeded: Dies passiert bei einer bereitgestellten Tabelle oder einem globalen sekundären Index, wenn die Lese- oder Schreibverbrauchsrate die bereitgestellte Menge überschritten hat. -
AccountLimitExceeded: Dies passiert bei einer On-Demand-Tabelle oder einem Index, wenn die Lese- oder Schreibverbrauchsrate die maximale Nutzungsrate für eine Tabelle und ihre Indizes, die auf Kontoebene festgelegt wurde, überschritten hat. Sie können eine Erhöhung dieses Kontingents beantragen. -
MaxOnDemandThroughputExceeded: Dies passiert bei einer On-Demand-Tabelle oder einem Index, wenn die Lese- oder Schreibverbrauchsrate die vom Benutzer angegebene maximale Nutzungsrate überschritten hat, die für die Tabelle oder den Index konfiguriert wurde. Sie können diesen Wert selbst auf einen beliebigen Wert bis zum Kontolimit erhöhen oder auf -1 setzen, um anzugeben, dass kein vom Benutzer bereitgestelltes Limit vorhanden ist.
-
Der Ressourcen-ARN identifiziert genau, welche Tabelle oder welcher Index gedrosselt wird:
-
Für Tabellen:
arn:aws:dynamodb:[region]:[account-id]:table/[table-name] -
Für Indizes:
arn:aws:dynamodb:[region]:[account-id]:table/[table-name]/index/[index-name]
Beispiele für vollständige Drosselungsgründe:
-
TableReadProvisionedThroughputExceeded -
IndexWriteAccountLimitExceeded
Auf diese Weise können Sie genau ermitteln, welche Ressource gedrosselt wurde, durch welche Art von Vorgang die Drosselung verursacht wurde und warum die Drosselung stattgefunden hat.
Beispiele für Ausnahmen
Beispiel 1: Die bereitgestellte Kapazität auf einem GSI wurde überschritten
{ "ThrottlingReasons": [ { "reason": "IndexWriteProvisionedThroughputExceeded", "resource": "arn:aws:dynamodb:us-west-2:123456789012:table/CustomerOrders/index/OrderDateIndex" } ], "awsErrorDetails": { "errorCode": "ProvisionedThroughputExceeded", "errorMessage": "The level of configured provisioned throughput for the index was exceeded", "serviceName": "DynamoDB", "sdkHttpResponse": { "statusText": "Bad Request", "statusCode": 400 } } }
In diesem Beispiel erhält die Anwendung eine ProvisionedThroughputExceededException mit dem GrundIndexWriteProvisionedThroughputExceeded. Schreibvorgänge auf die OrderDateIndex werden gedrosselt, weil der Schreibverbrauch die konfigurierte bereitgestellte Schreibkapazität der GSI überschritten hat.
Beispiel 2: Der maximale On-Demand-Durchsatz wurde überschritten
{ "ThrottlingReasons": [ { "reason": "TableReadMaxOnDemandThroughputExceeded", "resource": "arn:aws:dynamodb:us-east-1:123456789012:table/UserSessions" } ], "awsErrorDetails": { "errorMessage": "Throughput exceeds the maximum OnDemandThroughput configured on table or index", "errorCode": "ThrottlingException", "serviceName": "DynamoDB", "sdkHttpResponse": { "statusText": "Bad Request", "statusCode": 400 } } }
In diesem Beispiel werden Lesevorgänge aus der UserSessions Tabelle gedrosselt, weil sie den für die Tabelle konfigurierten maximalen On-Demand-Durchsatz überschreiten.
DynamoDB-Drosselungsdiagnose-Framework
Wenn in Ihrer Anwendung eine Drosselung auftritt, gehen Sie wie folgt vor, um das Problem zu diagnostizieren und zu beheben.
Schritt 1 — Analysieren Sie die Details ThrottlingReason
-
Überprüfen Sie das Feld „Grund“, um den spezifischen Grund für die Drosselung zu ermitteln. Der Grund gibt die Art der gedrosselten Ressource (Tabelle oder Index), die Art des Vorgangs, der das Drosselungsereignis verursacht hat (Lesen oder Schreiben), und den Grenztyp an, der überschritten wurde (Partition, bereitgestellter Durchsatz, Kontolimit).
-
Überprüfen Sie das Feld ResourceArn, um festzustellen, welche Ressource (Tabelle oder GSI) gedrosselt wird.
-
Verwenden Sie diese kombinierten Informationen, um den vollständigen Kontext des Drosselungsproblems zu verstehen.
Stellen Sie sich zum Beispiel dieses Szenario vor, in dem Sie die folgende Ausnahme
ProvisionedThroughputExceededExceptionmit einem Drosselungsgrund erhalten.TableWriteKeyRangeThroughputExceededDer betroffene ResourceARN ist.arn:aws:dynamodb:us-west-2:123456789012:table/CustomerOrdersDiese Kombination informiert Sie darüber, dass Schreibvorgänge in Ihre
CustomerOrdersTabelle gedrosselt werden. Die Drosselung erfolgt auf Partitionsebene (nicht auf Tabellenebene, was als angezeigt werden würde).TableWriteProvisionedThroughputExceededDie Hauptursache ist, dass Sie die maximale Durchsatzkapazität für einen bestimmten Wert oder Bereich eines Partitionsschlüssels überschritten haben, was auf ein aktuelles Partitionsproblem hindeutet.Wenn Sie diese Beziehung zwischen den Ausnahmeelementen verstehen, können Sie die geeignete Abhilfemaßnahme implementieren. In diesem Fall geht es darum, die Partition im laufenden Betrieb zu behandeln, anstatt die bereitgestellte Gesamtkapazität der Tabelle zu erhöhen.
Schritt 2: Identifizieren und analysieren Sie die zugehörigen Kennzahlen CloudWatch
-
Identifizieren Sie Ihre Metriken: Jeder Drosselungsgrund in DynamoDB entspricht direkt bestimmten CloudWatch Metriken, die Sie überwachen können, um Drosselungsereignisse zu verfolgen und zu analysieren. Sie können die entsprechenden CloudWatch Metriknamen systematisch aus dem Grund der Drosselung ableiten.
-
Ordnen Sie anhand dieser Referenztabelle den Grund für die Drosselung den entsprechenden CloudWatch Kennzahlen zu:
Vollständige Referenz zu den Gründen und Kennzahlen für die Drosselung CloudWatch Kategorie Grund für die Drosselung Primäre Metriken CloudWatch Die bereitgestellte Kapazität wurde überschritten TableReadProvisionedThroughputExceeded ReadProvisionedThroughputThrottleEvents TableWriteProvisionedThroughputExceeded WriteProvisionedThroughputThrottleEvents IndexReadProvisionedThroughputExceeded ReadProvisionedThroughputThrottleEvents (GSI) IndexWriteProvisionedThroughputExceeded WriteProvisionedThroughputThrottleEvents (GSI) Die Partitionsgrenzen wurden überschritten TableReadKeyRangeThroughputExceeded ReadKeyRangeThroughputThrottleEvents TableWriteKeyRangeThroughputExceeded WriteKeyRangeThroughputThrottleEvents IndexReadKeyRangeThroughputExceeded ReadKeyRangeThroughputThrottleEvents (GSI) IndexWriteKeyRangeThroughputExceeded WriteKeyRangeThroughputThrottleEvents (GSI) Die maximale Anzahl auf Anforderung wurde überschritten TableReadMaxOnDemandThroughputExceeded ReadMaxOnDemandThroughputThrottleEvents TableWriteMaxOnDemandThroughputExceeded WriteMaxOnDemandThroughputThrottleEvents IndexReadMaxOnDemandThroughputExceeded ReadMaxOnDemandThroughputThrottleEvents (GSI) IndexWriteMaxOnDemandThroughputExceeded WriteMaxOnDemandThroughputThrottleEvents (GSI) Kontolimits wurden überschritten TableReadAccountLimitExceeded ReadAccountLimitThrottleEvents TableWriteAccountLimitExceeded WriteAccountLimitThrottleEvents IndexReadAccountLimitExceeded ReadAccountLimitThrottleEvents (GSIs) IndexWriteAccountLimitExceeded WriteAccountLimitThrottleEvents (GSIs) Wenn Sie beispielsweise mindestens die Metrik für den spezifischen Index erhalten
IndexWriteProvisionedThroughputExceededhaben, sollten Sie dieWriteProvisionedThroughputThrottleEventsCloudWatch Metrik überwachen, der in der identifiziert wurdeResourceArn. -
Überwachen Sie diese Kennzahlen CloudWatch , um die Häufigkeit und den Zeitpunkt der Drosselung zu verstehen, zwischen Lese- und Schreibdrosselung zu unterscheiden, Zeitmuster zu identifizieren, in denen die Drosselung zunimmt, und Ihre Kapazitätsauslastungstrends zu verfolgen.
DynamoDB veröffentlicht detaillierte Metriken für jede Tabelle und jeden globalen Sekundärindex. Die Metriken (
ReadThrottleEventsWriteThrottleEvents, undThrottledRequests) aggregieren alle Drosselungsereignisse in Ihrer Tabelle und ihren Indizes.
Schritt 3 — Identifizieren Sie mithilfe von CloudWatch Contributor Insights (für partitionsbezogene Drosselung) Ihre gedrosselten Schlüssel und Ihre hohen Zugriffsraten
Wenn Sie in Schritt 1 partitionsbezogene Probleme festgestellt haben (z. B. KeyRangeThroughputExceeded Fehler), kann CloudWatch Contributor Insights for DynamoDB Ihnen dabei helfen, zu diagnostizieren, welche spezifischen Schlüssel Ihren Traffic antreiben und welche Drosselungsereignisse in Ihrer Tabelle oder Ihrem Index auftreten.
-
Aktivieren Sie CloudWatch Contributor Insights für Ihre gedrosselte Tabelle oder Ihren Index auf der Grundlage Ihrer.
ResourceARNSie können den Modus für gedrosselte Tasten wählen, um sich ausschließlich auf die am stärksten gedrosselten Tasten zu konzentrieren. Dieser Modus ist ideal für die kontinuierliche Überwachung, da er nur Ereignisse verarbeitet, wenn eine Drosselung auftritt. Alternativ hilft Ihnen der Modus Zugegriffene und gedrosselte Tasten dabei, nach Mustern in den Tasten zu suchen, auf die am häufigsten zugegriffen wird.
-
Analysieren Sie die Berichte, um problematische Muster zu identifizieren. Suchen Sie nach Schlüsseln mit unverhältnismäßig hohen Zugriffs- oder Drosselungsraten und korrelieren Sie Drosselung und Verkehrsmuster. Sie können integrierte Dashboards erstellen, die Contributor Insights-Diagramme und CloudWatch DynamoDB-Metriken kombinieren.
Ausführliche Informationen zur Aktivierung und Verwendung von CloudWatch Contributor Insights finden Sie unter CloudWatch Contributor Insights for DynamoDB verwenden.
Schritt 4 — Ermitteln Sie die passende Lösung
Nachdem Sie die spezifische Ursache der Drosselung diagnostiziert haben, implementieren Sie die empfohlene Lösung, die auf Ihrem spezifischen Kontext basiert. Die geeignete Lösung hängt von mehreren Faktoren ab, darunter Ihrem Drosselungsszenario, dem Kapazitätsmodus der Tabelle, den Entscheidungen zum Tabellenentwurf und den wichtigsten Entwurfsentscheidungen, den Zugriffsmustern und der Abfrageeffizienz, der Konfiguration des globalen und sekundären Indexes sowie der allgemeinen Systemarchitektur und den Integrationspunkten.
Detaillierte Lösungen für Ihre spezifischen Drosselungsszenarien finden Sie im Abschnitt. Leitfaden zur DynamoDB-Drosselungsauflösung Diese Ressource bietet gezielte Behebungsstrategien, die auf Ihren speziellen Drosselungsgrund und die Konfiguration des Kapazitätsmodus zugeschnitten sind.
Schritt 5 — Überwachen Sie Ihren Fortschritt
-
Verfolge deine CloudWatch Kennzahlen, die deinem Drosselungsszenario entsprechen.
-
Vergewissern Sie sich, dass Ihre Strategien zur Risikominderung wirksam sind, indem Sie einen Rückgang der Drosselungsereignisse beobachten.