假设:
让我们假设将数据插入DynamoDB的速度非常快。
上下文:
在DynamoDB表上启用了流,这将触发lambda。 Lambda读取流记录并在弹性搜索中为该记录建立索引。
问题陈述:
将记录插入DynamoDB的时间与通过流记录触发lambda的时间之间存在延迟。这种延迟或滞后一直在增加,并且与插入dynamoDB的数据量成正比。
如何找到滞后在哪里?是不是流没有立即触发lambda?还是因为有巨大的发电机写入,流正在受到阻碍?还是有一定的限制,使得lambda在给定的秒内不能被击中一定次数?
我不明白问题出在哪里,因为我什至看不到当前流是否仍然包含记录,或者流中的记录是否已经交付,但是lambda触发是滞后吗?
延迟示例: 昨天我们写了大量文章,今天我们看到这些记录已经达到了lambda!难以置信的延迟! :)
有什么建议吗?
答案 0 :(得分:0)
对于处理Kinesis或DynamoDB流的Lambda函数, 分片数是并发单位。如果您的信息流有100 活动碎片,最多将有100个Lambda函数调用 同时运行。这是因为Lambda处理每个分片的 事件顺序。
创建分片的逻辑不向最终用户公开。但这取决于你 RSU and WSUs.但是增加它们太多会花钱。
最重要的是,并发lambda par帐户受到限制。取决于您的操作区域(请参见here)。
您可以做的几件事