用户花费一分钟时间login到2008年的Windows服务器。 运行在100MB +内存的LSM.exe

我们有一个运行远程桌面的64位Windows Server 2008。

应用程序lsm.exe(本地会话pipe理器)似乎在泄漏内存。 尽pipe重新启动服务器时,内存使用量非常低,但这种情况还是会持续上升,直到人们无法再login。

服务器没有声卡,没有安装任何AV软件。 服务器完全服务包装。 (Service Pack 2)

它有8GB的内存。 60个用户经常使用它。 似乎没有相关的事件日志消息。 login不启动资源pipe理器。 它启动一个“login.vbs”脚本。 这个login脚本创build了几个wsShell和wScript.Network对象,但是即使我评论这些,我仍然得到相同的行为。 (注意 – 我将.vbs脚本换成可执行文件,没有区别)

安装了多个应用程序,但唯一需要注意的是:perfectbackup – 基于java的备份解决scheme。

内存泄漏似乎发生在用户login/注销远程桌面时。 例如,login将会将lsm的内存大小从21,180K改为21512K。 注销将使用量从21,512K改为12,668K。 这可能会晚一些,但总体运动是向上的。 另外 – 这会更快,如果我login/注销几次,熬夜。

有什么可能导致这个,我将如何解决?

您的计算机上一般有多less个会话? 如果用户正在断开他们的会话,而不是注销,这可能会导致您遇到的问题。 有一件事我已经看到,解决这个问题的方法是强制断开连接的会话,在短暂的不活动(1到2小时)之后退出 – 这对我来说已经解决了这个问题。

也许是因为你正在使用一个非Windows的shell,你实际上没有正确注销terminal服务器。 强制断开连接可能不够?

尝试添加到脚本的末尾:

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 )

这看起来可能与您遇到的问题有关:

http://www.windows-now.com/blogs/kmkenney/archive/2007/05/21/workaround-for-lsm-exe-handle-and-memory-leak.aspx

尽pipe服务器没有声卡,但是这可能涉及到RDP的远程audio播放function。

连接到terminal服务器时,应尝试禁用远程audio,并查看内存泄漏是否消失。


此外,您应该采取一个额外的故障排除步骤:在本地login到服务器的控制台时,或仅在使用terminal服务器时发生这种情况?

在微软论坛上发现以下内容。

“XP / 2003terminal会话pipe理器需要每隔几小时closures一次,这会重置lsm.exe的内存占用情况,我们用SCOM监视lsm.exe的内存使用情况,当我们closurespipe理器XP或2003年。2008年的经理似乎没有造成这个问题。“

http://social.technet.microsoft.com/Forums/en-US/winserverTS/thread/78b75882-870f-4a4a-8c4d-f8690c7c124a