DynamoDB ProvisionedThroughputExceededException
TL;DR — You're reading/writing faster than the table or index can serve. Switch the table to on-demand capacity, raise provisioned RCU/WCU (or enable auto-scaling), keep the SDK's default exponential-backoff retries, and spread traffic so one partition key isn't hot.
What it means
ProvisionedThroughputExceededException: The level of configured provisioned throughput for the table was exceeded.On a provisioned-capacity table, you've exceeded the read/write capacity units — either overall, or (more often) on a single partition. Unlike a ValidationException, this is retryable: the AWS SDKs retry it automatically with exponential backoff, so occasional ones are normal. Persistent ones mean real under-provisioning or a hot key.
Why it happens
- Under-provisioned capacity for the actual traffic.
- A hot partition — traffic concentrated on one partition key, so a single partition's share of capacity is exhausted while the table looks under-utilized overall.
- Spiky traffic faster than auto-scaling can react (scaling takes minutes).
- A large scan or bulk import consuming all capacity at once.
- A GSI whose capacity is lower than the write rate — a throttled GSI throttles the base table.
How to fix it
- Switch to on-demand capacity if traffic is unpredictable — it scales automatically and this error effectively disappears (you pay per request instead).
- Raise provisioned RCU/WCU or enable auto-scaling with a sane target utilization if you stay on provisioned.
- Keep exponential-backoff retries — the SDK does this by default; don't disable it. Use adaptive retry mode for bursty workloads.
- Fix the hot partition — increase key cardinality / write-shard the hot key so load spreads across partitions.
- Throttle bulk jobs and cache hot reads (DAX or an app cache) to shed read pressure.
FAQ
How do I fix ProvisionedThroughputExceededException? You are reading or writing faster than the table or index can serve. Switch the table to on-demand capacity, raise provisioned RCU/WCU (or enable auto-scaling), keep the SDK default exponential-backoff retries, and spread traffic so a single partition key is not hot.
Related errors
- ThrottlingException — account/control-plane rate limits.
- ItemCollectionSizeLimitExceededException
- Learn: On-demand vs provisioned · Hot partitions