Почему на Windows 2008 R2 RDP ложится explorer c ошибкой о нехватке памяти?
Полное описание проблемы — RDP сревер, HP Proliand DL386G6 с 64 гигами устнановленной памяти. Пользователей больше 200. Постоянно крутятся туда-сюда. Всё хорошо. Запускают Опен Офис, Фаерфокс и местное приложение, написаное на Flex. Клиенты — разношёрстные тонкие клиенты от HP. Всё идёт неплохо, но с определённой переодичностью начинает выпадать следующая проблема.
В какой-то неопределённый момент времени начинает сыпаться Explorer с ошибкой о том, что недостаточно памяти для запуска приложения. (There is not enough free memory to run this program) при этом он не позволяет открыть ни одну папку на рабочем столе. При попытке залезть в панель управления возникает та же самая ошибка но от ::26ee0668-a00a-44d7-9371-beb064c98683 — что понятно.
При этом, если я вызываю контекстное меню папки и через него открываю папку — то всё работает.
Быстрое решение проблемы — перезагрузка RDP сервера — это супертупо. Лог показывает интересные вещи:
EventID 1530
При каждом Log Off любого пользователя появляется событие 1530 в котором рассказывается, что windows detected your registry file is still in use by other applications or services
В деталях он рассказывает что svchost всё ещё держит открытой \REGISTRY\USER\*USER-SID*\Printers\DevModePerUser
EventID 7011
В том числе портачат ошибками в логах ещё два сервиса:
A timeout (30000 milliseconds) was reached while waiting for a transaction response from the netprofm service
Этот event идёт рука об руку с предыдущим.
И ещё один сервис, который начинает барахлить это A timeout (30000 milliseconds) was reached while waiting for a transaction response from the fdPHost service
Эти двое молодцов сплювывают в лог раз в 30 секунд. Эти ошибки начинают появляться ровно в тот момент, когда начинает падать explorer. В остальном — полная тишина.
После глубокого гуглинга мне показалось что во всём виноват HP Universal Printer Driver который и держит открытым реестр (1530). В действительности у меня на сервере установлено 2 HP и одна Kyocera. Все они дружно работали под этим универсальным драйвером. Я сказал — «какого чёрта?» и выпилил универсальный драйвер заменив его на Универсальный драйвер для Kyocera и обновлённый универсальный от HP (один из принтеров стар как мир, под него только эта универсалка и работает).
После этого произошли некоторые изменения. Раньше, когда я пытался логофнуться с сервера мне выдавалось предупреждение что Task Service Host (svchost) не даёт компьютеру завершить работу и предлагал мне сделать Force Logoff. Теперь этого сообщения нет. Но в логи всё равно попадает ошибка 1530. Теперь уже от двух драйверов — от Kyocera и от HP.
На данный момент ошибка 7011 не появляется. Только потому, что explorer работает нормально. Но через пару-тройку дней он начнёт падать.
Сказать по-честноку — последний раз я обновлял эту систему в Ноябре 2010. Она абсолютно внутренняя и никакой связи с внешним миром не имеет, поэтому забил (просто использовал правило «Оно работает — ну вот и пусть себе работает») так что возможно это и вылечилось какой-то заплаткой, но я её не нашёл.
Интенсивный гуглинг показал мне, что что-то подобное возникало из за Norton — но у меня Norton'a нет. Более того, нашёл несколько советов закрыть работающие приложения, но при 18 гигах занятой оперативки на машине с 64 гигами мне это не кажется решением.
Вылогофивать всех пользователей пробовал. Не помогло — после захода ничего не меняется.
Как информация — сам не брезгую посидеть под RDP с админского аккаунта.
У меня первое правило — все сервера должны быть обновлены в независимости от.
Стояла ферма RDP 2008R2, 1С, офис, принтера — много и разных, утечек не было
у самого евенты 1530 постоянно есть от службы «User Profile Hive Cleanup Service», но никакого вреда не приносят.
подозреваю, что они могут быть из-за переноса локальных принтеров в терминальный сеанс