【问题标题】:Firebase Cloud Functions min-instances setting seems to be ignoredFirebase Cloud Functions 最小实例设置似乎被忽略了
【发布时间】:2021-10-26 05:22:57
【问题描述】:

Firebase 已于 2021 年 9 月宣布,现在可以通过某种方式配置其云功能自动缩放,以便始终运行一定数量的实例 (https://firebase.google.com/docs/functions/manage-functions#min-max-instances)。

我已尝试进行设置,但无法正常工作: 起初我在 Google Cloud Console 中设置了最小实例数:Cloud Console Screenshot 完成此操作后,我预计该云功能的一个实例将随时运行。该函数的指标表明它的实例仍被缩减为 0:Cloud functions "Active Instances Metric"

所以在我看来,我的设置在这里被忽略了。我错过了什么吗? Google Cloud Console 向我显示最小实例数已设置为 1,因此它似乎知道但忽略了它。此功能是否仅在某些地区可用?

我还尝试使用 Firebase SDK for Cloud Functions (https://www.npmjs.com/package/firebase-functions) 设置最小实例数。这给了我相同的结果,我的设置仍然被忽略。

【问题讨论】:

  • 能否重新部署功能再检查一遍或参考链接:ayrshare.com/a-firebase-cloud-functions-cold-start-solution 有用吗?
  • 好电话,我已经尝试重新部署该功能(我也尝试创建一个全新的功能)。在这两种情况下,指定数量的 min 实例都运行了一分钟左右。然后将它们缩小到 0。我还检查了函数日志,但到目前为止我找不到任何解释。
  • 发表了答案,有用吗?
  • 是的,谢谢 :)

标签: firebase google-cloud-functions cold-start


【解决方案1】:

根据Documentation,Active Instances 指标显示当前正在处理请求的实例数。

Documentation中所述:

Cloud Functions 通过创建函数的新实例来扩展。这些实例中的每一个一次只能处理一个请求,因此请求中的峰值很大 随着新实例的创建来处理需求,容量通常会导致更长的等待时间。

因为函数是无状态的,所以你的函数有时会从头开始初始化执行环境,这称为冷启动。冷启动可能需要 需要大量时间才能完成,因此如果您的应用程序对延迟敏感,我们建议您设置最少数量的 Cloud Functions 实例。

你也可以参考Stackoverflow thread那里已经提到了

设置 minInstances 并不意味着总会有那么多活动实例。最小实例保持空闲运行(没有 CPU > 分配),因此不计入活动实例。

【讨论】:

  • 感谢您的回答。我应该首先查看这些指标的确切定义:)(我有点困惑,因为在设置最小实例之后我的运行时间并没有真正减少。结果证明这是关于 firestore sdk 的问题) .
  • @ProfessorHackfred 你能详细说明firestore sdk问题吗?我已经设置了最小实例,但仍然感觉我的函数经历了一个冷启动。第一次调用可能需要大约 7 秒,然后大约需要 700 毫秒。
  • @JohnnyOshika 显然 Firestore Node.Js SDK 会引发一些糟糕的冷启动时间,这些时间无法通过使用“最小实例”设置来降低。有一个Github Issue(但它已被关闭而没有被修复)。最后a ticket 已经创建并且Google 支持似乎已经注意到了(没有修复它)。作为一种解决方法,增加函数内存可以加速这些冷启动(如问题对话中所述)。
  • @ProfessorHackfred 感谢您的链接。我不知道 Firestore SDK 和 Cloud Functions 存在各种问题。我需要花时间消化所有这些信息。您是如何解决冷启动问题的?
猜你喜欢
  • 2021-10-28
  • 2016-09-30
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 2017-12-05
  • 2012-03-08
  • 2015-12-11
相关资源
最近更新 更多