【问题标题】:Why would a Firebase Cloud Function be much slower once deployed than in the emulator, other than cold starts?为什么 Firebase Cloud Function 部署后会比在模拟器中慢得多,除了冷启动?
【发布时间】:2021-06-09 04:30:09
【问题描述】:

我有一个 Firebase 云函数,它可以解析一些 HTML 等内容。我已经测量了 HTML 解析方法本身,它在 MacBook Pro 上的模拟器中大约需要 300 毫秒。部署到 Firebase 时似乎需要大约 4-8 秒,这对于我的应用程序来说不是可以容忍的持续时间。

我正在使用 Dart 使用 firebase_functions_interop 编写我的 Firebase 云函数,并使用 Dart2JS 编译为 JS。在不同环境之间执行截然不同的方法实际上是 Dart 内置的 HTML 解析方法。我知道冷启动是云功能花费比预期更长的一个常见原因,但这似乎不是罪魁祸首,因为我明确测量了解析 HTML 所需的时间,这就是我看到巨大区别。

在生产环境中 Cloud Function 的运行速度是否会比在 MacBook Pro 上慢很多?

【问题讨论】:

  • 看看你的云函数的代码就好了:正确管理CF生命周期可能是性能的关键。
  • 你测试了多少次?如果只是一次可能是由于冷启动......

标签: firebase dart google-cloud-functions dart2js


【解决方案1】:

在部署 Firebase 云功能时,您可以自定义 runtime environment。但是在这里,没有CPU容量。如果您查看Cloud Function documentation directly(Firebase Cloud Functions 由 Google Cloud Functions 支持),您可以看到内存数量和 CPU 能力之间的相关性。

注意:4Gb 内存 = 2CPU @2.4Ghz,而不是 1 CPU(一个线程)@4.8Ghz

现在,使用 2Gb 内存部署您的 Firebase Cloud Function,速度应该会更好(默认为 256Mb)。但请记住这一点:Cloud Function 是单核 CPU,并且限制为 2.4Ghz。您的 macbook pro 应该有 8 或 16 个 CPU,并具有 3.4Ghz 的处理能力。

【讨论】:

  • 这产生了巨大的变化。在 4-8 秒内解析的 HTML 文档现在已降至 250 毫秒左右。我不知道您可以(间接)配置 CPU 容量!感谢您提供信息。
猜你喜欢
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2012-08-22
  • 2022-12-12
相关资源
最近更新 更多