Dynamodb Autoscaling运行速度不够快

Jon*_*han 6 amazon-dynamodb

我正在运行一个简单的api,它在每个调用中从一个dynamodb表中获取一个项目,我将自动缩放设置为最小值25和最大值10 000.

但是,如果我使用像wrk或者嘿这样的工具发送15000个请求,我会得到大约1000个502,

  • dynamodb的指标显示读取受到限制
  • 表上的缩放活动日志显示RCU已缩放到99但不超过该值
  • lambda日志显示该函数开始需要更长的时间,它通常需要大约20ms才能运行,但该函数开始运行500.1500,3000 ms并开始超时(我假设这是由节流引起的)

为什么自动缩放不是更好?它只能扩展到99RCU,但我的最大值是10,000.

Ben*_*enV 9

我们在短时间测试 DynamoDB 自动扩展时遇到了同样的问题,结果证明问题是扩展事件仅在吞吐量提高 5 分钟后发生(您可以通过检查自动扩展设置的 CloudWatch 警报来看到这一点)

这篇出色的博客文章通过创建一个响应 CloudWatch API 事件的 Lambda 并将警报的响应速度提高到一分钟,帮助我们解决了这个问题:https ://hackernoon.com/the-problems-with-dynamodb-auto-scaling-以及如何改进-a92029c8c10b


Eya*_* Ch 4

来自: http: //docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html

您定义的“目标利用率”是什么?

目标利用率是已消耗容量单位与预配置容量单位的比率,以百分比表示。Application Auto Scaling 使用其目标跟踪算法来确保 ProductCatalog 的预配置读取容量根据需要进行调整,以便利用率保持在或接近 70%。

另外,我认为自动缩放不适合您的主要原因是您的工作可能不会长时间保持较高水平:

“仅当实际工作负载持续升高(或降低)几分钟时,DynamoDB 自动扩展才会修改预配置吞吐量设置”

仅当实际工作负载持续升高(或降低)几分钟时,DynamoDB 自动扩展才会修改预配置吞吐量设置。Application Auto Scaling 目标跟踪算法旨在长期将目标利用率保持在或接近您选择的值。桌子的内置突发容量可容纳突发的、短期的活动高峰。有关详细信息,请参阅谨慎使用突发容量。

  • @Jonathan 还请注意,如果您在如此大的范围内扩展 DynamoDB 表,请务必小心,因为当它扩展时,它会分割您的分区(为您提供更多分区),而当它缩小时,它会拆分您的分区(为您提供更多分区) ,分区不会合并在一起,并且预配置的吞吐量将在所有分区之间分配。如果它拆分为 10K RCU 的 4 个分区,您仍然会有 25 RCU 的 4 个分区,这意味着每个分区只有约 6 个 RCU。10K RCU 的最小分区数为 4,但可能更高,并且您看不到该值。 (2认同)