![使用者登入 2008 Windows 伺服器需要一分多鐘的時間。 LSM.exe 在 100MB+ 記憶體下運行](https://rvso.com/image/515683/%E4%BD%BF%E7%94%A8%E8%80%85%E7%99%BB%E5%85%A5%202008%20Windows%20%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%9C%80%E8%A6%81%E4%B8%80%E5%88%86%E5%A4%9A%E9%90%98%E7%9A%84%E6%99%82%E9%96%93%E3%80%82%20LSM.exe%20%E5%9C%A8%20100MB%2B%20%E8%A8%98%E6%86%B6%E9%AB%94%E4%B8%8B%E9%81%8B%E8%A1%8C.png)
我們有一個運行遠端桌面的 64 位元 Windows Server 2008。
應用程式 lsm.exe(本機會話管理器)似乎正在洩漏記憶體。儘管伺服器重新啟動時記憶體使用率非常低,但記憶體使用率會繼續攀升,直到人們無法再登入。
伺服器沒有音效卡,也沒有安裝任何AV軟體。此伺服器已提供全面的服務。 (服務包 2)
它有 8GB 記憶體。 60 個使用者經常使用它。似乎沒有相關的事件日誌訊息。登入不會啟動資源管理器。它啟動一個“login.vbs”腳本。此登入腳本建立了多個 wsShell 和 wScript.Network 對象,但即使我將它們註解掉,我仍然會得到相同的行為。 (注意 - 我將 .vbs 腳本替換為可執行檔。沒有區別)
安裝了多個應用程序,但唯一值得注意的是:perfectbackup - 一種基於 java 的備份解決方案。
當人們登入/登出遠端桌面時,似乎會發生記憶體洩漏。例如,登入會將lsm 記憶體大小從21,180K 變更為21,512K。註銷會將使用量從 21,512K 更改為 12,668K。稍後可能會下降,但總體趨勢是向上的。另外 - 如果我多次登入/退出,這會上升得更快,並且會保持不變。
可能是什麼原因造成的?
答案1
您的計算機上通常有多少個活動會話?如果使用者斷開會話而不是註銷,則可能會導致您所看到的問題。我見過解決此問題的一件事是強制斷開連接的會話在短時間不活動(1 到 2 小時)後註銷 - 這在過去為我解決了此類問題。
答案2
也許因為您使用的是非 Windows shell,您實際上並未正確登出終端伺服器。強制斷開連線可能還不夠?
嘗試在腳本末尾新增:
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\.\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("SELECT * FROM Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Win32Shutdown(4)
Next
只是一個瘋狂的猜測(是的 4 是強制註銷(http://msdn.microsoft.com/en-us/library/aa394058%28VS.85%29.aspx)
答案3
這看起來可能與您遇到的問題有關:
雖然伺服器沒有音效卡,或許這可能涉及 RDP 的遠端音訊播放功能。
您應該嘗試在連接到終端伺服器時停用遠端音頻,並查看記憶體洩漏是否消失。
另外,您還應該採取額外的故障排除步驟:這種情況是在本機登入伺服器控制台時發生,還是僅在使用終端伺服器時發生?
答案4
在微軟論壇上找到了以下內容。
「XP/2003 終端會話管理器需要每隔幾個小時關閉一次。這會重置lsm.exe 記憶體佔用。我們使用SCOM 監視lsm.exe 記憶體使用情況,當我們關閉ts 管理員時,我們發現記憶體使用情況立即下降XP 或 2003。2008 ts 管理器似乎不會導致此問題。