2016-07-28 44 views
0

我們的CentOS-07服務器內存使用率高達mongodb,它有64 GB的RAM。這是一個獨立的mongodb實例,它沒有任何應用程序運行並且有管理腳本的功能只能保留相關數據。我們沒有索引數據。磁盤上的數據總大小爲81千兆字節。在我們嘗試啓用複製之前,沒有看到這個問題,因爲節點設置已經使用高內存,所以被禁用,然後我們提出了一個新的獨立的mongo實例。從我們嘗試重新啓動mongo服務器開始,內存使用情況一直沒有下降,但沒有奏效。是否有任何理由讓mongodb使用這麼多內存?下面是一個鏈接,指向使用的mem使用情況的快照來自站點服務器。 蒙戈版本是2.6.5mongodb內存使用突然激增

Image link

回答

0

這並不奇怪。見Memory Use節中的文檔的MMAPv1存儲引擎(這是MongoDB的2.6用途):

隨着MMAPv1,MongoDB的自動使用所有可用內存的機器作爲它的緩存上。系統資源監視器顯示MongoDB使用大量內存,但它的用法是動態的。如果另一個進程突然需要一半的服務器RAM,MongoDB會將緩存的內存緩存到另一個進程。

在啓用複製之後,用法刺激也就不足爲奇了,因爲它聽起來像您擁有完全填充的數據庫,然後添加了副本成員。這意味着副本成員需要執行來自該節點的數據的初始同步,這將需要讀取每個將「引發」MongoDB緩存的文檔。

+0

服務器現在只是一個獨立的mongo實例,就像在啓用複製之前一樣。服務器然後沒有任何內存問題,但啓用和禁用複製並使其成爲mongo的獨立實例後,我們看到內存突然激增,並導致服務器不斷重新啓動,即使在複製成員上使用兩天後,內存使用率也沒有下降,這就是爲什麼我們禁用複製並使每臺服務器成爲獨立實例的原因的mongo。 –

+0

「它導致服務器不斷重啓」 - 現在我們遇到了真正的問題。你看我想說的是,MongoDB通常會使用它所能存儲的所有內存。單獨運行時沒有看到內存高的事實並不完全相關。最終,即使獨立使用,內存使用量也應該增加。 你在同一臺服務器上運行多個mongod嗎?你在Windows上運行嗎?你在mongod服務器上運行其他進程嗎? – helmy

+0

如果是linux,它可能是OOM殺手,你需要配置一些交換。請參閱https://docs.mongodb.com/manual/administration/production-notes/#swap – helmy