amazon-web-services - 来自 SQS 触发器的 Amazon Web Service Lambda 低调用
问题描述
我有一个带有来自 SQS 队列的触发器的 AWS Lambda 函数设置。当前队列有大约 130 万条消息可用。根据 CloudWatch,Lambda 函数在一分钟内只达到 431 次调用。我读过Lambda 支持一次运行 1000 个并发函数,所以我不确定为什么它会在给定的分钟内达到 431 个。而且看起来我的函数平均只运行了大约 5.55 秒左右,所以这 1000 个可用的并发槽中的每一个都应该每分钟翻转多次,从而提供更高的调用率。
我如何才能弄清楚这里发生了什么并让我的 Lambda 函数以更及时的方式通过该 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(最大可用)。
推荐阅读
- sql - SAS中的proc sql代码没有正确过滤
- javascript - 如何在 Vue 3 (Vue Router) 中设置具有多个动态参数的动态路由
- python - 如何从 Python 中导入模块
- discord.py - Discord.py 机器人增强消息
- python - 在目录中的 ImageDataGenerator 流中将两个类视为一个类
- python - Flask html字符串包含标签,但在浏览器中不起作用
- javascript - Chrome 扩展:将脚本注入单个网页(由用户提供)
- flutter - 卡在肘上,将状态更改为 2 个小部件
- r - 如何更改条形图中单个条形的位置?
- python - Python; 使用初始字符列表从其他列表中检索完整单词?