DynamoDB On-Demand-Durchsatz überschritten
TL;DR — Ja, On-Demand-Tabellen können trotzdem drosseln. Die drei Ursachen: Du hast einen maximalen Durchsatz (MaxReadRequestUnits/MaxWriteRequestUnits) gesetzt und überschritten; du hast mehr als das Doppelte deines bisherigen Traffic-Höchstwerts innerhalb von 30 Minuten getrieben; oder du hast ein Kontingent auf Tabellenebene erreicht (standardmäßig 40.000 Read Request Units und 40.000 Write Request Units pro Tabelle). Hebe das Maximum an oder entferne es, steigere den Traffic schrittweise und behalte Retries mit exponentiellem Backoff bei.
Was es bedeutet
ThrottlingException: Rate of requests exceeds the allowed throughput.Der On-Demand-Modus skaliert, um Traffic zu bewältigen, aber nicht sofort und nicht ohne Obergrenzen. Neue On-Demand-Tabellen halten sofort bis zu 4.000 Schreib- und 12.000 Lesevorgänge pro Sekunde aus, und On-Demand bewältigt sofort bis zum Doppelten deines bisherigen Traffic-Höchstwerts. Ein konfiguriertes Maximum zu überschreiten, diese Verdopplung innerhalb von 30 Minuten zu übertreffen oder ein Kontingent zu überschreiten, äußert sich jeweils als Drosselung — ThrottlingException ist HTTP 400 und wiederholbar, und der Fehler trägt ThrottlingReason-Felder (z. B. IndexWriteMaxOnDemandThroughputExceeded), die die Ressource und das erreichte Limit benennen.
Warum es passiert
- Ein konfigurierter maximaler Durchsatz — du hast
MaxReadRequestUnits/MaxWriteRequestUnitsgesetzt und die Nachfrage hat ihn überschritten; DynamoDB gibt eineThrottlingExceptionzurück (es ist eine von dir gewählte Kostenkontroll-Obergrenze, die nach bestem Bemühen angewendet wird). - Schneller als das Doppelte des bisherigen Höchstwerts — On-Demand bewältigt sofort bis zum Doppelten deines bisherigen Höchstwerts, aber eine Drosselung kann auftreten, wenn du das Doppelte dieses Höchstwerts innerhalb von 30 Minuten überschreitest.
- Kaltstart-Anstieg — eine brandneue Tabelle (oder ein Massenimport direkt nach der Erstellung) überschreitet die anfängliche Baseline von 4.000 Schreib- und 12.000 Lesevorgängen pro Sekunde.
- Kontingent auf Tabellenebene — die standardmäßige Obergrenze pro Tabelle von 40.000 Read Request Units und 40.000 Write Request Units; Überschreitungen des Kontingents auf Kontoebene äußern sich stattdessen als
RequestLimitExceeded. - Eine heiße Partition — Traffic, der auf einen Partition Key konzentriert ist, der unabhängig vom Tabellenmodus sein eigenes Limit pro Partition hat.
So behebst du es
- Hebe das konfigurierte Maximum an — erhöhe
MaxReadRequestUnits/MaxWriteRequestUnitsviaUpdateTable, oder setze den Wert auf-1, um deine benutzerdefinierte Obergrenze zu entfernen (Service-Kontingente gelten weiterhin). - Wärme vor einer bekannten Spitze vor — nutze die Warm-Throughput-Einstellung von DynamoDB oder verteile das Traffic-Wachstum über mindestens 30 Minuten, damit die Verdopplung von On-Demand der Nachfrage vorausbleibt, statt einer sprunghaften Änderung hinterherzujagen.
- Behalte Retries mit exponentiellem Backoff bei — das SDK wiederholt Drosselungen standardmäßig; nutze den adaptiven Retry-Modus für schubweise Lasten.
- Drossle Massenimporte oder nutze die S3-Import-Funktion, statt eine frische Tabelle zu überlasten.
- Verteile den Schlüsselraum, damit kein einzelner Partition Key heiß wird — eine heiße Partition drosselt selbst dann, wenn die Tabelle noch Spielraum hat.
- Beantrage eine Kontingenterhöhung, wenn du berechtigterweise mehr als 40.000 Read/Write Request Units auf einer Tabelle brauchst.
Du versuchst herauszufinden, welcher Schlüssel die Anfragen aufsaugt? Durchsuche und filtere die Tabelle in der DynoTable-Desktop-App, um die heiße Partition zu finden, bevor sie deinen Durchsatz begrenzt.
FAQ
Kann eine DynamoDB-On-Demand-Tabelle gedrosselt werden? Ja. On-Demand-Tabellen drosseln, wenn du einen konfigurierten maximalen Durchsatz überschreitest, mehr als das Doppelte deines bisherigen Traffic-Höchstwerts treibst, bevor DynamoDB die Skalierung abgeschlossen hat, das standardmäßige Kontingent pro Tabelle von 40.000 Read und 40.000 Write Request Units überschreitest oder Traffic auf einen heißen Partition Key konzentrierst.
Wie hebe ich das On-Demand-Durchsatzlimit an?
Erhöhe MaxReadRequestUnits/MaxWriteRequestUnits via UpdateTable, oder setze den Wert auf -1, um deine benutzerdefinierte Obergrenze zu entfernen — Kontenkontingente gelten weiterhin. Wenn du mehr als die standardmäßigen 40.000 Request Units pro Tabelle brauchst, beantrage eine Kontingenterhöhung.
Verwandte Fehler
- ProvisionedThroughputExceededException — das Gegenstück im Provisioned-Modus.
- ThrottlingException — Control-Plane-/Konto-Ratenlimits.
- Learn: On-Demand vs. Provisioned · Heiße Partitionen
Referenzen
- DynamoDB on-demand capacity mode — Amazon DynamoDB Developer Guide
- DynamoDB maximum throughput for on-demand tables — Amazon DynamoDB Developer Guide
- OnDemandThroughput — Amazon DynamoDB API Reference
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Troubleshooting throttling in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.