DynamoDB ThrottlingException

TL;DR — 你的请求速率超过了某个限制。它可重试——退避并重试(SDK 默认这样做)。如果它持续,说明你在过于频繁地调用一个控制平面 API(CreateTable、UpdateTable、DescribeTable),或触及了一个账户级限制。

含义

ThrottlingException: Rate of requests exceeds the allowed throughput.

ThrottlingException(以及相关的 RequestLimitExceeded)表示一个速率限制,它不是一张预置表自己的 RCU/WCU 设置。它以 HTTP 400 返回且可重试。它在过于快速执行的控制平面操作上最常见,而且——对按需表——当请求速率过高时(包括当你超过一个配置的最大按需吞吐量时),任何数据平面操作都可能返回它。错误携带 ThrottlingReason 字段,指明被限流的资源和被触及的限制。

为什么会发生

  • 轮询控制平面 API——在一个紧凑的循环中调用 DescribeTableListTablesUpdateTable(例如等待一张表变为 ACTIVE)。
  • 快速创建/删除许多表——并发的控制平面操作有上限(同时处于 CREATING/UPDATING/DELETING 的表/索引不超过 500 个)。
  • 一个配置的按需最大吞吐量——在一张按需表或 GSI 上超过 MaxReadRequestUnits/MaxWriteRequestUnits 会返回 ThrottlingException
  • 一张按需表上的突然突发——新表从每秒 4,000 次写入和 12,000 次读取开始,在 30 分钟内超过先前峰值的两倍可能限流,直到 DynamoDB 扩展。

如何修复

  1. 用指数退避 + 抖动重试——AWS SDK 会自动这样做;保持重试开启并考虑自适应重试模式。
  2. 停止紧凑轮询控制平面 API。 使用等待器(waitUntilTableExists),它们按合理的计划轮询,而不是一个热循环。
  3. 批处理并控制数据平面写入的节奏。 逐渐拉升批量加载,让按需容量能与你一起扩展。
  4. 把表操作分散在一段时间内,而不是一次创建几十个。

示例

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'});

常见问题

ThrottlingException 与 ProvisionedThroughputExceededException 相同吗? 不会。ProvisionedThroughputExceededException 是超出表的预配置容量时出现的数据平面错误。 ThrottlingException 在控制平面操作(CreateTableUpdateTableDescribeTable)中最常见,这些操作具有较低的帐户范围限制,并且在非常高的流量突发情况下。

如何修复 DynamoDB ThrottlingException? 使用指数退避和抖动重试 — AWS SDK 自动执行此操作。停止严格轮询的控制平面 API(使用waitUntilTableExists等服务者),逐渐增加批量负载,以便按需容量可以随你扩展,并随着时间的推移扩展表操作。

在 DynoTable 中检查大小

当控制平面限制阻止表设置时,请使用 DynoTable 浏览现有表,而不是循环轮询 DescribeTable — 在单次刷新后使用 ⌘K 打开表。对于触发按需限制的批量负载,请在斜坡之前使用 pricing calculator 调整流量大小。使用 ⌘P 切换配置文件; 设置→配置文件中的Test Connection**确认帐户。参见连接 AWS安装

来源

相关错误

参考资料

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

无需控制台即可使用 DynamoDB

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

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