[英]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.