Warum wird meine von Amazon DynamoDB bereitgestellte Tabelle gedrosselt?
Lese- oder Schreibvorgänge in meiner von Amazon DynamoDB bereitgestellten Tabelle werden gedrosselt. Oder ich erhalte die folgende Fehlermeldung, wenn ich Lese- oder Schreibvorgänge für meine bereitgestellte DynamoDB-Tabelle durchführe: "ProvisionedThroughputExceededException."
Kurzbeschreibung
In den folgenden Szenarien kann es häufig zu einer Drosselung Ihrer von DynamoDB bereitgestellten Tabelle kommen:
- Ihre DynamoDB-Tabelle verfügt über ausreichend bereitgestellte Kapazität, aber die meisten Anfragen werden gedrosselt.
- Sie haben AWS Application Auto Scaling for DynamoDB aktiviert, aber Ihre DynamoDB-Tabelle ist gedrosselt.
- Ihre Tabelle enthält eine heiße Partition.
- Der Datenverkehr Ihrer Tabelle übersteigt die Durchsatzquoten Ihres Kontos.
Lösung
Hinweis: Informationen zu DynamoDB-Metriken wie WriteThrottleEvents und ReadThrottleEvents, die bei Drosselungsereignissen überwacht werden müssen, finden Sie unter DynamoDB-Metriken und -Dimensionen.
Führen Sie je nach Anwendungsfall die folgenden Aufgaben aus.
Ihre DynamoDB-Tabelle verfügt über ausreichend bereitgestellte Kapazität, aber die meisten Anfragen werden 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 ausgeführt werden, während für den Rest der Minute keine Anfragen gestellt 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 Traffic abzudecken. Verwenden Sie dann exponentielles Backoff, um gedrosselte Anfragen erneut zu versuchen. Wenn Sie das AWS-SDK verwenden, ist diese Logik standardmäßig implementiert. Weitere Informationen finden Sie unter Wiederholungsversuche und exponentielles Backoff in AWS.
Hinweis: DynamoDB beginnt nicht, die Tabelle zu drosseln, wenn die verbrauchte Kapazität pro Sekunde die bereitgestellte Kapazität überschreitet. Mit der Burst-Kapazitäts-Funktion reserviert DynamoDB einen Teil der ungenutzten Kapazität für spätere Durchsatzschübe, um Nutzungsspitzen abzufangen. Weitere Informationen finden Sie unter Bereitgestellter Kapazitätsmodus und Wie geht Amazon DynamoDB mit hohen Ladezeiten in kurzen Intervallen um?
Sie haben AWS Application Auto Scaling for DynamoDB aktiviert, aber Ihre DynamoDB-Tabelle ist 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, wenn zwei aufeinanderfolgende Datenpunkte für verbrauchte Kapazitätseinheiten den konfigurierten Nutzungswert innerhalb einer Minute ü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.
Ein Scale-Down-Ereignis wird ausgelöst, wenn 15 aufeinanderfolgende Datenpunkte in CloudWatch für die verbrauchte Kapazität unter der Zielauslastung liegen. Nachdem Application Auto Scaling initiiert wurde, wird ein UpdateTable-API-Aufruf aufgerufen. Es kann einige Minuten dauern, bis der API-Aufruf die bereitgestellte Kapazität für Ihre DynamoDB-Tabelle oder Ihren Index aktualisiert. 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 der Tabelle überschreiten, gedrosselt. Es ist keine bewährte Methode, Application Auto Scaling zu verwenden, um hohe Workloads in DynamoDB zu verarbeiten. Wechseln Sie stattdessen in den On-Demand-Modus. Weitere Informationen finden Sie unter Automatische Verwaltung der Durchsatzkapazität mit DynamoDB Auto Scaling.
Ihre Tabelle enthält eine heiße Partition
In DynamoDB kann ein Partitionsschlüssel, der keine hohe Kardinalität hat, zu vielen Anfragen führen, die nur auf wenige Partitionen abzielen. Dieses Ereignis verursacht eine heiße Partition. Eine heiße Partition kann zu einer Drosselung führen, wenn die Partitionsgrenzen von 3000 RCU und 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 Diagnosetool, das eine zusammenfassende Ansicht der Datenverkehrstrends Ihrer DynamoDB-Tabellen bietet. Verwenden Sie dieses Tool, um die Partitionsschlüssel zu identifizieren, auf die am häufigsten zugegriffen wird, und um die Grafiken kontinuierlich auf die Zugriffsmuster Ihrer Tabelle zu ü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 Verteilung Ihrer Arbeitslast und Auswählen des richtigen DynamoDB-Partitionsschlüssels.
Sie können auch Write-Sharding auf dem Hotkey implementieren, um die Kardinalität zu erhöhen und zu ermöglichen, dass der Hotkey mehrere Partitionen umfasst. Weitere Informationen finden Sie unter Verwenden von Write-Sharding zur gleichmäßigen Verteilung von Arbeitslasten. Verwenden Sie exponentielles Backoff, um gedrosselte Anfragen erneut zu versuchen. Wenn Sie das AWS-SDK verwenden, ist diese Logik standardmäßig implementiert. Weitere Informationen finden Sie unter Wiederholungsversuche und exponentielles Backoff in AWS.
Wenn Sie mit einem hohen Traffic rechnen, empfiehlt es sich, die bereitgestellte Kapazität auf einen hohen Wert zu erhöhen. Die Erhöhung der bereitgestellten Kapazität erhöht die Anzahl der Partitionen im Backend.
Hinweis: Wenn Sie das CloudWatch Contributor Insights-Tool für DynamoDB verwenden, 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 Lesedurchsatz und Schreibdurchsatz auf Tabellenebene gelten auf Kontoebene in jeder AWS-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
Bewährte Methoden für das effektive Entwerfen und Verwenden von Partitionsschlüsseln
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 7 Monaten
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr