我的 Amazon DynamoDB 按需模式表被限流,但我不知道原因。
使用按需容量模式的 DynamoDB 表会自动适应应用程序的流量大小。但是,以下情况可能会导致您的按需 DynamoDB 表被节流。
当流量在 30 分钟内超过之前峰值吞吐量的两倍时,DynamoDB 按需表可能会受到节流。
要解决此问题,请在至少 30 分钟内逐步扩大流量,然后再达到之前峰值的两倍。要监控表的吞吐量,请使用 Amazon CloudWatch 中的 ConsumedReadCapacityUnits 和 ConsumedWriteCapacityUnits 指标。要监控按需节流,请使用 ReadMaxOnDemandThroughputThrottleEvents 和 WriteMaxOnDemandThroughputThrottleEvents。
对于新的按需模式表,您可以立即获得最高 4,000 个写入请求单元、12,000 个读取请求单元或者二者的线性组合。对于计划内或高峰期事件,使用热吞吐量将表的容量扩展到预期使用量。
如果将现有表切换到按需容量模式,则此前流量峰值为以下值之一:
表上的每个分区最多可以提供 1,000 个写入请求单元、3,000 个读取请求单元或者二者的线性组合。如果分区的流量超过此配额,则该分区可能会被节流。
要解决此问题,请完成以下步骤:
默认情况下,按需表的账户级别配额为 40,000 个 WCU,每个表的账户级别配额为 40,000 个 RCU。如果表的流量超出吞吐量配额,则该表可能会被节流。
如果您的 DynamoDB 表的 GSI 处于节流状态,则节流可能会在基表上产生反压节流。有关详细信息,请参阅了解 DynamoDB 中的全局二级索引 (GSI) 写入节流和背压以及在 DynamoDB 中使用 GSI。
如果您为按需表配置了最大吞吐量配额,则在超出吞吐量配额时会出现“ThrottlingException”错误。
根据您的使用案例,执行以下操作之一:
要监控您为表或 GSI 配置的最大吞吐量,请使用 CloudWatch 中的 OnDemandMaxReadRequestUnits 和 OnDemandMaxWriteRequestUnits 指标。
DynamoDB 节流解决方法指导
如何为我的 DynamoDB 表选择合适的主键?
为什么 DynamoDB 上的指标与 CloudWatch 指标不同?
DynamoDB 中的配额
Introducing configurable maximum throughput for DynamoDB on-demand(DynamoDB 按需模式可配置的最大吞吐量简介)