AWS Lambda吞吐量

时间:2016-07-06 15:20:12

标签: amazon-web-services aws-lambda

来自AWS Lambda FAQ:

  

问:我可以一次执行的AWS Lambda函数数量是否有限制?

     

没有。 AWS Lambda旨在运行您的许多函数实例   平行。但是,AWS Lambda的默认安全限制为100   每个区域的每个帐户的并发执行。如果您想提交   请求增加100个并发执行的限制   访问我们的支持中心,单击“打开新案例”,然后提交服务   限制增加请求。

     

问:如果我的帐户超过了该帐户,会发生什么   并发执行的默认限制?

     

超过限制时,将调用AWS Lambda函数   同步将返回限制错误(429错误代码)。的 LAMBDA   异步调用的函数可以吸收合理的突发   交通大约15-30分钟,之后进入事件   将被拒绝作为限制。如果正在使用Lambda函数   为响应Amazon S3事件而调用,AWS Lambda拒绝了这些事件   可以由S3保留和重试24小时。亚马逊的活动   Kinesis流和Amazon DynamoDB流重试直到   Lambda函数成功或数据过期。亚马逊Kinesis和   Amazon DynamoDB Streams将数据保留24小时。

上面的'合理爆发'是什么?有人有特定的数字吗?

3 个答案:

答案 0 :(得分:1)

AWS中的任何形式的爆发都不应该依赖于您的生产用途,这与CPU信用等可以量化的分配和充值率不同。

基本上它就像是蹦床边缘的填充物,如果你碰巧掉下来它会帮助你,但你仍然不会为了娱乐而潜水:)

我会将此解释为如果有可用资源,那么AWS将允许您使用它,但不要依赖它。

我的建议是为lambda函数选择更高的资源分配,使其更适合您的工作负载,或者将工作负载分解为多个lambdas的较小块,或者考虑将工作负载转移到EC2。

答案 1 :(得分:1)

没有具体的硬编号,但从日常实践中我们在某个时间点设置了超过1000个λ调用。

我们有一个通过Kinesis Streams触发的调用者lambda,调用者lambda从流中获取一批10个记录,并且每个记录调用一个worker lambda。根据你获得Kinesis记录的速度,它会触发很多工人lambdas:

Worker invokation count

只要我们不断将事件推入Kinesis,它就可以在任何时候触发〜5000(并维持一段时间)。

同样的lambda也可以通过API网关调用。如果在API网关上没有设置实际的速率限制,我认为它也可以处理相同类型的性能。 lambda本身是一样的。

请注意,我们是invoking工作人员,调度员职能是  由Kinesis触发的那个。

答案 2 :(得分:0)

Lambda确实维护了一个内部排队机制,当您发送超过限制的请求(默认为100)时,它将限制您的lambda调用并等待前100个lambda函数完成并返回可用列表然后调用它们用于队列中的下一个请求。

因此没有合理突发的定义值。这取决于你的每个lambda完成工作的速度。如果你有超过1000个请求/秒并且每个lambda少于10秒,那么它可以很好地处理它们但是如果每个lambda执行花费超过120秒,那么它可能会节流一段时间但是当它的队列填满时然后它将开始拒绝新请求。