0

有一个 DynamoDB 表Entity,其中有一个散列键id和 GSI 在另一个属性上:cardId。GSI 只有范围键,没有任何排序键。

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

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

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

谢谢!

4

1 回答 1

0

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

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

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

于 2020-10-07T10:52:51.877 回答