DynamoDB on-demand throughput exceeded
TL;DR — 是的,按需表仍然会限流。三个原因:你设置了一个最大吞吐量(MaxReadRequestUnits/MaxWriteRequestUnits)并超过了它;你在 30 分钟内驱动了超过先前流量峰值两倍的流量;或者你触及了一个表级配额(默认每张表 40,000 读请求单元和 40,000 写请求单元)。提高或移除最大值、逐渐爬升流量,并保持指数退避重试。
含义
ThrottlingException: Rate of requests exceeds the allowed throughput.按需模式会扩展以容纳流量,但不是瞬时的,也不是没有上限的。新的按需表能立即支撑每秒最多 4,000 次写入和 12,000 次读取,而按需模式能立即容纳先前流量峰值的两倍。超过一个配置的最大值、在 30 分钟内跑赢那个翻倍,或越过一个配额,都会表现为限流——ThrottlingException 是 HTTP 400 且可重试,错误携带 ThrottlingReason 字段(例如 IndexWriteMaxOnDemandThroughputExceeded),指明被触及的资源和限制。
为什么会发生
- 一个配置的最大吞吐量——你设置了
MaxReadRequestUnits/MaxWriteRequestUnits而需求越过了它;DynamoDB 返回一个ThrottlingException(这是你选择的一个成本控制上限,尽力而为地应用)。 - 快于先前峰值的 2 倍——按需模式能立即容纳先前峰值的两倍,但如果你在 30 分钟内超过那个峰值的两倍,就可能发生限流。
- 冷启动爬升——一张全新的表(或创建后立即的批量加载)超过了每秒 4,000 次写入和 12,000 次读取的初始基线。
- 表级配额——每张表默认 40,000 读请求单元和 40,000 写请求单元的上限;账户级配额越限会表现为
RequestLimitExceeded。 - 一个热点分区——流量集中在一个分区键上,无论表模式如何它都有自己的逐分区限制。
如何修复
- 提高配置的最大值——通过
UpdateTable增大MaxReadRequestUnits/MaxWriteRequestUnits,或把值设为-1以移除你的自定义上限(服务配额仍然适用)。 - 在已知峰值前预热——使用 DynamoDB 的 warm throughput 设置,或把流量增长分散在至少 30 分钟内,让按需模式的翻倍领先于需求,而不是追赶一个阶跃变化。
- 保持指数退避重试——SDK 默认会重试限流;对突发负载使用自适应重试模式。
- 限制批量导入的节奏,或使用 S3 导入功能,而不是猛敲一张新表。
- 分散键空间,使得没有单个分区键变热——即使表有余量,一个热点分区也会限流。
- 请求配额提升,如果你确实需要在一张表上超过 40,000 读/写请求单元。
在追查哪个键在吸收请求?在 DynoTable 桌面应用中浏览并过滤表,在热点分区键封顶你的吞吐量之前找到它。
常见问题
一张 DynamoDB 按需表会被限流吗? 会。按需表会在以下情况限流:你超过了一个配置的最大吞吐量、在 DynamoDB 完成扩展之前驱动了超过先前流量峰值两倍的流量、越过了每张表默认 40,000 读和 40,000 写请求单元的配额,或者把流量集中在一个热点分区键上。
我如何提高按需吞吐量限制?
通过 UpdateTable 增大 MaxReadRequestUnits/MaxWriteRequestUnits,或把值设为 -1 以移除你的自定义上限——账户配额仍然适用。如果你需要超过每张表默认 40,000 请求单元,请请求配额提升。
相关错误
- ProvisionedThroughputExceededException——预置模式的等价情况。
- ThrottlingException——控制平面/账户速率限制。
- 学习:On-demand vs provisioned · Hot partitions
参考资料
- 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
最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。