为什么 DynamoDB 按需模式表被限流?

1 分钟阅读
0

我的 Amazon DynamoDB 按需模式表被限流,但我不知道原因。

解决方案

使用按需容量模式的 DynamoDB 表会自动适应应用程序的流量大小。但是,使用按需模式的表可能仍会被节流。以下原因可能会导致 DB 表被节流。

流量超过此前峰值的两倍

如果您的流量在 30 分钟内超过之前流量峰值的两倍,则可能会节流。最佳实践是逐渐提高流量,在前一个流量峰值出现至少 30 分钟之后再出现更高的流量峰值。要监测表的流量,请使用 Amazon CloudWatch 的 ConsumedReadCapacityUnits 指标。有关更多信息,请参阅 DynamoDB 指标和维度

对于新的按需模式表,您可以立即获得最高 4,000 个写入请求单元或 12,000 个读取请求单元,或者二者的线性组合。

对于切换到按需容量模式的现有表,此前流量峰值为以下值之一:

  • 该表此前预置吞吐量的一半
  • 新创建按需容量模式表的设置

有关更多信息,请参阅初始吞吐量和扩缩属性

流量超过了每个分区的最大限值

表上的每个分区最多可以提供 3,000 个读取请求单元或 1,000 个写入请求单元,或者二者的线性组合。如果分区的流量超过此限额,则该分区可能会被节流。

要解决此问题,请完成以下步骤:

  1. 使用 CloudWatch Contributor Insights for DynamoDB 来识别表中最常访问和最常被限流的键。
  2. 将对表的请求进行随机化处理,这样对热分区键的请求就会随着时间的推移而分散开来。有关更多信息,请参阅使用写入分片来均匀分配工作负载

流量超过了每个表的账户限额

对于按需模式表,表级别读取吞吐量和表级别写入吞吐量限额在账户级别生效。默认情况下,对于表吞吐量,最大读取请求单位为 40,000 个,最大写入请求单位为 40,000 个。如果表的流量超过了每个表的吞吐量限额,则该表可能会被节流。

要解决此问题,对于表级读取吞吐量和写入吞吐量,应请求增加账户级别限额

表的全局二级索引被节流

如果您的 DynamoDB 表有二级全局索引被节流,则该节流可能会对基表产生反向压力节流。有关更多信息,请参阅全局二级索引节流会如何影响 Amazon DynamoDB 表?以及在 DynamoDB 中使用全局二级索引

流量超过了配置的最大吞吐量

当超过了按需模式表上设置的最大读取或写入吞吐量时,您的表会被节流,并且会收到 ThrottlingException 错误消息。

根据您的用例,完成以下操作:

要监测为表或全局二级索引配置的最大吞吐量,请使用 CloudWatch 控制台中的 OnDemandMaxReadRequestUnitsOnDemandMaxWriteRequestUnits 指标。

相关信息

突增容量和自适应容量

如何为我的 Amazon DynamoDB 表选择正确的主键?

为什么 DynamoDB 控制台上的指标与 CloudWatch 的指标不同?

Amazon DynamoDB 中的服务、账户和表限额

介绍 Amazon DynamoDB 按需模式可配置的最大吞吐量

AWS 官方
AWS 官方已更新 9 个月前