Windows

如何解釋正在執行的程序列表之外的 Windows Server 上的記憶體使用情況

  • July 1, 2009

我的 Windows 2003 Server 執行速度有點慢,其中送出費用和頁面文件使用量不斷增加,直到我最終重新啟動。為了解決這個問題,我需要找出消耗所有記憶體的原因,這就是最大的謎團所在。

來自任務管理器的目前統計資訊:

Physical Memory (K): 2096400
Commit Charge (K):   5364848
Page file usage:     5.11 GB

好的,讓我們打開SysInternals Process Explorer並檢查所有執行的工作集大小。最大的罪魁禍首是使用 121,980K WS、481,284K VM 大小的 Tomcat 實例。那裡沒有任何東西可以解釋 5 GB 送出費用。

下一步:SysInternals pslist : pslist -m,按列拆分輸出併計算報告的 61 個程序的列總和。

SUM (Working Set)  : 681,484 K
SUM (Private Bytes): 593,424 K

我是否從根本上誤解了這些工具所報告的內容?我一直認為作業系統實際上會送出比程序映射的全部虛擬記憶體少得多的記憶體,假設它實際上不會使用那麼多,並且在這裡查看 VM 是紅鯡魚。

JP,我相信您的評論是,這是一個自動建構/單元測試伺服器,執行的程式碼不是穩定的,這說明了一切。我的猜測是,該伺服器需要經常重新啟動,因為其上執行的不穩定程式碼可能存在記憶體洩漏,這會給您帶來您所看到的症狀。記憶體洩漏不會在任何正在執行的程序的程序樹上列出,因為它們是由不再存在的程序抓取的記憶體,並且仍然被分配,即使與它們關聯的程序早已不復存在。

獲得一個頻繁的維護視窗,以允許您自動重啟這台機器,可能是每晚、每週幾次或每週,具體取決於此行為開始表現出性能問題的速度。

不久前,我們在 Windoze 上有 Oracle 應用伺服器伺服器,需要每天重新啟動兩次。我們在午餐時間和每天的半夜踢出使用者。那是幾年前的事了,據說是來自 Oracle 的穩定生產程式碼。

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