首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >低于并发限制的Lambda节流

低于并发限制的Lambda节流
EN

Stack Overflow用户
提问于 2018-06-21 04:05:26
回答 2查看 3K关注 0票数 10

我们使用Lambda为通过新闻媒体网站访问的API (通过API网关)提供电力,接收到了起伏不定但流量很大的流量。我们开始经历节流,所以我们把并发限制提高到2000。然而,我们仍然每天经历多次节流。

奇怪的是,在CloudWatch度量标准中,当我们被节流时并发请求峰值在600左右或更低。请参阅此CloudWatch图表作为示例:

以前有人经历过这种情况吗?你觉得这是为什么?我们能做些什么?

更多信息

  • 这张图表横跨我们整个地区的所有兰巴达。
  • 当发生节流时,所有Lambda实例都会发生这种情况。
  • 我们主要通过API网关触发Lambdas,但是有一些是通过SNS (相当高的数据速率)触发的。
  • 我们在所有API前面都有CloudFront,对于其中一些API,我们有5秒的缓存时间(对于非常频繁请求的APIs -节省$$$)。

此外,这里还有一个图像,它还显示了在同一时间段内的总调用计数和平均持续时间。很难知道什么是因果关系(节流导致的持续时间延长,反之亦然,因为有些羔羊确实称其他羔羊为“羔羊”)。请看一下合适的轴,因为天平是很不一样的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-26 22:42:18

我认为这与Lambda并发突发限制有关。

基本上,在突然加载下可以并发运行多少个Lambda函数的实例是有限制的,这个限制与整个每个区域Lambda并发限制是不同的。

您可以在这里找到更多有关它的信息:

https://docs.aws.amazon.com/lambda/latest/dg/scaling.html

有关部分:

AWS Lambda动态缩放功能执行,以响应增加的流量,直到您的并发限制。在持续负载下,您的函数的并发性突发到500到3000次并发执行之间的初始水平,每个区域都有不同的执行情况。在初始突发之后,该函数的容量每分钟增加500次并行执行,直到负载得到满足,或者区域内所有功能的总并发性达到极限。

票数 3
EN

Stack Overflow用户

发布于 2018-06-21 13:28:41

这似乎很熟悉。我们遇到了同样的问题,我们感到困惑,因为我们的并发限制增加了,但不幸的是,这并不是解决无服务器应用无限可伸缩性的神奇方法。

我猜你已经用完了ENI(弹性网络接口),因为每个lambda函数在初始化之前都需要一个。默认的限制是350并发附加ENI的。

您的600个并发lamba是每分钟分组的,因此我设想其中几个在一分钟内重叠,因此超过350。

要研究这一点,请进入您的API的全局设置,并为其提供一个IAM角色arn,它可以访问到CloudWatch的putlog。然后进入单独的API网关api并启用详细日志记录。

当API试图调用lambda函数时发生的任何错误都应该出现在这里,而不是被抑制(默认情况下)。

如果错误看起来有点像:

代码语言:javascript
复制
{
    "Message": "Lambda was not able to create an ENI in the VPC of the Lambda function because the limit for Network Interfaces has been reached.",
    "Type": "User"
}

如果是这样的话,你需要要求增加ENI的限制。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50960200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档