2014-10-10 111 views
0

基本上,我有一個執行批處理作業的Windows服務。MongoDB服務器上的讀取速度非常慢

我有兩個相關的集合,customerAccounts和events。事件收集記錄客戶在網站上執行的操作,包含時間戳,事件名稱,發生的頁面和用戶名。

該服務貫穿每個帳戶,根據他們在Events集合中具有的事件和一組用戶定義的規則,計算他們的旅程階段和帳戶關閉風險。

目前我的數據庫中約有3,500個帳戶和約100,000個事件。該服務僅需1分鐘即可在我的開發PC上運行,但需要永遠在服務器上運行(根據修改服務,我估計需要大約2.5小時,因此它只能在單個客戶帳戶上執行此項任務。)

我的機器是一個Core i7,內存爲16GB,服務器是Intel Xeon E5-2609(64bit,Win 2008 R2),內存爲24GB,我把數據庫放在一個更舊的服務器上(32bit,Windows 2003),服務大概需要2分鐘才能運行,所以我知道在我的開發計算機上只需要一分鐘,而在較舊的服務器硬件上花費的時間只有2分鐘,但在現代服務器上需要花費幾個小時的時間。

最初,Mongo Shell警告說服務器上啓用了NUMA,應該關閉以避免pe性能問題。這已被關閉,但似乎沒有影響性能。

當我運行db.currentOp();在服務器上,我注意到它總是有一些查詢「createIndexes」(索引是在很久以前創建的),但是當我將數據庫恢復到我的開發機器並運行service/currentOp時,「 createIndexes「查詢不存在。除此之外,沒有別的東西似乎跳出來對我。

有沒有人對這個神祕的性能問題有任何想法/幫助?如果需要,我會發布currentOp/mongostats。

回答

0

快速回答:我重新安裝了Mongo。沒有花哨的配置,只是運行設置,它解決了問題。

我從來沒有搞清楚爲什麼Mongo會不斷創建索引。對於「創建索引」的事件日誌,日誌文件爲0.25GB。