DynamoDB AutoScaling仍然节流

问题描述:

我有一个使用DynamoDB的应用程序,我发现他们只是实现了自动缩放,这非常棒。我喜欢这个概念,我的应用程序的时机非常完美。但是,我仍然遇到一些问题,我不知道我是否无法调整设置以删除。DynamoDB AutoScaling仍然节流

我的应用程序在使用中会出现明确的尖峰,所以我认为这是一个理想的使用方式,但是对于自动缩放,我仍然会受到一些限制。这里是我的最后12小时读图表: autoscaling

正如你所看到的,当它钉鞋使用量设置低,所以节流一两个,直到更新踢,然后工作分钟。没关系,我认为并不比缩放更好,但我希望它不会缩小......

有没有什么办法可以告诉DynamoDB永远不会调速,除非它超过100(或200或任何我设定的上限)?只要它出现波动,吞吐量就会增加15分钟,或者等到波动结束后再进行处理。

+0

当然 - 将您的最低容量设置得更高。 :)说到这一点,你用什么值和你的目标门槛?说真的,当然,你不能使用实际上不存在的容量。此外,看起来您正在进行大量扫描,这在容量消耗方面成本相对较高。 –

+0

公顷,真的我想,但重点是避免额外的成本:)。我被设置为最低5,最高200,以及70%的利用率目标。我碰到50%的利用率,看看有什么......我会看看我的代码,看看我可能也在做什么过多的扫描,谢谢你的提示... – sfaust

Autoscaling使用CloudWatch。您可以通过转到CloudWatch控制板来查看这些警报,并查找包含您的表名称以及说明中的“不编辑或删除”警报。

为什么我要告诉你这个?

那么,CloudWatch具有一些最小的周期粒度。目前是1分钟。这意味着在向听众发射任何事件之前,它至少会等待1分钟。因此,负载开始后至少需要一分钟,直到容量增加。实际上它会更多,因为增加容量也需要时间。底线:如果您有很大的峰值,一些请求可能会受到限制,因为自动缩放不会生效,并且bursting可能会用尽。

简单但昂贵的解决方案将增加初始容量。

如果您事先了解即将到来的高峰(例如,您有一些工作定期运行,或者某些时候客户达到峰值),则可以使用API以编程方式修改自动调节。

+0

哼。 API可能是理想的,因为我有一个以前的脚本来改变特定定时器的吞吐量,所以我可以在相同的时间范围内改变自动缩放。然而,这里的例子都是java,你知道现在只是java还是可以用PHP来做到这一点?我没有看到PHP API中的任何自动缩放类... – sfaust

+0

我很确定没有直接的PHP支持。您可以使用AWS CLI。我没有真正进入PHP,但是你可以从PHP调用CLI吗?我已经使用这种方法来处理我的脚本。 – Tarlog

+0

嗯,不确定。我也有一个网络主机,所以我不知道我是否可以在我的主机上安装CLI ...感谢这个想法,但是,检查它... – sfaust