2016-08-14 85 views
0

在高峯時間,我的網站的MongoDB響應速度非常慢,我試圖找出原因。一個查詢,我認爲可能是罪魁禍首是這樣的(從流星應用程序):

Players.find({_id: {$in: playerIds}});

playerIds是15個唯一的字符串數組。 Players系列中有600名左右的球員,_id領域有一個索引。

是否有更快的方式來執行此查詢?有沒有一種方法來重組數據庫以使其更快?這甚至看起來像是有問題的查詢,還是最可能出現在其他地方的問題?

+0

可以分享mongodb的解釋輸出以更好地理解這一點嗎? – user641887

+1

像卡迪拉這樣的工具可以提供一些見解,你不需要推測。爲什麼不使用這樣的東西? – MasterAM

+3

$只有15個輸入的_id應該非常快。首先檢查您的mongo日誌文件以查找長時間運行的查詢,並確認此查詢實際上是罪魁禍首。 – mtj

回答

0

在問題中提到的查詢是快速的,沒有必要做任何事情。

0

我也經歷過這些線路,我發現了一些真正有用的東西(我希望它有幫助)。

mup/mupx:如果你正在使用mup/mupx做類似於EC2的東西,Mongodb的老版本在docker中特別慢(特別是)。我建議你在服務器上安裝Mongodb 3.2,然後將Mongodb地址插入env

如mongo_URL:'mongodb:使用本地地址發現比使用全球地址更快(如果你想分片,最好的做法)。

Funny Futures:當未解決的http調用一直在等待未來時,我的內存泄露非常大。這反過來使mongodb客戶端花費近90秒來完成一項簡單的任務。所以它實際上可能不是mongodb,請檢查所有代碼並確保方法不會花太長時間。