根据文档,“默认情况下,AWS Lambda将给定区域内所有功能的并发执行总数限制为100。”
考虑一个使用Lambda进行后端处理的简单移动应用程序。如果我正确理解了约束,那么一次最多只能执行100个并发执行,这意味着如果我有100个用户同时调用lambda函数,是否会有节制的约束?
我知道我可以致电客户支持并增加该限制,但这是对约束的正确解释吗?应该如何扩展到1000、10,000或1,000,000个用户?
更新:自从写了这个答案以来,并发执行的默认限制增加了10倍,从100增加到1,000。限制是每个地区每个帐户。
默认情况下,AWS Lambda将给定区域内所有功能的并发执行总数限制为1000
http://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html#concurrent-execution-safety-limit(链接访问2017-05-02)
但是,和以前一样,这是一个保护性控件,如果您将用例与他们一起提出并获得批准,则AWS支持将增加该限制。在支持中心创建此类请求不收取任何费用,而提高您的限额也不收取任何费用。
Lambda平台如果认为适当的话,也可以允许您超出限制的短途旅行。没有记录这种操作背后的逻辑,但是合理的假设是,如果流量似乎是真正的需求/负载驱动的,而不是由Lambda函数直接或间接调用更多Lambda函数的失控环回条件导致的。
一个失控条件的有趣例子可能是这样的:一个存储桶具有一个创建对象事件,该事件调用一个Lambda函数,该事件在同一存储桶中创建2个对象...这将调用同一Lambda函数4次,创建8个对象。 ..调用lambda函数8次,创建16个对象。
在大约第15次迭代中,这仅需要几秒钟的时间,理论上您将尝试创建32,768个并发调用,以尝试创建65,536个对象。在大多数情况下,现实世界的流量增长速度要慢得多。
如果我有100个用户同时调用lambda函数,则会出现节流约束
是的,这就是“并发”背后的想法。
这应该如何缩放
没有人说过,只要有限制就可以了。
此限制是一种保护性控制,并不反映平台的实际限制。
而且,您的用户向Lambda发出并发请求的可能性有多大?假设您的Lambda函数运行100毫秒,则可以在100个并发调用的限制内处理每秒750次调用之类的事情,阻塞概率仅为0.1%。
(这是一个Erlang B计算,在这里似乎适用。当然,在没有随机到达的情况下,对于100ms函数,“纯”容量将为100×10 = 1000调用/秒)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句