簡體   English   中英

慢貓鼬請求

[英]Slow Mongoose Requests

我一直在慢貓鼬查詢。 我將范圍縮小為Mongoose創建對象的方式或db服務器請求中的實際延遲。 我幾乎沒有數據庫中的任何數據(4個集合中的每個集合中的<1000個對象),並且手動運行了查詢(與產品中的查詢類似)並對它們進行了概要分析,它們都運行了2-4毫秒。

我無法通過在線搜索/查看文檔找出兩個大問題:

  1. 我如何獲得Mongoose在Mongo上運行的原始查詢?
  2. 一次db服務器執行了多少次旅行-例如,如果我在回調函數中有幾個填充調用,一個排序調用和一個嵌套的填充調用查詢,那么對該服務器進行了多少次旅行。

這是我看到的一些延遲時間:

Login
localhost + localDB = 58ms
localhost + mongoHQ = 127ms
heroku + mongoHQ = 287ms

Get Data
localhost + localDB = 281ms
localhost + mongoHQ = 1657ms
heroku + mongoHQ = 2190ms

更新1

我想出了如何記錄查詢並檢查了其中的一些查詢。 我認為它可以歸結為一個帶有大量填充調用的查詢-我注意到在生成查詢的填充部分時,Mongoose輸出一個Mongo查詢,例如:

users.find({ _id: { '$in': [ ObjectId("531ec0e17c0b16a82be4f506"), 
ObjectId("531ec0e17c0b16a82be4f506"), ObjectId("531ec0e17c0b16a82be4f506") ...

其中ID重復多次(在這種情況下為數百次)-我認為這是速度下降的原因,並測試了代碼,發現每次填充調用都會使請求時間增加約0.3s-.5s。 填充調用也在數組字段上運行-這還將查詢的ID數保持在100到1000(低)(重復)之間。

進行填充呼叫時,是否可以刪除重復的條目?

嘗試更改查詢以使用“精簡”選項,然后查看時間是否減少了。 這將繞過貓鼬實體的創建。

http://mongoosejs.com/docs/api.html#query_Query-lean

暫無
暫無

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

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