AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

了解扩展行为

并发执行是指在任意指定时间对您的函数代码的执行数量。您可以估计并发执行计数,但是,根据 Lambda 函数是否处理来自基于轮询的事件源的事件,并发执行计数会有所不同。

如果您创建的 Lambda 函数处理的不是来自基于轮询的事件源的事件(例如,Lambda 可处理来自 Amazon S3 或 API 网关 等其他事件源的每个事件),则每个发布的事件就是一个工作单元(采用并行方式,最多可达您的账户限制)。因此,这些事件源发出调用的次数影响并发度。可以使用此公式来估算您的函数使用的容量:

invocations per second * average execution duration in seconds

例如,考虑一个处理 Amazon S3 事件的 Lambda 函数。假定 Lambda 函数平均用时 3 秒,Amazon S3 每秒发布 10 个事件。因此,您的 Lambda 函数有 30 个并发执行。

基于轮询的事件源的并发执行数量还取决于其他因素,如下所述:

  • 基于轮询的事件源(基于流)

    • Amazon Kinesis Data Streams

    • Amazon DynamoDB

    对于处理 Kinesis 或 DynamoDB 流的 Lambda 函数,分区数即为并发单位。如果您的流有 100 个活动分区,则最多会有 100 个 Lambda 函数调用并发运行。这是因为 Lambda 按顺序处理每个分片的事件。

  • 基于轮询的事件源(非基于流):对于处理 Amazon SQS 队列的 Lambda 函数,AWS Lambda 将自动扩展队列上的轮询,直到达到最高并发级别,其中每个消息批可以被视为单个并发单位。AWS Lambda 的自动扩展行为旨在队列为空时保持较低的轮询成本,同时使您能够在很大程度上使用队列时实现高吞吐量。

    在最初启用 Amazon SQS 事件源映射后,Lambda 将开始对 Amazon SQS 队列进行长轮询。长轮询通过减少空响应的数量来帮助降低轮询 Amazon Simple Queue Service 的成本,同时在消息到达时提供最佳处理延迟。

    随着涌入队列的消息增加,AWS Lambda 会自动扩展轮询活动,直到并发函数执行的数量达到 1000、账户并发限制或(可选)函数并发限制(以较低者为准)。Amazon Simple Queue Service 支持最初突增 5 个并发函数调用并且将并发数增加到每分钟 60 个并发调用。

    注意

    账户级别限制受账户中的其他函数影响,而且每函数并发适用于发送到函数的所有事件。有关更多信息,请参阅管理并发

请求速率

请求速率是指调用您的 Lambda 函数的速率。对于除了基于轮询的服务之外的所有服务,请求速率是事件源生成事件的速率。对于基于轮询的服务,AWS Lambda 按下面所示计算请求速率:

request rate = number of concurrent executions / function duration

例如,如果一个流上有 5 个活动分片(即,您有 5 个并行运行的 Lambda 函数),并且您的 Lambda 函数用时大概 2 秒,则请求速率为 2.5 个请求/秒。

自动扩展

AWS Lambda 将根据增加的流量动态扩展函数执行,直到达到您的并发限制。在持续负载状态下,您的函数的并发突增数可达 500 至 3000 个并发执行的初始级别,具体数量因区域而异。在初始突增后,函数的容量每分钟额外增加 500 个并发执行,直到负载得到满足或区域中所有函数的总并发数达到限制。

区域 初始并发突增
美国东部(俄亥俄州)、美国西部(加利福尼亚北部)、加拿大 (中部) 500
美国西部(俄勒冈)、美国东部(弗吉尼亚北部) 3000
亚太区域(首尔)、亚太地区(孟买)、亚太区域(新加坡)、亚太区域(悉尼) 500
亚太区域(东京) 1000
欧洲 (伦敦)、欧洲 (巴黎)、欧洲(斯德哥尔摩) 500
欧洲(法兰克福) 1000
欧洲(爱尔兰) 3000
南美洲(圣保罗) 500
中国(北京)、中国 (宁夏) 500
AWS GovCloud (US-West) 500

注意

如果您的函数连接了 VPC,则 Amazon VPC 网络接口限制会阻止其扩展。有关更多信息,请参阅 配置 Lambda 函数以访问 Amazon VPC 中的资源

要限制扩展,您可以为函数配置预留并发。有关更多信息,请参阅 管理并发

本页内容: