DynamoDB ThrottlingException
TL;DR — Deine Anfragerate hat ein Limit überschritten. Der Fehler ist wiederholbar — geh in den Backoff und versuch es erneut (das SDK macht das standardmäßig). Bleibt er bestehen, rufst du eine Control-Plane-API (CreateTable, UpdateTable, DescribeTable) zu oft auf oder stößt an ein kontoweites Limit.
Was es bedeutet
ThrottlingException: Rate of requests exceeds the allowed throughput.ThrottlingException (und der verwandte RequestLimitExceeded) signalisiert ein Ratelimit, das nicht die eigene RCU/WCU-Einstellung einer provisionierten Tabelle ist. Er kommt als HTTP 400 zurück und ist wiederholbar. Am häufigsten tritt er bei zu schnell ausgeführten Control-Plane-Operationen auf und kann — bei On-Demand-Tabellen — für jede Data-Plane-Operation zurückgegeben werden, wenn die Anfragerate zu hoch ist (einschließlich, wenn du einen konfigurierten maximalen On-Demand-Durchsatz überschreitest). Der Fehler trägt ThrottlingReason-Felder, die die gedrosselte Ressource und das erreichte Limit benennen.
Warum es passiert
- Polling von Control-Plane-APIs —
DescribeTable,ListTables,UpdateTablein einer engen Schleife aufrufen (z. B. warten, bis eine TabelleACTIVEwird). - Viele Tabellen schnell erstellen/löschen — gleichzeitige Control-Plane-Operationen sind gedeckelt (nicht mehr als 500 Tabellen/Indizes gleichzeitig in
CREATING/UPDATING/DELETING). - Ein konfigurierter maximaler On-Demand-Durchsatz — die Überschreitung von
MaxReadRequestUnits/MaxWriteRequestUnitsauf einer On-Demand-Tabelle oder einem GSI gibtThrottlingExceptionzurück. - Ein plötzlicher Ausschlag auf einer On-Demand-Tabelle — neue Tabellen starten bei 4.000 Writes/s und 12.000 Reads/s, und das Überschreiten des Doppelten deines vorherigen Spitzenwerts innerhalb von 30 Minuten kann drosseln, bis DynamoDB skaliert.
So behebst du es
- Wiederhole mit exponentiellem Backoff + Jitter — die AWS-SDKs machen das automatisch; lass Retries aktiviert und erwäge den Adaptive-Retry-Modus.
- Höre auf, Control-Plane-APIs eng zu pollen. Nutze Waiter (
waitUntilTableExists), die nach einem sinnvollen Zeitplan pollen statt in einer heißen Schleife. - Batche und takte Data-Plane-Writes. Fahre Bulk-Loads schrittweise hoch, damit die On-Demand-Kapazität mit dir skalieren kann.
- Verteile Tabellenoperationen über die Zeit, statt Dutzende auf einmal zu erstellen.
- Prüfe
ThrottlingReasonin der Antwort. Es benennt die gedrosselte Ressource und das Limit — Control-Plane- und On-Demand-Data-Plane-Drosselungen brauchen unterschiedliche Gegenmaßnahmen.
Beispiel
import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
import {waitUntilTableExists} from '@aws-sdk/client-dynamodb';
const client = new DynamoDBClient({});
// a waiter polls on a backoff schedule — not a tight DescribeTable loop
await waitUntilTableExists({client, maxWaitTime: 120}, {TableName: 'Orders'});FAQ
Ist ThrottlingException dasselbe wie ProvisionedThroughputExceededException?
Nein. ProvisionedThroughputExceededException ist der Data-Plane-Fehler für das Überschreiten der provisionierten Kapazität einer Tabelle. ThrottlingException ist am häufigsten bei Control-Plane-Operationen (CreateTable, UpdateTable, DescribeTable), die niedrige kontoweite Limits haben, und bei sehr hochvolumigen Ausschlägen.
Wie behebe ich eine DynamoDB-ThrottlingException?
Wiederhole mit exponentiellem Backoff und Jitter — die AWS-SDKs machen das automatisch. Höre auf, Control-Plane-APIs eng zu pollen (nutze Waiter wie waitUntilTableExists), fahre Bulk-Loads schrittweise hoch, damit die On-Demand-Kapazität mit dir skalieren kann, und verteile Tabellenoperationen über die Zeit.
Größe in DynoTable prüfen
Wenn Control-Plane-Drosselung das Aufsetzen von Tabellen blockiert, durchsuche vorhandene Tabellen mit DynoTable, statt DescribeTable in einer Schleife zu pollen — öffne Tabellen nach einem einzigen Refresh mit ⌘K. Für Bulk-Loads, die On-Demand-Drosselung auslösen, dimensioniere den Traffic vorab mit dem Pricing-Rechner.
Wechsle Profile mit ⌘P; Verbindung testen unter Einstellungen → Profile bestätigt das Konto. Siehe Mit AWS verbinden und Installation.
Quellen
- Error handling with DynamoDB — ThrottlingException (verifiziert 2026-07-13)
- Troubleshooting throttling in Amazon DynamoDB (verifiziert 2026-07-13)
Verwandte Fehler
- ProvisionedThroughputExceededException — Kapazitätsdrosselung pro Tabelle.
- RequestLimitExceeded — das Anfrageraten-Kontingent des Kontos.
- On-demand throughput exceeded — On-Demand-Tabellen können trotzdem drosseln.
- ResourceInUseException — Tabelle beschäftigt / existiert bereits.
- Learn: On-Demand vs. provisioniert
Referenzen
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Troubleshooting throttling in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB on-demand capacity mode — Amazon DynamoDB Developer Guide
- DynamoDB maximum throughput for on-demand tables — Amazon DynamoDB Developer Guide
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.