Amazon dynamodb Dynamodb自动校准工作速度不够快

Amazon dynamodb Dynamodb自动校准工作速度不够快,amazon-dynamodb,Amazon Dynamodb,我正在运行一个简单的api,每次调用时从dynamodb表中获取一个项,我将自动缩放设置为最小25,最大10000 但是,如果我使用wrk或hey之类的工具发送15000个请求,我会收到大约1000个502 dynamodb的指标显示读取被限制 表中的缩放活动日志显示,RCU缩放到99,但不超过99 lambda日志显示函数开始运行的时间更长,通常需要20毫秒左右,但函数开始运行的时间为500.15003000毫秒,并开始超时(我假设这是由节流引起的) 为什么自动缩放不能更好地工作?它只能扩

我正在运行一个简单的api,每次调用时从dynamodb表中获取一个项,我将自动缩放设置为最小25,最大10000

但是,如果我使用wrk或hey之类的工具发送15000个请求,我会收到大约1000个502

  • dynamodb的指标显示读取被限制
  • 表中的缩放活动日志显示,RCU缩放到99,但不超过99
  • lambda日志显示函数开始运行的时间更长,通常需要20毫秒左右,但函数开始运行的时间为500.15003000毫秒,并开始超时(我假设这是由节流引起的)
为什么自动缩放不能更好地工作?它只能扩展到99RCU,但我的最大值是10000。

来自:

您将什么定义为“目标利用率”

目标利用率是消耗的容量单位与调配的容量单位的比率,以百分比表示。应用程序自动缩放使用其目标跟踪算法,以确保ProductCatalog的已配置读取容量根据需要进行调整,从而使利用率保持在或接近70%

此外,我认为自动缩放不适用于您的主要原因是您的工作可能不会在很长时间内保持高水平:

“只有在实际工作负载持续几分钟处于上升(或下降)状态时,DynamoDB auto scaling才会修改已设置的吞吐量设置”

只有在实际工作负载持续升高(或降低)几分钟时,DynamoDB自动缩放才会修改已配置的吞吐量设置。应用程序自动缩放目标跟踪算法旨在长期将目标利用率保持在或接近您选择的值。 表中内置的突发容量可以适应突然的、短时间的活动峰值。有关详细信息,请参见节约使用突发容量


在短时间内测试DynamoDB autoscaling时,我们遇到了相同的问题,结果证明问题在于,只有在吞吐量提升5分钟后才会发生缩放事件(您可以通过检查autoscaling设置的CloudWatch警报来了解这一点)


这篇优秀的博文通过创建一个Lambda来响应CloudWatch API事件,并将警报的响应时间提高到一分钟,帮助我们解决了这个问题:

我的目标利用率是70%,感谢链接,流量维持了大约一两分钟,这就解释了这一点。谢谢@Jonathan还注意到,如果您在如此大的范围内扩展DynamoDB表,您需要注意一点,因为当它向上扩展时,它会分割您的分区(给您更多的分区),当它向下扩展时,分区不会重新合并在一起,并且提供的吞吐量将在所有分区之间进行分配。如果它以10K RCU的速度拆分为4个分区,那么在25 RCU的速度下仍然会有4个分区,这意味着每个分区只有~6个RCU。10K RCU的最小分区计数为4,但可能更高,并且该值对您不可见。