Mat*_*ord 9 throttling amazon-web-services aws-lambda aws-api-gateway
我们使用Lambda为通过新闻媒体网站访问的API(通过API网关)供电,接收波动但高负载的流量.我们开始体验限制,因此我们将并发限制提高到2000.但是,我们仍然每天多次经历限制.
奇怪的是,在CloudWatch指标中,当我们受到限制时,并发请求达到600或更低.请参阅此CloudWatch图表作为示例:
有谁之前经历过这个吗?为什么你认为这种情况发生了?我们对于它可以做些什么呢?
更多信息
此外,这里的图像还显示了同一时间段内的总调用次数和平均持续时间.很难知道是什么因果关系(由于节流导致持续时间上升,反之亦然,因为一些lambdas会调用其他lambda).请查看相应的轴,因为刻度差异很大.
这似乎很熟悉。我们遇到了完全相同的问题,我们感到困惑,因为我们增加了并发限制,但是不幸的是,这并不是无服务器应用程序无限扩展的神奇解决方案。
我的猜测是您用完了ENI(弹性网络接口),因为每个lambda函数在初始化之前都需要一个。默认限制是350个并发连接的ENI。
每分钟对600个并存的lambas进行分组,因此我想其中有两个在一分钟内重叠,因此超过350个。
要对此进行调查,请进入API网关的全局设置,并为其提供一个IAM角色arn,该角色可以访问CloudWatch的putlog。然后进入各个API网关api并启用详细日志记录。
当API Gateway尝试调用lambda函数时发生的任何错误均应显示在此处,而不是被忽略(默认情况下)。
如果错误看起来像:
{
"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"
}
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,您需要请求增加ENI的限额。
我认为这与 Lambda 并发突发限制有关。
基本上,在突然负载下可以同时运行的 Lambda 函数实例数量是有限制的,并且此限制与每个区域的总体 Lambda 并发限制不同。
您可以在这里找到更多相关信息:
https://docs.aws.amazon.com/lambda/latest/dg/scaling.html
相关部分:
AWS Lambda 动态扩展函数执行以响应增加的流量,直至达到您的并发限制。在持续负载下,函数的并发性会突然达到 500 到 3000 个并发执行之间的初始水平,具体情况因区域而异。在初始突发之后,函数的容量每分钟额外增加 500 个并发执行,直到满足负载或该区域中所有函数的总并发数达到限制。
| 归档时间: |
|
| 查看次数: |
1593 次 |
| 最近记录: |