首页 > 解决方案 > 来自 SQS 触发器的 Amazon Web Service Lambda 低调用

问题描述

我有一个带有来自 SQS 队列的触发器的 AWS Lambda 函数设置。当前队列有大约 130 万条消息可用。根据 CloudWatch,Lambda 函数在一分钟内只达到 431 次调用。我读过Lambda 支持一次运行 1000 个并发函数,所以我不确定为什么它会在给定的分钟内达到 431 个。而且看起来我的函数平均只运行了大约 5.55 秒左右,所以这 1000 个可用的并发槽中的每一个都应该每分钟翻转多次,从而提供更高的调用率。

我如何才能弄清楚这里发生了什么并让我的 Lambda 函数以更及时的方式通过该 SQS 队列进行处理?

标签: amazon-web-servicesaws-lambdaamazon-sqs

解决方案


您提到的 1000 个并发连接限制假设您提供了足够的容量。

看看这个,尤其是最后一点。 https://docs.aws.amazon.com/lambda/latest/dg/vpc.html

如果您的 Lambda 函数访问 VPC,您必须确保您的 VPC 有足够的 ENI 容量来支持您的 Lambda 函数的规模要求。您可以使用以下公式大致确定 ENI 容量。

预计峰值并发执行次数 *(内存以 GB / 3GB 为单位)

在哪里:

预计峰值并发执行- 使用管理并发中的信息来确定此值。

内存– 您为 Lambda 函数配置的内存量。

您指定的子网应该有足够的可用 IP 地址来匹配 ENI 的数量。

我们还建议您在 Lambda 函数配置的每个可用区中至少指定一个子网。通过在每个可用区中指定子网,如果某个可用区出现故障或 IP 地址用完,您的 Lambda 函数可以在另一个可用区中运行。

另请阅读这篇文章,其中指出了许多可能会影响您的事情:https ://read.iopipe.com/5-things-to-know-about-lambda-the-hidden-concerns-of-network-resources-6f863888f656

最后一点,确保您的 SQS Lambda 触发器的 batchSize 为 10(最大可用)。


推荐阅读