并发
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 函数:gcloud CLI 或 Google Cloud 控制台。
- Cloud Run:gcloud CLI 或 Google Cloud 控制台。
使用 Cloud Run functions 设置并发
gcloud
您可以使用 gcloud CLI 通过使用 --concurrency
标志部署函数来设置并发值:
gcloud functions deploy YOUR_FUNCTION_NAME \ --gen2 \ --concurrency=CONCURRENCY_VALUE \ FLAGS...
其中 CONCURRENCY_VALUE 是每个容器实例允许的并发请求数上限。如果未指定并发,则接收服务器默认值。
控制台
如需使用 Google Cloud 控制台设置并发值,请执行以下操作:
- 前往 Google Cloud 控制台中的 Cloud Run functions 概览页面。
- 点击函数的名称以进入其函数详情页面。
- 点击修改。
- 展开页面末尾的运行时、构建... 部分,然后点击运行时标签页。
- 在并发下的每个实例的并发请求数上限字段中输入并发值。
- 点击下一步。
点击部署。
这是使更改生效的必要步骤。
使用 Cloud Run 设置并发
gcloud
如需使用 gcloud CLI 设置并发值,请更新底层 Cloud Run 服务并指定 --concurrency
标志:
gcloud run services update YOUR_FUNCTION_NAME --concurrency CONCURRENCY_VALUE
其中 CONCURRENCY_VALUE 是每个容器实例允许的并发请求数上限。如果未指定并发,则接收服务器默认值。
控制台
如需使用 Google Cloud 控制台设置并发值,请执行以下操作:
- 前往 Google Cloud 控制台中的 Cloud Run functions 概览页面。
- 点击函数的名称以进入其函数详情页面。
- 在标有由 Cloud Run 提供支持的窗格中,点击函数的名称以进入底层 Cloud Run 服务的服务详情页面。
- 点击页面顶部的修改和部署新修订版本。
- 打开容器标签页。
在标有每个实例的并发请求数上限字段中输入并发值。
如果您为每个实例的并发请求数上限提供的值大于 1,请向下滚动页面并打开容器部分。确保 CPU 字段包含 1 或更大的值。
点击部署。
这是使更改生效的必要步骤。
Cloud Run functions 基于 Cloud Run 提供的并发支持构建而成。如需了解详情,请参阅 Cloud Run 文档中的每个实例的并发请求数上限(服务)。