【发布时间】:2019-11-08 22:02:38
【问题描述】:
假设:
让我们假设数据插入 DynamoDB 的速度非常快。
上下文:
在 DynamoDB 表上启用了流,这将触发 lambda。 lambda 读取流式记录并在弹性搜索中索引记录。
问题陈述:
记录插入 DynamoDB 的时间与通过流式记录触发 lambda 的时间之间存在延迟。这种延迟或延迟不断增加,并且与插入 dynamoDB 的数据量成正比。
如何找到滞后在哪里?是不是流没有立即触发 lambda?或者因为有大量的发电机写入数据流受到阻碍?或者是否有任何限制 lambda 在给定的秒内不能被击中一定次数?
我不明白问题出在哪里,因为我什至看不到当前流是否仍然包含记录,或者流中的记录是否已经交付但 lambda 触发器是滞后的?
延迟示例: 我们昨天写了很多,今天我们看到这些记录达到了 lambda!难以置信的延迟! :)
有什么建议吗?
【问题讨论】:
-
您在查看 lambda 的监控选项卡吗?您应该看到 IteratorAge、执行时间、并发调用。平均执行时间是多少?
-
有高达 4.6k 的并发调用,但是是的,这些峰值并不一致,但是是的,我看到了足够的峰值,范围从 800 到 4.6k。 ***** 迭代器年龄从 43M 到 110M **** 平均持续时间达到 30k 到 300k
-
执行时间是问题。首先,您可以尝试增加 lambda 的内存,但您还需要寻找其他方法来降低执行时间。还要确保您没有包含大量项目的分区。
-
我想我想通了。 lambda 的触发器数量很大,并且 iteratorAge 非常高。我们需要优化 lambda,以便它可供所有即将到来的人使用
标签: amazon-web-services aws-lambda amazon-dynamodb amazon-dynamodb-streams