SQS在Serverless中触发lambda有延迟



下面有一个用例

  1. StepFunction→λ→事件桥到SQS触发lambda

当消息接收到Eventbridge时,它将发布到SQS, SQS将触发lambda。我在这里注意到的是,每次推送消息时,它几乎需要21秒才能到达最终的lambda。

SQS配置:

  • 可见性超时:30秒
  • 死信队列:Enabled
  • 延迟发送:0
  • receiveMessageDelay: Tried both Short and long poll

Lambda位于VPC内部

当我做我的分析时,所有的桥都在瞬间发生,但SQS触发Lambda需要21秒。

我提到的所有博客都说,这将在瞬间发生,但对我来说没有运气。

我不确定我的配置是否错误。任何帮助对我来说都是更有价值的。

谢谢,皈依

扩展Guna自己的答案,我们遇到了同样的问题,并发现原因是文档SQS限制,因为我们的batchSize配置为100,maximumBatchingWindow配置为1。

AWS状态:

如果您使用的是批处理窗口,而您的SQS队列包含的流量非常低,Lambda在调用函数之前可能会等待长达20秒的时间。即使您将批处理窗口设置为低于20秒,也是如此。

来源:https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html

删除batchSizemaximumBatchingWindow配置设置后,SQS-Lambda调用延迟显著降低。

经过进一步调查,我注意到在serverless中SQS触发器lambda设置配置为maximumBatchingWindow,以指定在调用该函数之前收集记录的最大时间(以秒为单位)。当批量大小为1时,不需要。

最新更新