繁体   English   中英

如何以秒为单位监控 Lambda 并发执行(或找到更好的解决方案来限制 Lambda 并发执行)?

[英]How Could I Monitor Lambda Concurrent Executions on a Second-by-Second Basis (or Find a Better Solution to Limit Lambda ConcurrentExecutions)?

我正在 AWS Lambda 内构建的大型分布式计算平台上工作。该平台非常尖锐,所以大多数时候 ConcurrentExecutions 的数量低于 50,但我们可以达到最大值(目前为 1000)达一个小时或更长时间,如果一个大批量作业命中系统(它是一个事件驱动的系统)。 这是一个问题,因为我们将拥有非常滞后的面向客户的 API。 最后,我不是架构师,所以我对系统的设计方式几乎没有控制权,但有人要求我 devise 一个聪明的并发执行限制解决方案

我不是 AWS 的新手,所以我知道处理这个问题的标准方法。 #1 是面向用户的 lambda 的保留并发。 为了这个练习,我不允许这样做(尽管我会 go 告诉我的老板那是必要的,如果确实如此)。 我在考虑一个系统,我们在其中指定高优先级(用于 UI)和低优先级函数(用于批处理),低优先级函数将检查来自 Cloudwatch 的存储(DynamoDB)值 output 当前的并发执行数. 如果低优先级 function 发现我们有使用所有 ConcurrentExecutions 的危险,它将发布到一个队列,并使用指数退避。 这一切都应该有效,除了 ConcurrentExecutions 仅以一分钟的增量进行监控的问题,这太慢了,因为我们的许多 Lambda 运行大约 500 毫秒。

所以我的问题如下:

  1. 有没有一种方法可以设置具有逐秒数据点的自定义 ConcurrentExecutions 指标,如果可以,您会怎么做?

  2. 有没有比 Cloudwatch 更好的方法来实现计数器?

  3. 我只是在这里遗漏了什么,有人有一个聪明的方法来管理 Lambda ConcurrentExecutions

我认为根本没有必要创建监视器或节流解决方案。 您将需要构建测试并维护核心解决方案的一些额外内容。 相反,两个建议:

听起来当前的设计有一个 lambda function 做得太多了。 进一步分解 Lambda,这样您就可以将 Lambda 拆分为一个 Ui/public lambda,以及一个或多个专用于批处理的过程。 通过这种方式,您可以将并发执行限制分散到更多 Lambda 中。 该限制是每 Lambda function。

二、请求增加服务配额/限制

要将限制提高到 1,000 次并发 function 执行,请按照我们文档中的步骤向 AWS 支持中心提交请求。 可拨打Lambda的所有地区均可使用此功能。

请参阅 AWS Lambda 提高默认并发执行限制。 https://aws.amazon.com/about-aws/whats-new/2017/05/aws-lambda-raises-default-concurrent-execution-limit/

限制管理团队在要求强奸限制时非常灵活,他们通常将其提高到我们的解决方案所需的任何合理数量。

要请求提高限制,请参阅https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM