DynamoDB RequestLimitExceeded

TL;DR — 你超过了一个账户/表级请求速率配额,而不是一张表自己的预置容量。按需表默认为每秒 40,000 读请求单元和 40,000 写请求单元。保持 SDK 的退避重试,如果流量是真实的就在 Service Quotas 中提高配额,并分散负载,使得单张表/分区不成为瓶颈。

含义

RequestLimitExceeded: Throughput exceeds the current throughput limit for your
account. To request a limit increase, contact AWS Support.

RequestLimitExceeded 是 DynamoDB 在数据平面返回的三个限流异常之一(连同 ProvisionedThroughputExceededExceptionThrottlingException)。它表示你触及了一个账户级服务配额——例如按需表的逐表吞吐量配额——而不是一个逐表的预置 RCU/WCU 上限。它返回 HTTP 400 且可重试——SDK 会自动退避并重试。错误携带 ThrottlingReason 字段(例如 TableWriteAccountLimitExceededIndexReadAccountLimitExceeded)以及受影响资源的 ARN。

为什么会发生

  • 按需表的默认上限——每张按需表(及其每个 GSI)有一个可调整的默认配额,为每秒 40,000 读请求单元和 40,000 写请求单元。持续消耗超过它会以账户级 ThrottlingReason 限流,直到配额被提高。
  • 表在账户配额下无法进一步扩展——根据 AWS 文档,按需请求的速率超过了允许的账户吞吐量"且表无法进一步扩展"。这些配额是兜底保障,且可以被提高。
  • 一张新转按需的表在预热——一张全新的按需表(或刚切换到按需的表)会立即服务到其先前峰值的两倍;一个远超它的更大峰值可能在它扩展之前就限流。
  • 一张单个热点表吸收了一个远高于其近期峰值的流量峰值。

如何修复

  1. 保持指数退避重试开启——SDK 默认能处理瞬时峰值。对突发工作负载使用自适应重试模式。别禁用重试。
  2. 提高配额——如果流量是合法且持续的,就在 Service Quotas 中请求提高逐表按需吞吐量(或账户表数/吞吐量配额)。
  3. 在已知峰值前预热——把流量逐渐拉升而不是直接跳到峰值,让按需扩展领先于需求。
  4. 分散负载——对热点键分片并分散写入,使得单张表/分区不承载整个峰值(热点分区模式)。
  5. 缓存热读(DAX 或一个应用缓存)以把读压力卸到上限以下。

常见问题

RequestLimitExceeded 与 ProvisionedThroughputExceededException 有何不同? ProvisionedThroughputExceededException 意味着一张预置容量表超过了它自己配置的 RCU/WCU。RequestLimitExceeded 意味着你触及了一个账户或表级的请求速率配额——最常见的是按需模式每秒 40,000 读和 40,000 写请求单元的默认值——与单张表的逐表设置无关。

RequestLimitExceeded 可以重试吗? 可以。它是一个限流错误,AWS SDK 会用指数退避自动重试它。持续出现意味着你需要一次配额提升或分散负载,而不是更多重试。

相关错误

参考资料

最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。

无需控制台即可使用 DynamoDB

一款快速的 DynamoDB 桌面客户端,可运行 DynamoDB 无法执行的真正 SQL——JOINs、GROUP BY、聚合——并支持可视化编辑和运行在你自己的 Bedrock 密钥上的 AI agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。