并发

Cloud Run functions 支持在单个函数实例上处理多个并发请求。这对于防止冷启动很有帮助,因为已经预热的实例可以同时处理多个请求,从而减少整体延迟时间。

启用并发后,Cloud Run functions 不会在同一函数实例处理的并发请求之间提供隔离。在这种情况下,您必须确保您的函数代码可以安全地并发执行。请注意以下有关特定语言运行时的考虑事项:

  • Node.js 在本质上是单线程的。若要利用并发功能,请使用 JavaScript 的异步代码样式,该这是 Node.js 中的一种惯用样式。如需了解详情,请参阅 Node.js 官方文档中的异步流控制部分。

  • 我们建议您先从较低的并发数(例如 8)开始,然后再逐渐增加。从太高的并发设置开始可能会由于资源(例如内存或 CPU)限制而导致意外行为。

  • 对于 Python 3.8 及更高版本,如果要支持每个函数实例的高并发,就需要有足够的线程来处理并发。建议您设置运行时环境变量,使线程值等于并发值,例如:THREADS=8

默认情况下,函数实例一次仅处理一个请求。如需逐个更改函数的此行为,您可以设置并发值,如下一部分所示。

设置并发值

默认并发值为 1。您可以设置函数的并发值以覆盖默认值。并发值表示单个函数实例可以处理的最大并发请求数。

当并发值大于 1 时,函数代码会在单个实例上并发执行。最大并发值为 1000(不过,我们建议您从较低的值开始,逐渐增加)。如果将并发值设置为大于 1,则函数必须具有 1 个或多个 vCPU。请参阅默认内存和 vCPU 值内存限制

您可以通过以下任一方式为函数设置并发:

使用 Cloud Run functions 设置并发

gcloud

您可以使用 gcloud CLI 通过使用 --concurrency 标志部署函数来设置并发值:

gcloud functions deploy YOUR_FUNCTION_NAME \
--gen2 \
--concurrency=CONCURRENCY_VALUE \
FLAGS...

其中 CONCURRENCY_VALUE 是每个容器实例允许的并发请求数上限。如果未指定并发,则接收服务器默认值。

控制台

如需使用 Google Cloud 控制台设置并发值,请执行以下操作:

  1. 前往 Google Cloud 控制台中的 Cloud Run functions 概览页面
  2. 点击函数的名称以进入其函数详情页面。
  3. 点击修改
  4. 展开页面末尾的运行时、构建... 部分,然后点击运行时标签页。
  5. 并发下的每个实例的并发请求数上限字段中输入并发值。
  6. 点击下一步
  7. 点击部署

    这是使更改生效的必要步骤。

使用 Cloud Run 设置并发

gcloud

如需使用 gcloud CLI 设置并发值,请更新底层 Cloud Run 服务并指定 --concurrency 标志:

gcloud run services update YOUR_FUNCTION_NAME --concurrency CONCURRENCY_VALUE

其中 CONCURRENCY_VALUE 是每个容器实例允许的并发请求数上限。如果未指定并发,则接收服务器默认值。

控制台

如需使用 Google Cloud 控制台设置并发值,请执行以下操作:

  1. 前往 Google Cloud 控制台中的 Cloud Run functions 概览页面
  2. 点击函数的名称以进入其函数详情页面。
  3. 在标有由 Cloud Run 提供支持的窗格中,点击函数的名称以进入底层 Cloud Run 服务的服务详情页面。
  4. 点击页面顶部的修改和部署新修订版本
  5. 打开容器标签页。
  6. 在标有每个实例的并发请求数上限字段中输入并发值。

    如果您为每个实例的并发请求数上限提供的值大于 1,请向下滚动页面并打开容器部分。确保 CPU 字段包含 1 或更大的值。

  7. 点击部署

    这是使更改生效的必要步骤。

Cloud Run functions 基于 Cloud Run 提供的并发支持构建而成。如需了解详情,请参阅 Cloud Run 文档中的每个实例的并发请求数上限(服务)