为什么我们在 Firebase 可调用函数/谷歌云函数上突然收到“函数执行花费了 60000 毫秒,完成状态:'错误'”?

Mut*_*ion 5 firebase google-cloud-functions

我们的应用程序自 3 月 22 日起投入生产。它利用 Firebase 可调用函数。函数的执行一直完美无缺,直到 3 月 28 日突然,我们开始观察到许多失败的执行在云函数日志中收到以下调试消息Function execution took 60000 ms, finished with status: 'error'

虽然同一函数的某些执行失败,但其他函数却照常运行,平均完成时间为 250 毫秒。

在检查云平台基础设施状态时,没有任何迹象表明任何中断或任何其他问题。

例如我们有一个非常简单的函数:

 exports.getAccommodations = functions
  .region('asia-east1')
  .https.onCall(async (data, context) => {
    functions.logger.warn(`V3 STARTED`);
    // load some collection from firestore here and return it
  });
Run Code Online (Sandbox Code Playgroud)

请注意,该函数的第一行正在创建一个日志警告条目。我们能够观察到以下情况:

  • 对于出现上述错误消息的失败执行,没有 log.warn 条目。
  • 对于成功的执行,总是有一个相应的 log.warn 条目。

换句话说,看起来执行失败,甚至懒得执行函数体。我们在失败案例中看到的都是Function Execution started后面跟着的Function execution took 60000 ms, finished with status: 'error'

这些是我们的日志,证实了我们的观察:

  • 当过滤失败案例时:(resource.type="cloud_function" ) OR (resource.type="cloud_run_revision" ) textPayload="Function execution took 60000 ms, finished with status: 'error'我们得到:这张失败图表

  • 列出所有执行时(resource.type="cloud_function" ) OR (resource.type="cloud_run_revision" )我们得到:这张执行图表

请注意,在问题开始出现时我们尚未部署任何内容。

小智 3

看到同样的问题,大多数调用最终都会带有状态代码408,并且延迟比我们通常看到的要高得多。

认为这与此有关,其措辞非常广泛:

摘要:Google Cloud Networks 在多个区域出现延迟升高的情况

https://status.cloud.google.com/incidents/nieR2aLyg1rwFKq1aWZU#2c2sBHWU84yPDJ8y1ar4

  • 确认:网络问题现在似乎已解决,自 12 点左右以来我们这边不再出现错误。 (2认同)