DynamoDB在没有任何节流的情况下读吞吐量低于容量

我遇到Dynamo问题,读吞吐量远低于配置的容量,而图中没有任何可见的节流。DynamoDB在没有任何节流的情况下读吞吐量低于容量

我的表有类似数据的100GB:

| Partition Key | Sort Key | Value | A | A1 | 1 | A | A2 | 21 | A | A3 | 231 ... | A | A200 | 31 | B | B1 | 5

这种结构不能改变太多,因为我可以查询(基于关联到一个给定键的所有值和更复杂的查询是非常重要的与给定分区键关联的排序键)。 。 这使我扼杀了写入,因为它必须频繁地击中相同的分区,但真正奇怪的是读取吞吐量。该表具有1000个读取单元,但最大记录吞吐量为每秒600个读取。这与每秒高达10.000个预配置读取单位一致。

在客户端,我每秒发送1000个请求(统一使用速率限制器),理论上读取吞吐量应该是每秒1000个读取。即使客户端的请求数量增加,速率仍然保持不变,并且存在零节制读取。

客户端在与Dynamo相同的区域中的EC2 m4.2xlarge实例上运行。我排除了客户端的一个问题,因为CPU使用率相当低,并且有足够的内存可用。

有什么想法可能导致这种情况?

回答:

每个项目的数据量可能会影响RCU。

参见: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ProvisionedThroughput.html

一个读出容量单元表示一个强一致的读取每 第二,或两个最终一致每秒读取一个项目最多 至4 2KB大小。如果您需要读取大于4 KB的项目,则 DynamoDB将需要消耗额外的读取容量单位。 所需的读取容量单位总数取决于项目大小, 以及是否希望读取最终一致或强烈一致的 。

您需要检查您是否使用一致的读取以及您每次读取的数据量。

回答:

的一点想法

  1. 在您的测试是你传播你的查询过所有的分区键的? Dynamo在所有分区上分配吞吐量,因此它会触及一部分分区,可能无法实现标题吞吐量。
  2. 你知道每个读取的数据有多少返回? 1个读取容量可以返回高达4KB的数据。如果您的一些结果大于4KB,那么1000个RCU的读取次数不会超过1000次。
  3. 你知道桌子上有多少个分区,以及你的吞吐量是如何分布在他们身上的?一个分区只能有3,000个RCU Temporarily increasing吞吐量可能导致您的表生成新的分区 - 吞吐量分布在每个分区上。然后,当您将RCU放回原位时,数据会保留在您的RCU更分散的相同数量的分区中。

以上是 DynamoDB在没有任何节流的情况下读吞吐量低于容量 的全部内容, 来源链接: utcz.com/qa/263588.html

回到顶部