Warum wird meine Amazon-DynamoDB-Tabelle gedrosselt?

Lesedauer: 5 Minute
0

Lese- oder Schreibvorgänge in meiner Amazon-DynamoDB-Tabelle werden gedrosselt. -oder- Ich erhalte eine ProvisionedThroughputExceededException, wenn ich einen Lese- oder Schreibvorgang in meiner DynamoDB-Tabelle ausführe.

Kurzbeschreibung

Im Folgenden finden Sie einige der häufigsten Drosselungsprobleme, mit denen Sie eventuell konfrontiert werden:

  • Ihre DynamoDB-Tabelle verfügt über ausreichend bereitgestellte Kapazität, die meisten Anfragen werden jedoch gedrosselt.
  • Sie haben AWS Application Auto Scaling für DynamoDB aktiviert, Ihre DynamoDB-Tabelle wird jedoch gedrosselt.
  • Ihre DynamoDB-Tabelle befindet sich im On-Demand-Kapazitätsmodus, die Tabelle wird jedoch gedrosselt.
  • Ihre Tabelle enthält eine heiße Partition.
  • Der Datenverkehr Ihrer Tabelle übersteigt die Durchsatzkontingente Ihres Kontos.

Lösung

Informationen zu DynamoDB-Metriken, die bei Drosselungsereignissen überwacht werden müssen, finden Sie unter DynamoDB-Metriken und -Dimensionen. Diese Metriken können Ihnen helfen, die Vorgänge, die zu gedrosselten Anfragen führen, zu lokalisieren und die Ursache für die Drosselung zu ermitteln. Verwenden Sie je nach Anwendungsfall eine oder mehrere der folgenden Optionen zur Fehlerbehebung.

Ihre DynamoDB-Tabelle verfügt über ausreichend bereitgestellte Kapazität, die meisten Anfragen werden jedoch gedrosselt

DynamoDB meldet Metriken minutenweise an Amazon CloudWatch. Die Metriken werden als Summe für eine Minute berechnet und dann gemittelt. Die Grenzwerte der DynamoDB-Rate werden jedoch pro Sekunde angewendet. Wenn Sie beispielsweise 60 Schreibkapazitätseinheiten für Ihre DynamoDB-Tabelle bereitgestellt haben, können Sie 3600 Schreibvorgänge in einer Minute ausführen. Wenn jedoch alle 3600 Anfragen in einer Sekunde ohne Anfragen für den Rest dieser Minute ausgeführt werden, kann dies zu einer Drosselung führen. Die Gesamtzahl der Lesekapazitätseinheiten oder Schreibkapazitätseinheiten pro Minute ist möglicherweise niedriger als der bereitgestellte Durchsatz für die Tabelle. Wenn der gesamte Workload jedoch innerhalb weniger Sekunden auftritt, werden die Anfragen möglicherweise gedrosselt.

Um dieses Problem zu lösen, stellen Sie sicher, dass Ihre Tabelle über genügend Kapazität verfügt, um Ihren Datenverkehr abzuwickeln, und wiederholen Sie gedrosselte Anfragen, indem Sie exponentielles Backoff verwenden. Wenn Sie das AWS-SDK verwenden, ist diese Logik standardmäßig implementiert. Weitere Informationen finden Sie unter Wiederholungsversuche bei Fehlern und exponentielles Backoff.

Hinweis: DynamoDB beginnt nicht unbedingt mit der Drosselung der Tabelle, wenn die verbrauchte Kapazität pro Sekunde die bereitgestellte Kapazität übersteigt. Mit der Burst-Kapazitäten-Funktion reserviert DynamoDB einen Teil der ungenutzten Kapazität für spätere Durchsatzspitzen, um Nutzungsspitzen zu bewältigen.

Sie haben AWS Application Auto Scaling aktiviert, Ihre Tabelle wird jedoch weiterhin gedrosselt

AWS Application Auto Scaling ist keine geeignete Lösung, um plötzliche Datenverkehrsspitzen mit DynamoDB-Tabellen zu bewältigen. Application Auto Scaling initiiert eine Hochskalierung nur dann, wenn zwei aufeinanderfolgende Datenpunkte für verbrauchte Kapazitätseinheiten innerhalb einer Minute den konfigurierten Zielauslastungswert überschreiten. Application Auto Scaling skaliert die bereitgestellte Kapazität nur dann automatisch, wenn die verbrauchte Kapazität konsistent zwei Minuten lang über der Zielauslastung liegt. Außerdem wird ein Ereignis zum Herunterskalieren ausgelöst, wenn 15 aufeinanderfolgende Datenpunkte für die verbrauchte Kapazität in CloudWatch unter der Zielauslastung liegen. Nachdem Application Auto Scaling initiiert wurde, wird ein UpdateTable-API-Aufruf durchgeführt, der einige Minuten in Anspruch nehmen kann, bis die bereitgestellte Kapazität für Ihre DynamoDB-Tabelle oder -Index aktualisiert wird. Application Auto Scaling benötigt aufeinanderfolgende Datenpunkte mit höheren Zielauslastungswerten, um die bereitgestellte Kapazität der DynamoDB-Tabelle hochzuskalieren. Während dieses Zeitraums werden alle Anfragen, die die bereitgestellte Kapazität des Tisches überschreiten, gedrosselt. Daher ist es keine bewährte Methode, Application Auto Scaling zu verwenden, um Workloads mit Spitzen in DynamoDB zu handhaben. In diesem Anwendungsfall sollten Sie erwägen, in den On-Demand-Modus zu wechseln. Weitere Informationen finden Sie unter Automatische Verwaltung der Durchsatzkapazität mit DynamoDB Auto Scaling.

Ihre Tabelle verwendet den On-Demand-Kapazitätsmodus, die Tabelle wird jedoch weiterhin gedrosselt

Wenn die Tabelle den On-Demand-Kapazitätsmodus verwendet, wird die Tabelle nicht gedrosselt, solange die folgenden Bedingungen zutreffen:

  • Das Zugriffsmuster ist gleichmäßig auf die Partitionen verteilt, um Probleme im Zusammenhang mit einer heiße Partition zu vermeiden.
  • Die Tabelle hat nicht mehr als das Doppelte des vorherigen Spitzenverkehrs erreicht.

Für On-Demand-Tabellen weist DynamoDB automatisch mehr Kapazität zu, wenn Ihr Datenverkehrsvolumen steigt, um sicherzustellen, dass Ihr Workload nicht gedrosselt wird. Eine Drosselung kann jedoch auftreten, wenn das Datenverkehrsvolumen innerhalb von 30 Minuten mehr als das Doppelte des vorherigen Spitzenwerts beträgt. Weitere Informationen finden Sie unter Spitzen-Datenverkehr und Skalierungseigenschaften.

Ihre Tabelle enthält eine heiße Partition

In DynamoDB kann ein Partitionsschlüssel ohne hohe Kardinalität dazu führen, dass viele Anfragen nur auf wenige Partitionen verteilt werden und zu einer heißen Partition führen. Eine heiße Partition kann zu einer Drosselung führen, wenn die Partitionsgrenzen von 3000 RCU oder 1000 WCU (oder eine Kombination aus beiden) pro Sekunde überschritten werden.

Verwenden Sie Amazon CloudWatch Contributor Insights, um die am häufigsten aufgerufenen und gedrosselten Elemente in Ihrer Tabelle zu finden. Amazon CloudWatch Contributor Insights ist ein Diagnosewerkzeug, das eine zusammenfassende Ansicht der Datenverkehrstrends Ihrer DynamoDB-Tabellen bietet und Ihnen hilft, die Partitionsschlüssel zu identifizieren, auf die am häufigsten zugegriffen wird. Mit diesem Tool können Sie die Diagramme für die Zugriffsmuster Ihrer Tabelle kontinuierlich überwachen. Eine heiße Partition kann die Gesamtleistung Ihrer Tabelle beeinträchtigen. Um eine solche niedrige Leistung zu vermeiden, verteilen Sie die Lese- und Schreibvorgänge so gleichmäßig wie möglich auf Ihre Tabelle. Weitere Informationen finden Sie unter Entwerfen von Partitionsschlüsseln zur gleichmäßigen Verteilung Ihres Workloads und Auswahl des richtigen DynamoDB-Partitionsschlüssel.

Hinweis: Für die Verwendung des Tools CloudWatch Contributor Insights für DynamoDB fallen zusätzliche Gebühren an. Weitere Informationen finden Sie unter CloudWatch Contributor Insights für die DynamoDB-Abrechnung.

Der Datenverkehr Ihrer Tabelle übersteigt Ihre die Durchsatzkontingente Ihres Kontos

Die Kontingente für den Lesedurchsatz auf Tabellengetrieben und den Schreibdurchsatz auf Tabellenebene gelten auf Kontoebene in jeder Region. Diese Kontingente gelten für Tabellen sowohl im Modus mit bereitgestellter Kapazität als auch im On-Demand-Kapazitätsmodus. Standardmäßig beträgt das für Ihre Tabelle festgelegte Durchsatzkontingent 40.000 Leseanforderungseinheiten und 40.000 Schreibanforderungseinheiten. Wenn der Datenverkehr zu Ihrer Tabelle dieses Kontingent überschreitet, wird die Tabelle möglicherweise gedrosselt. Um dieses Problem zu beheben, verwenden Sie die Service-Quotas-Konsole, um das Durchsatzkontingent für Lese- und Schreibvorgänge auf Tabellenebene für Ihr Konto zu erhöhen.


Ähnliche Informationen

Verwendung von Write-Sharding zur gleichmäßigen Verteilung von Workloads

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren