2012-10-23 68 views
3

我想了解一個MongoDB內存使用模式,我在我們的MMS日誌中看到。MongoDB駐留內存尖峯,映射內存消失

通常情況下,常駐內存大約爲3GB,虛擬內存穩定在84GB,映射內存大約爲41GB。然後在一系列的高峯和低谷中,通常只有幾分鐘,映射內存完全消失,虛擬內存下降到41GB左右,駐留內存41GB或尖峯到84GB。然而在最近一集中,高峯和低谷持續了3.5個小時。

mongodb memory peaks and troughsmongodb memory peaks and troughs detail

的MongoDB似乎正常運行和其他指標,如opcounters和網絡都正常,但圖形突然急劇變化時,有不可能成爲一個顯著負荷變化讓我...好奇。

這是一個運行MongoDB 1.8.3的獨立實例。

典型的內存使用情況,不發作時(我只找到了較長的小插曲,因爲它是結尾):

$ free -m 
      total  used  free  shared buffers  cached 
Mem:   32176  31931  245   0  628  29449 
-/+ buffers/cache:  1854  30322 
Swap:   1983   0  1983 

是什麼原因造成的?

回答

3

MMS通過讀取/ proc/$ PID/stat從操作系統獲取內存統計信息。虛擬和駐留內存的波動是報告錯誤,並且可以安全地忽略。

(如果你將鼠標懸停在尖峯,你會發現,他們出現在映射內存,或駐留內存時1或3 stats-虛擬內存的2倍 - 是缺少...)

+0

好, 謝謝。任何想法可能會導致延長的報告錯誤? – michaeltwofish

+1

如果我不得不冒出一個猜測,那就是MMS開始以重疊/與日記沖刷同步的速率輪詢數據,影響一個或多個內存統計。個別統計信息的解析存在缺陷,當未報告3個統計信息中的一個或多個時,波動似乎與MMS圖上的點相關聯。我將不得不做更詳細的調查以確定錯誤的確切原因。 – Jenna