我一直在非常緩慢的貓鼬查詢。我將它縮小到Mongoose創建對象的方式或數據庫服務器請求中的實際延遲。我幾乎沒有數據庫中的任何數據(< 1000個對象在每個集合中),並手動運行查詢(類似於產品中的查詢)並對它們進行配置,並且它們都在2-4毫秒運行<。緩慢的貓鼬請求
兩個大的問題,我一直無法通過網上搜索/看文檔弄清楚:
- 如何獲取貓鼬是在蒙戈運行原始查詢?
- 調用數據庫到數據庫服務器的次數 - 例如,如果我在回調函數中有一對包含調用對象,排序調用和嵌套填充調用的查詢,那麼會對服務器執行多少次調用。
這裏有一些延遲時間我看到的:
Login
localhost + localDB = 58ms
localhost + mongoHQ = 127ms
heroku + mongoHQ = 287ms
Get Data
localhost + localDB = 281ms
localhost + mongoHQ = 1657ms
heroku + mongoHQ = 2190ms
更新1
我想通了,如何記錄查詢和檢查上一羣人。我認爲它灌進一個查詢與一羣上填入電話 - 我注意到,在生成查詢的人口部分,貓鼬輸出Mongo的查詢,如:
users.find({ _id: { '$in': [ ObjectId("531ec0e17c0b16a82be4f506"),
ObjectId("531ec0e17c0b16a82be4f506"), ObjectId("531ec0e17c0b16a82be4f506") ...
,其中,ID重複多時間(在這種情況下是幾百次) - 我認爲這是放緩和測試代碼的原因,我發現每個填充調用都會將約.3s-.5s添加到請求時間。填充調用也在一個數組字段上運行 - 這也保證了在100s內查詢的id數 - 低1000(重複)。
有沒有辦法刪除重複的條目時做一個填充調用?
你能與蒙戈控制檯連接到其中一個實例,看看它們是緩慢的直接連接時?我無法想象,你發佈的時代不能用貓鼬的對象人口來解釋,除非它有數萬人。 – WiredPrairie
@WiredPrairie它似乎很好 - 當我運行登錄用戶測試(見上文)時,連接到遠程分區時速度非常快127ms –
@WiredPrairie我做了一些調查,你認爲這可能是因爲有很多填充調用中的參數? –