AWS Lambda 函数扩展 - AWS Lambda
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS Lambda 函数扩展

第一次调用函数时,AWS Lambda 会创建函数的实例并运行其处理程序方法来处理事件。当函数返回响应时,它会保持活动并等待处理其他事件。如果在处理第一个事件时再次调用该函数,则 Lambda 初始化另一个实例,并且该函数同时处理这两个事件。随着更多事件的进入,Lambda 将它们路由到可用实例并根据需要创建新实例。当请求数量减少时,Lambda 会停止未使用的实例以释放其他函数的扩展容量。

您函数的并发 数量是在给定时间为请求提供服务的实例数。对于最初的流量突增,您的函数在一个区域中的累积并发数量可以达到 500 到 3000 之间的初始级别,该级别因区域而异。

突增并发配额

  • 3000 – 美国西部(俄勒冈),美国东部(弗吉尼亚北部),欧洲(爱尔兰)

  • 1000 – 亚太区域(东京)、欧洲(法兰克福)、美国东部(俄亥俄州)

  • 500 – 其他区域

在初始突增之后,您函数的并发可按每分钟增加 500 个实例的速度扩展。这将一直持续到有足够的实例来服务所有请求,或者直到达到并发限制。当请求进入的速度超过函数可扩展的速度,或者当函数处于最大并发时,其他请求会因限制错误而失败(状态代码为 429)。

以下示例显示了处理流量峰值的函数。随着调用数呈指数增加,函数会向上扩展。它为无法路由到可用实例的任何请求初始化一个新实例。当达到突增并发限制时,函数开始线性缩放。如果没有足够的并发数量来满足所有请求,其他请求将会受到限制并且应重试。


      达到突增限制后,并发数量线性缩放。额外的请求将被阻止。

图例

  • 函数实例

  • 打开请求

  • 可以限制

函数将继续扩展,直到达到函数区域对账户的并发限制。该函数能够满足需求,请求减少,并且在空闲一段时间后,函数的未使用实例会停止。未使用的实例在等待请求时会被冻结,且不会产生任何费用。

区域并发限制从 1,000 开始。您可以通过在支持中心控制台中提交请求,来提高限制。要在每个函数的基础上分配容量,可以使用预留并发配置函数。预留并发创建一个只能由其函数使用的池,并且还防止其函数使用非预留并发。

当函数扩展时,每个实例处理的第一个请求都会受到它加载和初始化代码所需时间的影响。如果初始化代码需要很长时间,则对平均延迟和百分位数延迟的影响可能很大。要使函数能够在延迟不发生波动的情况下进行扩展,请使用预配置并发。以下示例显示了一个具有处理流量峰值的预配置并发的函数。


      使用预配置并发进行扩展。

图例

  • 函数实例

  • 打开请求

  • 预配置并发

  • 标准并发

当您分配预配置并发时,函数即可以非常低的延迟处理突增的传入请求。当所有预配置并发都在使用中时,函数会正常扩展以处理任何其他请求。

Application Auto Scaling 通过为预配置的并发提供自动扩展来更进一步。使用 Application Auto Scaling,您可以创建目标跟踪扩展策略,该策略可根据 Lambda 发出的利用率指标自动调整预配置的并发级别。使用 Application Auto Scaling API 将别名注册为可扩展目标并创建扩展策略。

在以下示例中,函数根据利用率在预配置并发的最小数量和最大数量之间缩放。当打开请求的数量增加时,Application Auto Scaling 将大幅增加预配置并发,直到达到配置的最大数量。该函数继续扩展标准并发,直到利用率开始下降。当利用率持续较低时,Application Auto Scaling 将定期小幅减少预配置并发。


      使用 Application Auto Scaling 目标跟踪自动扩展预配置并发。

图例

  • 函数实例

  • 打开请求

  • 预配置并发

  • 标准并发

当您通过使用事件源映射或其他 AWS 服务异步调用您的函数时,扩展行为会有所不同。例如,从流中读取的事件源映射会受到流中分片数量的限制。事件源未使用的扩展容量可供其他客户端和事件源使用。有关更多信息,请参阅以下主题。

您可以通过使用以下指标监控账户中的并发级别。

并发指标

  • ConcurrentExecutions

  • UnreservedConcurrentExecutions

  • ProvisionedConcurrentExecutions

  • ProvisionedConcurrencyInvocations

  • ProvisionedConcurrencySpilloverInvocations

  • ProvisionedConcurrencyUtilization

有关更多信息,请参阅使用 AWS Lambda 函数指标