簡體   English   中英

Cloud Functions 中的 Firebase Firestore 冷啟動緩慢

[英]Slow Firebase Firestore cold starts in Cloud Functions

在冷啟動時(部署后或 3 小時后),從 Firestore 請求文檔的功能需要花費大量時間,這與快速使用時不同。

冷啟動:

Function execution took 4593 ms, finished with status code: 200

快速射擊(我一遍又一遍地使用相同的功能發送):

Function execution took 437 ms, finished with status code: 200

我獲取文檔的代碼非常簡單:

function getWorkspaceDocument(teamSpaceId) {
    return new Promise((resolve, reject) => {
        var teamRef = db.instance.collection('teams').doc(teamSpaceId);
        teamRef.get().then(doc => {
            if (doc.exists) {
                resolve(doc.data());
                return;
            }
            else {
                reject(new Error("Document cant be found"));
                return;
            }
        }).catch(error => {
            reject(new Error("Document cant be found"));
        });
    });
}

我正在嘗試制作一個 Slack 機器人,Firebase Firestore 的緩慢返回導致 Slacks API 超時。 Firebase 有沒有辦法阻止冷啟動的發生並讓它持續下去?

如果雲功能需要啟動新實例,則冷啟動時間似乎很正常。 這是無服務器功能的一個缺點。

我認為您的實施存在問題。 您能顯示更多詳細信息嗎?

這是關於這個主題的漂亮的小視頻: https : //youtu.be/v3eG9xpzNXM

我建議檢查的另一件事是分配給特定函數的內存量。 選擇的每個級別不僅會增加 RAM,還會增加 CPU 頻率(以及成本,請小心,不要忘記定價計算器!)。 函數的包大小與冷啟動之間存在直接依賴關系(來源: https : //mikhail.io/serverless/coldstarts/gcp/ )。

我可以看到您正在使用 Firestore 管理包,它不被認為是輕量級的(來源: https : //github.com/firebase/firebase-admin-node/issues/238 )。 因此,128MB 的配置可能還不夠。

對於我們的項目,將 RAM 從 128MB 增加到 512MB,將冷啟動時間從 20 秒平均減少到 2.5 秒,減少了 10 倍。 如果您有多個依賴項(在我們的示例中為 7),請務必不要忽略這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM