31 марта 2009 г.

Тормоза под Windows Server 2003 Terminal

Интересная штука, пользователи жаловались на то, что сильно тормозится их работа в терминале.У нас стоит Windows Server 2003 x64 на лезвии IBM Blade H, 16 Mb RAM, все это крутится на fiber channel SAN, т.е. тормозить не должно.

Начал разбирательство. В процессах постоянно висел msiexec и интенсивно кушал процессорное время, кроме него, тем же занимался spoolsv. Сразу возникло подозрение на драйвера принтеров.

Исследование и поиск в интернете показало, что подозрения не беспочвенны :-) Какой-то, уже который год не исправленный баг в драйверах HP приводит к тому, что "The HP MSI installer creates ~1.6 MILLION registry API calls as a result of over 4000 subkeys created in the registry for every printer mapped", т.е. msi инсталлер драйверов генерирует 1,6 миллиона запросов API и как результат более 4000 ключей в реестре на каждый подключенный к пользователю принтер!

Алгоритм починки следующий:
  1. Останавливаем сервис Print Spooler (spoolsv)
  2. На x32 системах идем в папку c:\windows\system32\spool\drivers\w32x86\ на x64 системах идем в папку C:\WINDOWS\system32\spool\drivers\x64\ и там во всех папках переименовываем все встреченные нам файлы cioum32.msi, HPZBDI32.msi, HPZBDI64.msi в cioum32.msi.old, HPZBDI32.msi.old, HPZBDI64.msi.old. Если в папках с драйверами HP вы нашли другие .msi файлы, то с ними тоже стоит попробовать сделать ту же операцию.
  3. Создаем в тех же папках пустые файлы с именами cioum32.msi, HPZBDI32.msi, HPZBDI64.msi
  4. Затем следует удалить ключи в реестре, это будут HKU\ .DEFAULT\Software\Hewlett-Packard и HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Hewlett-Packard. Лучше всего это сделать политикой GPO Client Side preferences и настроить ее так, чтобы она удаляла эти ключи непрерывно.
  5. Потом нужно поудалять профили пользователей на сервере, т.к. там у каждого лежит кусок реестра размером в 9 Mb и более.

Сервер моментально попустило :-)

Но на этом все не закончилось. Время от времени сервер "замирал", секунд на 5-10, причем наглухо. При этом было видно, что он очень и очень занят процессом winlogon.

Покопавшись, я нашел интересную статью в Microsoft When a user logs off a Windows Server 2003 Service Pack 1 or Service Pack 2-based terminal server, the terminal server may stop responding for several seconds

Сделал заказ на этот фикс, получил его по почте, причем письмо, почему-то, было на польском, установил и все стало ок!

Комментариев нет:

Отправить комментарий