【问题标题】:AWS Lambda for mobile app and throttling适用于移动应用程序和限制的 AWS Lambda
【发布时间】:2016-07-18 12:03:07
【问题描述】:

根据docs,“默认情况下,AWS Lambda 将给定区域内所有函数的并发执行总数限制为 100。”

考虑一个使用 Lambda 进行后端处理的简单移动应用程序。如果我对约束的理解正确,那么一次并发执行的次数不会超过 100 个,这意味着如果我有 100 个用户同时调用 lambda 函数,就会有限制约束?

我知道我可以致电客户支持并提高该限制,但这是对约束的正确解释吗?这应该如何扩展到 1000、10,000 或 1,000,000 个用户?

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    更新: 由于编写了此答案,并发执行的默认限制增加了 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 支持人员提供您的用例并获得批准,他们将提高限制。在support center 中创建此类请求不收取任何费用,提高限制也不收取费用。

    Lambda 平台还可能允许超出您的限制,如果它认为适当的操作。这种操作背后的逻辑没有记录,但一个合理的假设是,如果流量似乎是真正的需求/负载驱动,而不是 Lambda 函数直接或间接调用更多 Lambda 函数的失控环回条件的结果.

    失控条件的一个有趣示例可能是这样的:一个存储桶有一个创建对象事件,该事件调用一个 Lambda 函数,该函数在同一个存储桶中创建 2 个对象...它调用同一个 Lambda 函数 4 次,创建8 个对象...调用 lambda 函数 8 次,创建 16 个对象。

    大约在第 15 次迭代中,只需要 ,理论上您将有 32,768 个并发调用尝试创建 65,536 个对象。在大多数情况下,现实世界的流量增长要慢得多。


    如果我有 100 个用户同时调用 lambda 函数,就会有节流约束

    是的,这就是“并发”背后的理念。

    这应该如何扩展

    没有人说会,但有限制。

    此限制是一种保护性控制,并非平台实际限制的反映。

    此外,您的用户向 Lambda 发出并发请求的可能性有多大?假设您的 Lambda 函数运行 100 毫秒,您可以在 100 次并发调用的限制内以仅为 0.1% 的阻塞概率处理每秒 750 次调用。

    (这是一个 Erlang B 计算,在这里似乎适用。当然,如果没有随机到达,那么对于 100 毫秒的函数,“纯”容量将是 100 × 10 = 1000 次调用/秒)。

    【讨论】:

    • 似乎已经从 100 增加到 1.000。
    • @GonzaloGallotti 感谢您引起我的注意。
    猜你喜欢
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 2015-10-03
    • 2023-02-24
    • 1970-01-01
    • 2012-11-25
    相关资源
    最近更新 更多