2gen Google Cloud Functions CPU 分配

问题描述 投票:0回答:1

我已将触发 Google Cloud Function 的事件迁移到第 2 代,但我遇到了很多问题。该函数负责使用 Puppeteer 打印 PDF。我已经解决了与 Puppeteer 安装相关的所有问题,并设法在所有异步函数之前添加等待,以便在移动到下一个任务之前等待每个辅助任务的终止。

即便如此,我还是遇到了调用渲染 Handlebars 模板的函数需要 1 分钟以上的时间,而第 1 代版本需要 0.5 秒。这是一个同步操作。随后调用 Puppeteer 进行 PDF 打印失败了。

现在我找到了一个解决方案,通过在 Cloud Run 中打开“CPU 始终分配”标志,但我担心它可能太昂贵,并且不明白为什么它不能作为 1gen 功能工作。 我已将每个实例配置为接收不超过 1 个请求。当收到更多请求时我应该期待什么?每个人都会冷启动一个新实例吗?每个实例会持续多长时间?如果没有收到流量,实例是否会自动终止?如果是这样,“CPU 总是分配”是什么意思?

google-cloud-functions google-cloud-run
1个回答
0
投票

当收到更多请求时我应该期待什么?每个人都会冷启动一个新实例吗?

是的,这就是托管无服务器后端的工作原理。有关详细信息,请参阅文档

每个实例会持续多长时间?

只要云提供商希望它们能够持续下去。你不需要配置它。您允许云提供商做出正确的决定。

如果没有收到流量,实例是否会自动终止?

是的,这就是托管无服务器后端的工作原理。

如果是这样,“CPU 总是分配”是什么意思?

文档开始:

默认情况下,Cloud Run 实例仅在请求处理、容器启动和关闭期间分配 CPU。 (请参阅实例生命周期)。您可以更改此行为,以便即使没有传入请求,CPU 也始终被分配并可用。将 CPU 设置为始终分配对于运行短期后台任务和其他异步处理任务非常有用。

文档建议,当服务器实例上当前没有正在处理的请求时,可以关闭该实例的 CPU,这是为了节省时间和资源。

© www.soinside.com 2019 - 2024. All rights reserved.