首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Firebase函数-查询修复时响应缓慢

Firebase函数-查询修复时响应缓慢
EN

Stack Overflow用户
提问于 2018-03-09 16:33:26
回答 1查看 4.2K关注 0票数 33

我在Firebase中有一个简单的云函数,它在http POST中接受JSON,并将其保存到Firestore集合中。它被分配512 It内存。

这个云功能的性能非常差。如果连续执行,往返时间从200到600 it不等,如果很少执行(每5-10分钟一次),则需要4-10秒。我理解冷启动问题,但在AWS上,我从未见过冷启动如此缓慢,也从未见过如此频繁。

下面是我的代码--我想了解一下如何提高性能。

代码语言:javascript
运行
复制
'use strict';

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const db = admin.firestore();

const express = require('express');
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// CORS Express middleware to enable CORS Requests.
const cors = require('cors');
app.use(cors({ origin: true }))

app.post('/submitResponse', (req, res) => {
  console.log('/submitResponse');

  if (!req.body.info)
    res.status(422).send()

  const payload = req.body.info;
  console.log(payload);

  const responses = db.collection("responses")

  responses.add({
    payload: payload,
    timestamp: admin.firestore.FieldValue.serverTimestamp()
  }).then(function(docRef) {
    console.log("Response written with ID: ", docRef.id);
    res.status(200).send(JSON.stringify(docRef.id))
  })
  .catch(function(error) {
      console.error("Error adding document: ", error);
  });
});

exports.app = functions.https.onRequest(app);
EN

回答 1

Stack Overflow用户

发布于 2018-12-28 07:36:22

要解决一些评论问题:在编写本报告时,用于Firebase的云修复实际上仍处于beta中。

但在这种情况下,Firestore可能不是罪魁祸首。云函数的冷引导时间很可能会掩盖您正在进行的任何数据库操作。

无论何时,云函数都需要时间来划分新实例。

  1. 部署新功能/第一次调用
  2. 实例已被回收
  3. 扩展以处理负载(请求访问新实例)

有一个关于云功能性能的章节,它提到了您可以通过最小化模块依赖而获得的潜在收益。

因为函数是无状态的,所以执行环境通常是从头开始初始化的(在所谓的冷启动期间)。当发生冷启动时,将计算函数的全局上下文。 如果您的函数导入模块,那么这些模块的加载时间会在冷启动期间增加调用延迟。通过正确加载依赖项而不加载函数不使用的依赖项,可以减少此延迟以及部署函数所需的时间。

还可以查看关于该主题的云性能地图集视频中提到的一些技巧,如:

  • 减少库依赖
  • 使用更多(大多数)流行版本的包,因为它更有可能已经被缓存。
  • 延迟加载在引导时不重要的模块

在库依赖的情况下,最低挂起的结果是摆脱那些可以实现自己和/或只使用一个或几个函数但需要整个库的依赖关系(我正在查看您,霍达什)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49198208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档