當我嘗試從(微)計算引擎查詢Google Cloud Datastore時,通常需要> 800ms才能獲得答覆。我得到的最好是450ms,最差的是> 3秒。Google雲數據存儲緩慢(> 800ms),使用來自計算引擎的簡單查詢
我的印象是延遲應該大大低於20-80ms,所以我猜測我做錯了什麼。
這是我使用的查詢(從一個簡單的數據存儲只是一個單一的實體)的(node.js的)代碼:
const Datastore = require('@google-cloud/datastore');
const projectId = '<my-project-id>';
const datastoreClient = Datastore({
projectId: projectId
});
var query = datastoreClient.createQuery('Test').limit(1);
console.time('query');
query.run(function (err, test) {
if (err) {
console.log(err);
return;
}
console.timeEnd('query');
});
不知道,如果是相關的,但我的應用程序引擎項目在美國中部地區,我正在運行查詢的計算引擎。
UPDATE
一些更多的測試後,我發現該默認認證(標誌?),你使用谷歌提供的Node.js的庫時獲得約4分鐘後過期。換句話說:如果使用相同的進程,但在請求之間等待4分鐘或更長時間,則查詢時間會回到> 800ms。
我也嘗試使用密鑰文件進行身份驗證,而且似乎做得更好:後續請求仍然更快,但初始請求只需要一半的時間(> 400毫秒)。
你可以嘗試計時額外的請求?第一個API請求會爲驗證令牌獲取帶來一些開銷。 – Stephen
不要只通過一次通話測試性能。將它包裝成一個循環,做很多並記錄每個時間,然後您可以查看平均值,P50,P90,P95等。 –
感謝您的評論!實際上,循環查詢可以非常清楚地瞭解第一個查詢與連續查詢的性能。 第一個查詢> 800ms,後續查詢對於簡單查詢<100ms,對於更復雜的查詢則小於250。 不過,我的用例是一個頁面請求後的單個查詢。有什麼方法可以加速第一個請求?我應該創建一個經過驗證的長時間運行的進程並按需獲取數據? – Reynaerde