Amazon DynamoDB吞吐量如何计算和限制?

Bri*_*vey 35 amazon-web-services amazon-dynamodb

它是每秒平均值吗?每分钟?每小时?

例如..如果我付10"阅读单位",允许使用每秒10高度一致的读取,我将被节流,如果我尝试做20单第二读取,即使是只有20个读取发生在最后一小时?亚马逊文档和常见问题解答无法在​​我能找到的任何地方回答这个关键问题.

我在FAQ中找到的唯一相关响应完全忽略了如何计算使用率以及何时可能发生限制的问题:

问:如果我的应用程序执行的读取或写入次数多于我的预配置容量,会发生什么?

答:如果您的应用程序执行的读取/秒或写入/秒比表的预配置吞吐量容量允许的更多,则超出预配置容量的请求将受到限制,您将收到400个错误代码.举例来说,如果你问1000个写入容量单位和尝试做1500写入/ 1个KB项目第二,DynamoDB将只允许1000写入/秒要经过,你会收到您额外的请求错误代码400.您应该使用CloudWatch监控请求率,以确保始终有足够的预配置吞吐量来实现所需的请求率.

abj*_*ngs 44

看起来他们在五分钟的窗口中跟踪写入,并且当过去五分钟的平均值超过您的预配置吞吐量时,它会限制您.

我做了一些测试.我创建了一个吞吐量为1次/秒的测试表.如果我暂时不写它然后发送请求流,亚马逊似乎在它开始限制之前接受了大约300.

当然,需要注意的是,亚马逊官方文档中没有说明这一点,并且可能随时更改.

  • 这是唯一真正了解OP问题并试图给出合理回答的答案. (5认同)
  • 我认为这不是真的.它们实际上是基于每秒的每秒分区进行测量,并且会在吞吐量超过预配置的第二个时间开始限制.因此,即使您提供的吞吐量高于此值,您也可以看到很多错误的错误 (2认同)

小智 10

DynamoDB提供"突发容量",允许从表中读取的数据量激增.您可以在以下网址阅读更多相关信息:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html#GuidelinesForTables.Bursting

基本上它是@abjennings注意到的 - 它使用5分钟的窗口来平均从表中读取的数量.


Ste*_*pel 9

如果我付10"阅读单位",允许使用10高度一致每秒读取,我将被节流,如果我尝试做20单第二读取,即使是只有20个读取发生在最后一小时?

是的,这是由于这个概念亚马逊DynamoDB无缝的可扩展性快速,可预测的性能 -引用的常见问题实际上是解决这一正确已经(即你必须采取行动/秒字面意思),虽然计算在更好地说明置备Amazon DynamoDB中的吞吐量确实如下:

写入容量单位使您可以为最大1KB的项目执行每秒一次写入.同样,读取容量单位 使您可以执行每秒一次强烈一致的读取(或每秒两次最终一致读取),大小最大为1KB. 较大的物品需要更多的容量.您可以通过估算每秒需要执行的读取或写入次数并乘以项目大小(四舍五入到最接近的KB)来计算所需的读写容量单位数.

写入所需的容量单位=每秒的项目写入次数x项目大小(向上舍入到最接近的KB)

读取所需的容量单位*=每秒项目读取次数x项目大小(向上舍入到最接近的KB)*如果使用最终一致的读取,则每秒读取数量将达到吞吐量的两倍.

[强调我的]

正确地将这些计算用于实际用例可能很复杂,请确保检查更多详细信息,例如Amazon DynamoDB中预配置吞吐量指南.

  • 在询问问题之前,我在AWS网站上阅读了您在上面引用的信息,但我仍然认为文本含糊不清.对我来说这似乎是不合逻辑的,它会逐字计算,因为那将意味着你总是必须大大过度配置以容纳任何可能的短脉冲或遭受额外读取的HTTP 400错误响应的后果/写道. (10认同)
  • IMO,这项服务有任何意义的唯一方法是让它至少有点"爆裂".对此的定价应该与数据中心收取带宽的方式类似,即第95百分位计费. (2认同)