首页 > 解决方案 > 如何让 Google Cloud Functions 保持温暖?

问题描述

我知道这可能首先错过了使用 Cloud Functions 的意义,但在我的具体情况下,我使用的是 Cloud Functions,因为这是我可以将 Next.js 与 Firebase 托管连接的唯一方法。我不需要使它具有成本效益等。

话虽如此,Cloud Functions 的冷启动时间简直难以忍受,而且还没有准备好生产,我的样板文件平均大约需要 10 到 15

我看过 Google 的视频 ( https://www.youtube.com/watch?v=IOXrwFqR6kY ),它讨论了如何减少冷启动时间。简而言之:1) 修剪依赖项,2) 用于在 Google 网络上缓存的依赖项版本的试验和错误,3) 延迟加载。

但是 1)我可以修剪的依赖项只有这么多。2)我怎么知道哪个版本缓存更多?3)我可以延迟加载的依赖项只有这么多。

另一种方法是一起避免冷启动。有什么好方法或技巧可以让我的(一个也是唯一的)云功能保持温暖?

标签: google-cloud-platformgoogle-cloud-functionsnext.jsserverlessfirebase-hosting

解决方案


对于所有“无服务器”计算提供商,总会有某种形式的冷启动成本是您无法消除的。即使您能够通过 ping 单个实例来保持其处于活动状态,系统也可能会启动任意数量的其他实例来处理当前负载。这些新实例将具有冷启动成本。然后,当负载减少时,不必要的实例将被关闭。

正如您所发现的,有一些方法可以最大限度地降低冷启动成本,但这些成本无法消除。

自 2021 年 9 月起,您现在可以指定保持活动的最小实例数。这有助于减少(但不能消除)冷启动。阅读Google Cloud 博客文档。对于 Firebase,请阅读其文档。请注意,设置最小实例会产生额外的费用 - 保持计算资源处于活动状态不是免费服务。

如果您绝对要求热服务器 24/7 处理请求,那么您需要管理自己的 24/7 运行的服务器(并支付这些服务器 24/7 运行的成本)。如您所见,无服务器的好处是您无需管理或扩展自己的服务器,您只需为使用的内容付费,但您的项目相关的冷启动成本不可预测。这就是权衡。


推荐阅读