Mongodb

mongod 非映射虛擬記憶體突然翻倍,從此沒變

  • December 19, 2013

我們的 mongo primary的non-mapped virtual memory統計數據一直是不變的,在昨天之前我們從未考慮過。昨天,來自設計不佳的查詢的一系列意外全集合掃描導致速度大幅下降,其中mongod程序使用 100% CPU,每個查詢都需要數十秒。

將有問題的查詢解除安裝到我們的輔助伺服器後,性能問題消失了,但未映射的虛擬記憶體增加了一倍多,此後一直沒有下降。它曾經保持在大約600MB; 現在大約在1.4GB. 這種增長是立竿見影的,而且與經濟放緩完全相關,而且從那以後就完全沒有改變。

連接的數量自始至終都是完全恆定的,所以我們可以確定不是這樣。

什麼可能導致這種情況?這是個問題嗎?我們應該擔心嗎?

在 EC2 實例上的 Ubuntu 12.04 64 位上執行。

因為虛擬記憶體實際上是免費的,所以沒有人會費心清理它或盡量減少它的使用。只要居民集大小合理,我就不會擔心。

答案是視情況而定,但這似乎不是問題,如果這是您看到的唯一行為,您不必太擔心。

MongoDB 中的儲存級別使用記憶體映射文件,因此使用的總虛擬記憶體可以是磁碟上所有數據庫數據的大小。

系統上的常駐記憶體將代表 MongoDB 使用的實際工作集,並且根據您的使用/訪問模式,它通常會隨著時間的推移而增長到您主機上的總物理 RAM。作業系統只會在它看到需要時將這些數據分頁出去,否則它只會保持原狀(它對數據使用最近最少使用/LRU 和最不常用/LFR 方法)。由於 MongoDB 在虛擬記憶體空間中維護兩個常駐記憶體視圖,因此虛擬記憶體使用率將以常駐記憶體使用率的兩倍多一點的速度增長。

當 MongoDB 重新啟動時,它會從頭開始,並為您的工作數據集指定一個特定的時間框架,並定期、可預測地使用,您應該可以很好地表示您的工作集大小(以 RAM 為單位)。

MongoDB 的文件包含一些有助於描述它如何使用記憶體的更多資訊:http: //docs.mongodb.org/manual/faq/storage/#faq-storage-memory-mapped-files

此處介紹了 MongoDB 儲存層的更深入技術視圖: http ://www.mongodb.com/presentations/understanding-mongodb-storage-performance-and-data-safety

引用自:https://serverfault.com/questions/556889