Терминальный сервер Windows vs Принтеры

То, что RDP и принтеры понятия хоть и совместимые, но плохо, известно давно. Но функционал этот всегда был востребован и будет востребован в будущем. Проблемы печати с терминальных серверов Windows уже много лет являются головной болью для многих системных администраторов и ИТ-менеджеров.

В рамках данной статьи мы рассмотрим основные методы «борьбы с глюками» печати из сессий удаленных рабочих столов. Сразу оговорюсь, что в рамках этой статьи печать из терминальных ферм на Citrx’е не рассматривается. Большинство проблем с печатью на терминальных серверах вызваны установленными на них драйверами принтеров.

  1. Из практики: больше всего проблем с драйверами от принтеров фирмы Canon. Не воспринимайте как анти-рекламу, просто опыт.
  2. На верхнем уровне эти проблемы можно разделить на четыре причины:
  3. Несовпадение драйверов на клиентской машине и на терминальном сервере
  4. Нестабильность драйверов терминальной среде
  5. Высокая нагрузка на службу «диспетчер очереди печати»
  6. Отсутствие работоспособных драйверов для терминальных серверов
  7. Итак, перейдем теперь к решениям

Версии драйверов

Драйверы различных версий на сервере и клиентских машинах (в общем, то это первое, что нужно проверить) должны быть идентичны в т. ч. и с точки зрения версии PCL. Если версии отличаются то, скорее всего печати нам не видать. Также можно отметить, что когда стоит выбор использовать PCL5 или PCL6, лучше устанавливать драйверы PCL5, т.к. на практике они работают намного стабильнее.

Высокая нагрузка и нестабильность драйверов в терминальной среде

Нестабильная работа драйверов и, соответственно, перегрузка ими диспетчера очереди печати (по русски – «спулера») вызывала (и будет вызывать, если ничего не делать), остановку всего процесса печати на сервере, а иногда и остановку (зависание) ОС сервера в целом. До выхода Windows Server 2008, штатных средств по оптимизации нагрузки спулера в ОС Windows Server не было. Поэтому единственным адекватным методом борьбы с регулярным зависанием спулера (и соответственно, массовыми звонками в тех. поддержку от разгневанных пользователей), был bat-ник, по расписанию превентивно перезапускающий процесс spoolsv.exe (например, утром и в обеденное время), освобождая спулер от висящих запросов и очередей.

С выходом Windows Server 2008 появилась возможность изоляции драйверов принтера. Данная возможность позволяет драйверу принтера подгружать задачи не в Spoolsv.exe, а специальный под-процесс PrintIsolationHost.exe. При такой конструкции, зависание драйвера одного принтера, не вешает всю очередь печати, поскольку встает только один под-процесс PrintIsolationHost.exe, а сам процесс спулера spoolsv.exe остается работоспособным.

Для того чтобы включить изоляцию драйверов принтеров, нужно использовать редактор локальной групповой политики (откройте gpedit.msc и последовательно перейдите):

Параметры компьютера (Computer Configuration) > Административные шаблоны (Administrative Templates) > Принтеры (Printers)


Пробуйте, тестируйте, экспериментируйте и все у вас будет работать долго и счастливо!