У нас 64-битная Windows Server 2008 с удаленным рабочим столом.
Приложение lsm.exe (локальный диспетчер сеансов), похоже, пропускает память. Хотя использование памяти при перезагрузке сервера довольно низкое, оно продолжает расти до тех пор, пока люди не смогут больше войти в систему.
Сервер не имеет звуковой карты и не имеет установленного программного обеспечения AV. Сервер полностью сервисно упакован. (Пакет обновления 2)
Он имеет 8 ГБ памяти. Регулярно им пользуются 60 пользователей. Кажется, нет соответствующих сообщений журнала событий. Логин не запускает проводник. Он запускает сценарий "login.vbs". Этот сценарий входа в систему создает несколько объектов wsShell и wScript.Network, но даже если я закомментирую их, я все равно получу такое же поведение. (примечание - я заменил скрипт .vbs на исполняемый файл. Без разницы)
Установлено несколько приложений, но стоит отметить только одно: perfectbackup - решение для резервного копирования на основе Java.
Утечка памяти, похоже, происходит, когда люди входят / выходят из удаленного рабочего стола. например При входе в систему размер lsm-памяти изменится с 21 180 КБ до 21 512 КБ. Выход из системы изменит использование с 21 512 КБ на 12 668 КБ. Позже он может снизиться, но в целом движение идет вверх. Также - это будет расти быстрее и останется, если я войду / выйду несколько раз.
Что могло быть причиной этого и как это исправить?
Возможно, из-за того, что вы используете оболочку, отличную от 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 )
Сколько сеансов обычно активно на вашем компьютере? Если пользователи отключают свои сеансы вместо выхода из системы, это может вызвать проблемы, которые вы наблюдаете. Одна вещь, которую я видел, чтобы решить эту проблему, - это заставить отключенные сеансы выходить из системы после короткого периода бездействия (от 1 до 2 часов) - это решало этот тип проблемы для меня в прошлом.
Похоже, это может быть связано с проблемой, с которой вы столкнулись:
Хотя на сервере нет звуковой карты, может быть это может включать возможность удаленного воспроизведения звука по протоколу RDP.
Вы должны попробовать отключить удаленный звук при подключении к серверу терминалов и посмотреть, исчезнет ли утечка памяти.
Кроме того, следует предпринять дополнительный шаг по устранению неполадок: происходит ли это при локальном входе в консоль сервера или только при использовании сервера терминалов?
На форумах Microsoft нашел следующее.
«Диспетчер сеансов терминала XP / 2003 необходимо закрывать каждые несколько часов. Это сбрасывает объем памяти lsm.exe. Мы отслеживаем использование памяти lsm.exe с помощью SCOM, и мы видим немедленное снижение использования памяти, когда закрываем диспетчеры ts на XP или 2003. Диспетчер TS 2008, похоже, не вызывает этой проблемы ».