0

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

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

4

1 回答 1

0

您提到的 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(最大可用)。

于 2018-10-06T02:44:29.000 回答