配置预留并发 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置预留并发

在 Lambda 中,并发指您的函数当前正在进行的请求数。有两种类型的并发控件可用:

  • 预留并发 – 指分配给函数的最大并发实例数。当一个函数有预留并发时,任何其他函数都不可以使用该并发。为函数配置预留并发不产生任何额外费用。

  • 预置并发 – 指分配给函数的预初始化执行环境的数量。这些执行环境已准备就绪,可以立即响应传入的函数请求。配置预置并发会让您的 Amazon Web Services 账户 产生额外费用。

本主题详细介绍了如何管理和配置预留并发。有关这两种并发控制的概念概述,请参阅预留并发和预置并发。有关配置预置并发的信息,请参阅 配置预配置并发

注意

关联到 Amazon MQ 事件源映射的 Lambda 函数具有默认的最大并发数。对于 Apache Active MQ,最大并发实例数为 5。对于 Rabbit MQ,最大并发实例数为 1。为函数设置预留或预调配的并发不会更改这些限制。要在使用 Amazon MQ 时请求增加默认的最大并发数,请联系 Amazon Web Services Support。

配置预留并发

您可以使用 Lambda 控制台或 Lambda API 为函数配置预留并发设置。

为函数预留并发(控制台)
  1. 打开 Lamba 控制台的函数页面

  2. 选择要为其预留并发的函数。

  3. 选择 Configuration(配置),然后选择 Concurrency(并发)。

  4. 并发下,选择编辑

  5. 选择预留并发。输入要为该函数预留的并发数量。

  6. 选择 Save(保存)。

您最多可以预留的单位数量为非预留账户并发值减去 100。剩余 100 个单位的并发可用于不会使用预留并发的函数。例如,如果您的账户的并发上限为 1000,则不能将所有 1000 个单位的并发预留给单个函数。

如果您尝试预留过多并发,则会发生错误。

为一个函数预留并发会影响可用于其他函数的并发池。例如,如果您为 function-a 预留 100 个单位的并发,则即使 function-a 不使用所有 100 个单位的预留并发,您账户中的其他函数也必须共享剩余的 900 个单位的并发。

要有意限制函数,请将其预留并发设置为 0。这将停止函数处理任何事件,直到您删除限制。

要使用 Lambda API 配置预留并发,请使用以下 API 操作。

例如,要使用 Amazon Command Line Interface(CLI)配置预留并发,请使用 put-function-concurrency 命令。以下命令为名为 my-function 的函数预留 100 个单位的并发:

aws lambda put-function-concurrency --function-name my-function \ --reserved-concurrent-executions 100

您应该会看到类似如下输出:

{ "ReservedConcurrentExecutions": 100 }

使用 Lambda API 配置并发

如果您的函数当前正在提供流量,则可以使用指标轻松查看其并发CloudWatch 指标。具体而言,ConcurrentExecutions 指标显示了您账户中每个函数的并发调用数。

该图显示函数长期以来的并发。

前面的图表显示,在给定的任何时间,此函数平均处理 5 到 10 个并发请求,峰值通常为 20 个请求。假设您的账户中还有许多其他函数。如果此函数对您的应用程序至关重要,并且您不想丢弃任何请求,请使用大于或等于 20 的数字作为预留的并发设置。

请注意,您也可以使用以下公式计算并发

Concurrency = (average requests per second) * (average request duration in seconds)

将每秒的平均请求数与平均请求持续时间(以秒为单位)相乘可以粗略估计您需要预留多少并发。您可以使用 Invocation 指标估算每秒的平均请求数,并使用 Duration 指标估计平均请求持续时间(以秒为单位)。有关更多信息,请参阅使用 Lambda 函数指标