为什么我的 Amazon DynamoDB 表受到限制?

上次更新时间:2021 年 10 月 12 日

我的 Amazon DynamoDB 表上的读取或写入操作被限制。

简短描述

限制是 DynamoDB 表可能遇到的最常见性能问题之一。限制可能是由 DynamoDB 或者读取或写入 DynamoDB 表的应用程序引起的。

您可能会遇到的一些常见限制问题如下:

  • 您的 DynamoDB 表具有足够的预置容量,但大多数请求都受到限制。
  • 您为 DynamoDB 启用了 AWS Application Auto Scaling,但您的 DynamoDB 表受到限制。
  • 您的 DynamoDB 表处于按需容量模式,但该表正受到限制。
  • 你的表中有一个热分区。

解决方法

有关在限制事件期间必须监控的 DynamoDB 指标的信息,请参阅 DynamoDB 指标和维度。这些指标可以帮助您找到创建受限请求的操作,并确定产生限制的原因。根据您的使用案例使用以下一个或多个故障排除选项。

您的 DynamoDB 表具有足够的预置容量,但大多数请求都受到限制

DynamoDB 向 Amazon CloudWatch 报告分钟级别的指标。这些指标计算为一分钟的总和,然后计算平均值。但是,DynamoDB 速率限制是按秒应用的。

例如,如果您为 DynamoDB 表预配置了 60 个写入容量单位,则可以在一分钟内执行 3600 次写入操作。但是,在一秒钟内驱动所有 3600 个请求,而其余时间没有任何请求,就可能会产生限制。每分钟读取容量单位或写入容量单位的总数可能低于表的预置吞吐量。但是,如果所有工作负载都在几秒钟内执行,则请求可能会受到限制。

要解决此问题,请在 API 调用中添加抖动和指数回退。有关更多信息,请参阅指数回退和抖动

您启用了 AWS Application Auto Scaling,但您的表仍然受到限制

AWS Application Auto Scaling 不是解决 DynamoDB 表突然流量激增的合适解决方案。仅当已消耗容量单位的两个连续数据点在一分钟内高于配置的目标利用率值时,Application Auto Scaling 才会启动向上扩展。仅当消耗的容量持续两分钟高于目标利用率时,Application Auto Scaling 才会自动扩展预置容量。此外,当 CloudWatch 中已消耗容量的连续 15 个数据点低于目标利用率时,将启动缩减事件。启动 Application Auto Scaling 后,将调用 UpdateTable API 调用,该调用可能需要几分钟时间才能更新 DynamoDB 表或索引的预置容量。Application Auto Scaling 需要具有较高目标利用率值的连续数据点来扩展 DynamoDB 表的预置容量。在此期间,任何超出表预置容量的请求都将受到限制。因此,使用 Application Auto Scaling 来处理 DynamoDB 中激增的工作负载并不是合适的最佳实践。有关更多信息,请参阅使用 DynamoDB Auto Scaling 自动管理吞吐容量

您的表使用按需容量模式,但该表仍然受到限制

当表使用按需容量模式时,只要满足以下条件,表就不会受到限制:

  • 访问模式在各个分区之间均匀分布,以避免与热分区相关的问题。
  • 该表没有超过之前峰值流量的两倍。

对于按需表,随着流量的增加,DynamoDB 会自动分配更多容量,以确保您的工作负载不会遇到限制。但是,如果流量在 30 分钟内达到上一个峰值的两倍以上,则可能会发生限制。有关更多信息,请参阅峰值流量和扩展属性

您的表中有一个热分区

在 DynamoDB 中,基数不高的分区键可能会导致许多请求仅针对少数几个分区,从而产生热分区。如果超过每秒 3000 个 RCU 或 1000 个 WCU (或两者的组合) 的分区限制,则热分区可能会导致限制。

要查找表中访问量最大和受限最多的项目,请使用 Amazon CloudWatch Contributor Insights。Amazon CloudWatch Contributor Insights 是一种诊断工具,您可以使用它汇总查看 DynamoDB 表的流量趋势,并可用于识别最常访问的分区键。使用此工具,您可以持续监控表中项目访问模式的图形。热分区可能会降低表的总体性能。为避免这种性能不佳的情况,请在整个表中尽可能均匀地分配读取和写入操作。有关更多信息,请参阅设计分区键以均匀分布您的工作负载。有关选择正确分区键的信息,请参阅选择正确的 DynamoDB 分区键

注意:使用适用于 DynamoDB 的 CloudWatch Contributor Insights 工具会产生额外费用。有关更多信息,请参阅适用于 DynamoDB 计费的 CloudWatch Contributor Insights


这篇文章对您有帮助吗?


您是否需要账单或技术支持?