Windows-Server-2008

監視使用 MSMQ 的電腦上的記憶體使用情況

  • September 4, 2014

基於這個執行緒,似乎 MSMQ 程序佔用大量可用記憶體是“正常的”,直到它受到記憶體壓力。

似乎大多數監控工具都基於工作集記憶體的記憶體使用情況。這包括我們目前使用的(New Relic),它使用了這個 powershell 查詢:

Get-WmiObject -Query "SELECT CommitLimit,CommittedBytes,AvailableBytes FROM 
Win32_PerfRawData_PerfOS_Memory"

任務管理器似乎也使用工作集記憶體作為其預設記憶體圖。

我們通常看到記憶體使用(基於工作集)飆升至 90% 及以上,根據上面連結的執行緒,這並沒有異常。

在使用 MSMQ 的機器上看到高記憶體使用是相當標準的嗎?監視這些機器的記憶體使用情況是標準做法嗎?

所有 Windows Vista+ 版本中的記憶體使用都設置為在記憶體中保留盡可能多的內容。這是最有效的方法,因為它可以防止從磁碟讀取數據,並且從 RAM 中刷新不需要的頁面比從磁碟填充這些頁面花費的時間要少得多。您看到的同樣問題適用於 MSSQL 伺服器、Exchange 以及任何其他需要大量 RAM 的東西,因為它們會在任何時候盡可能多地載入到 RAM 中。

如果您沒有看到與分頁操作(磁碟抖動)、其他應用程序中的記憶體不足錯誤或其他應用程序的性能問題有關的實際問題,您可以放心地忽略高記憶體使用。空 RAM 是不需要的 RAM。相反,如果您預計機器上的記憶體使用率很高,並且您看到使用率為零,則可能存在問題。

至於監控記憶體使用情況,如果您只監控使用的總 RAM,我將停止在高級別收到警報。保持對低 RAM 使用率的警報與對伺服器上的低 CPU 使用率警報相同,該伺服器具有在*空閒時將 CPU 保持在 20%(或其他)的應用程序。*如果您正在監視哪個應用程序正在使用多少記憶體,並且伺服器正在託管多個應用程序,您可能希望在沒有執行 MSMQ 的情況下測試您的其他應用程序,這樣您就可以準確表示如果給定它們將使用多少 RAM機會,並根據這些需求調整分配和監控。

在我們的組織中,我們已經停止監控所有伺服器上的高 RAM 消耗,我們預計這些伺服器的 RAM 使用率會很高;它只會觸發需要靜音的警報,並混淆合法警報。

這篇文章有一些關於如何在 Vista 中更改記憶體管理的高級資訊,從那時起記憶體管理器沒有發生重大變化,AFAIK。

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