Firebase功能可以减慢冷启动时间

时间:2018-01-16 11:27:17

标签: firebase google-cloud-platform google-cloud-functions

我读here端点旋转应该是透明的,我认为冷启动时间不应该与常规执行时间不同。这仍然是这样吗?在所有端点上,我们的冷启动时间非常缓慢且无法使用 - 大约16秒。

冷启动: Function execution took 16172 ms, finished with status code: 200 后:Function execution took 1002 ms, finished with status code: 304

这是预期的行为吗?可能是什么原因造成的?

2 个答案:

答案 0 :(得分:4)

更新:冷启动时间似乎不再是节点8的问题,至少对我而言。我将在下面留下我的答案给任何对通过App Engine通过cron任务保持其功能温暖的人感到好奇。但是,还有一种新的cron方法可以让它们更容易保暖。 See the firebase blog for more details about cron and Firebase

我的冷启动时间非常荒谬,浏览器将等待请求超时。 (就好像它正在等待Firestore API完成)。

示例 用于创建新用户帐户的函数( auth.user()。onCreate trigger ),然后在firestore中设置用户配置文件。

  • 首次部署后启动:始终在30到60秒之间,经常在冷时第一次尝试时出现“连接错误”(这是在Firebase CLI说“部署完成后等待几秒钟后” !“
  • 冷启动:10 - 20秒
  • 温暖时:所有这一切都在大约400毫秒内完成。

可以想象,没有多少用户可以等待超过几秒钟来设置帐户。我不能让这种情况在后台发生,因为它是应用程序进程的一部分,需要配置文件设置来存储输入数据。

我的解决方案是为我的所有API添加“ping”功能,并创建一个类似cron的调度程序任务,每分钟使用app引擎ping我的每个函数。

确保ping功能可以执行某些操作,例如访问firestore文档或设置新的用户帐户,而不仅仅是响应http请求。

请参阅本教程了解应用引擎排程:https://cloud.google.com/appengine/docs/flexible/nodejs/scheduling-jobs-with-cron-yaml

答案 1 :(得分:0)

嗯,这是关于云功能的资源使用我想,我也在那里。当您的功能闲置时,云功能也会释放其资源,首先调用它重新分配这些资源,然后在第二次调用时您就可以了。我不能说这是好事,但事实就是如此。