【发布时间】:2018-08-18 06:54:29
【问题描述】:
我在 Firebase 中有一个简单的云函数,它在 http POST 中获取 JSON 并将其保存到 Firestore 集合中。它分配了 512MB 内存。
这个云功能的性能很差。如果连续执行,往返时间为 200-600 毫秒,如果不经常执行(每 5-10 分钟),则可能需要 4-10 秒。我了解冷启动问题,但在 AWS 上,我从未见过如此缓慢或如此频繁的冷启动。
我的代码如下 - 如果您能深入了解如何提高性能,我将不胜感激。
'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);
【问题讨论】:
-
请记住,Cloud Functions 和 Cloud Firestore 都处于测试阶段,不提供性能保证。我敢肯定,如果您将性能与实时数据库进行比较,您会看到更好的数字。
-
感谢道格的回复。所以:(1)可以说这是测试版的正常表现吗? (2) 我正在做的事情是否导致它异常缓慢? (3) 是否可能影响冷启动?
-
@Doug Stevenson Firestore 已经过测试版,他们对此进行了改进吗?
-
我制作了一个小游戏,它使用云功能对用户数据进行转换,但周转时间很短。它从我的游戏中带走了“实时”方面。
-
你的考试已经过去九个月了。我想知道您是否可以重新运行一些代码并查看是否有冷启动问题?感谢您的文章。
标签: firebase express npm google-cloud-platform google-cloud-functions