为什么我的按需 DynamoDB 表受到节流?
上次更新日期:2023 年 2 月 21 日
我的按需 Amazon DynamoDB 表受到节流。
简短描述
以下是可能导致 DynamoDB 按需表受到节流的常见原因:
- 流量是上一个峰值的两倍以上。
- 流量超出每个分区的最大值。
- 流量超出了每个表的账户限额。
- 表的全局二级索引受到节流。
解决方法
使用按需容量模式的 DynamoDB 表可自动适应应用程序的流量。但是,使用按需模式的表可能仍然会受到节流。
流量是上一个峰值的两倍以上
如果您在 30 分钟内超过上一次流量峰值两倍,则可能会遇到节流。最佳做法是,在超过上一次流量峰值之前,将您的流量增长延长至少 30 分钟。使用 Amazon CloudWatch 中的 ConsumedReadCapacityUnits 指标监控至表格的流量。有关更多信息,请参阅 DynamoDB 指标和维度。
对于新的按需表,您可以立即驱动最多 4000 个写入请求单位或 12000 个读取请求单位,或此两者的线性组合。对于切换到按需容量模式的现有表,先前的峰值是该表先前预置吞吐量的一半。或者,之前的峰值是采用按需容量模式的新建表的设置值。
有关更多信息,请参阅按需容量模式的初始吞吐量。
流量超出每个分区的最大值
表中的每个分区最多可提供 3000 个读请求单位或 1000 个写请求单位,或此两者的线性组合。如果一个分区的流量超过此限制,则该分区可能会受到限制。要解决此问题,请采取以下操作:
- 使用适用于 DynamoDB 的 CloudWatch Contributor Insights来标识您的表中最常访问和最常限流的键。
- 对至表格的请求进行随机化,以使对热分区键的请求随时间分布。有关更多信息,请参阅使用写入分片均匀分布工作负载。
流量超出了每个表的账户限额
对于按需表,表级读取吞吐量和表级写入吞吐量限额适用于账户级别。默认情况下,表吞吐量设置为最大 40000 个读取请求单位和最大 40000 个写入请求单位。如果表的流量超出了每个表的吞吐量账户限额,则该表可能会受到节流。要解决此问题,请使用服务限额控制台增加账户的表级读取吞吐量限额和写入吞吐量限额。
表的全局二级索引受到节流
如果 DynamoDB 表的二级全局索引受到节流,则节流可能会对基表造成反压限制。有关更多信息,请参阅对全局二级索引实施节流会对 Amazon DynamoDB 表造成哪些影响?和在 DynamoDB 中使用全局二级索引。