DynamoDB流到Lambda的速度很慢/无法使用

时间:2018-10-16 21:51:34

标签: aws-lambda amazon-dynamodb-streams

我已通过流将lambda连接到DyDB表。将记录写入表时,它会触发lambda。流量非常突发,因此一会儿什么都不会发生,然后我将写几千条记录。

我看到的是将触发一些lambda实例,但不足以处理突发事件。然后在随机时间,lambda实例的数量将跳一个或两个数量级(从2到90或更多),并且会赶上。问题是跳线可能不会在30分钟或更长时间内发生。

我看到记录很快写入表中(几秒钟)。 Lambda处理20条记录的时间不应超过2分钟。似乎lambda花费了大部分时间在等待记录显示。该表的记录键是一个GUID。

我尝试过的事情

  • 处理记录数以确保没有lambda超时(20个似乎是保守的,但100个会导致超时)
  • 将lambda移至其他子网
  • 批量写入表(批量处理约500-1000条记录)
  • 增加写入量,希望它会触发更多的lambda(一批中有约20-100条记录)
  • 将lambda内存增加到最大(3GB)
  • 将内存减少为已用内存(1GB,已使用300Mb)

是否有更好的模式可以使用?我应该跳过流,只写SNS消息吗?我不在乎订单,但宁愿不做一次以上的工作。

1 个答案:

答案 0 :(得分:1)

这就是我发现的东西。

问题似乎在于lambda实例在DynamoDB流上的争用。

我的解决方案是跳过DynamoDB流而不使用它,然后将其发布到SNS队列中。 Lambda收集消息,并更好地扩展。时间从几小时变成了几秒钟。