【问题标题】:Dynamo - Increased Read Latency During WritesDynamodb - 在写入期间增加读取延迟
【发布时间】:2021-01-20 15:51:08
【问题描述】:

有一个 DynamoDB 表 Entity,它在 id 上具有哈希键,在另一个属性上具有 GSI:cardId。 GSI 只有范围键,没有排序键。

每当我们收到一批创建/更新请求时,我们首先使用 GSI 读取现有数据,然后写入主表,最终也会更新 GSI 表。在此期间,我们可能还会处理来自 GSI 的一些并行读取请求。

我们发现在此期间主表和 GSI 表的延迟从 200 毫秒增加到 10-15 秒(批量写入 + 读取)。我无法在表中的连续读取和写入之间建立关联。该表设置为使用按需容量并且没有限制。 “SuccessfulRequestLatency”仅约为 300-400 毫秒。

这是 DDB 客户端方法,延迟时间以秒为单位。它不做任何数据转换,只是将数据库数据原样返回给上层。我还应该监控什么以找出根本原因?

谢谢!

【问题讨论】:

    标签: amazon-dynamodb dynamodb-queries amazon-dynamodb-index


    【解决方案1】:

    我没有完整的答案,但确实有一些您可能想要调查的方向。

    首先,我在过去注意到极长的延迟可能表明您的客户端放弃并重试了请求。一些客户端隐藏了这个重试,它看起来就像一个来自外部的非常慢的请求。

    其次,您说得对,按需计费模式不会根据预配置的吞吐量进行节流,但它仍然可以进行节流 - 请参阅 https://aws.amazon.com/premiumsupport/knowledge-center/on-demand-table-throttling-dynamodb/。默认情况下,按需表可以具有的吞吐量以及吞吐量增长的速度是有限制的。这些限制至少部分是为了保护您 - 您不希望失控的火车应用程序意外执行数十亿次请求并花费您一百万美元 :-)

    【讨论】:

      猜你喜欢
      • 2021-04-12
      • 1970-01-01
      • 2018-07-12
      • 2020-10-01
      • 2017-01-08
      • 1970-01-01
      • 2018-06-04
      • 2020-05-14
      • 1970-01-01
      相关资源
      最近更新 更多