![Пользователи тратят больше минуты на вход на сервер Windows 2008. LSM.exe работает с памятью более 100 МБ](https://rvso.com/image/515683/%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B8%20%D1%82%D1%80%D0%B0%D1%82%D1%8F%D1%82%20%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B5%20%D0%BC%D0%B8%D0%BD%D1%83%D1%82%D1%8B%20%D0%BD%D0%B0%20%D0%B2%D1%85%D0%BE%D0%B4%20%D0%BD%D0%B0%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%20Windows%202008.%20LSM.exe%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%20%D1%81%20%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C%D1%8E%20%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5%20100%20%D0%9C%D0%91.png)
У нас есть 64-битный Windows Server 2008, на котором запущен удаленный рабочий стол.
Приложение lsm.exe (локальный менеджер сеансов) по-видимому, допускает утечку памяти. Хотя использование памяти довольно низкое после перезагрузки сервера, оно продолжает расти до тех пор, пока пользователи больше не смогут войти в систему.
На сервере нет звуковой карты и не установлено никакого программного обеспечения AV. Сервер полностью сервисно упакован. (Сервисный пакет 2)
У него 8 ГБ памяти. Им регулярно пользуются 60 пользователей. Кажется, нет никаких соответствующих сообщений журнала событий. Вход не запускает explorer. Он запускает скрипт "login.vbs". Этот скрипт входа создает несколько объектов wsShell и wScript.Network, но даже если я их закомментирую, поведение все равно будет таким же. (Примечание: я заменил скрипт .vbs на исполняемый файл. Никакой разницы)
Установлено несколько приложений, но следует отметить только одно: perfectbackup — решение для резервного копирования на основе Java.
Утечка памяти, похоже, происходит, когда люди входят/выходят из удаленного рабочего стола. Например, вход в систему изменит размер памяти lsm с 21 180 КБ до 21 512 КБ. Выход из системы изменит использование с 21 512 КБ до 12 668 КБ. Позже это может уменьшиться, но общее движение идет вверх. Кроме того, это будет расти быстрее и останется, если я войду/выйду несколько раз.
Что может быть причиной этого и как это исправить?
решение1
Сколько сеансов обычно активны на вашем компьютере? Если пользователи отключают свои сеансы вместо того, чтобы выходить из системы, это может вызвать проблемы, которые вы видите. Я видел, как для решения этой проблемы делали принудительный выход из отключенных сеансов после короткого периода бездействия (1–2 часа) — это решало для меня подобные проблемы в прошлом.
решение2
Возможно, поскольку вы используете оболочку, отличную от Windows, вы не выходите из терминального сервера должным образом. Принудительные отключения могут быть недостаточны?
Попробуйте добавить в конец скрипта:
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
На форумах Microsoft нашел следующее.
«Менеджер сеансов терминала XP/2003 необходимо закрывать каждые несколько часов. Это сбрасывает объем памяти, занимаемый lsm.exe. Мы отслеживаем использование памяти lsm.exe с помощью SCOM и видим немедленное снижение использования памяти, когда закрываем менеджеры ts в XP или 2003. Менеджер ts 2008, похоже, не вызывает этой проблемы».