Выживание при печати на Citrix

Опубликовано: 25 Апреля, 2023


Введение


Печать — головная боль номер 1 на серверах Citrix. Проблемы с печатью у одного пользователя иногда вызывают проблемы у всех пользователей на этом сервере.


В худшем случае один пользователь может отключить сервер из-за синего экрана.


Несколько простых правил помогут вам стабилизировать ваш сервер.


История


В Citrix Metaframe 1.8 и первом выпуске Citrix XP механизм печати зависел от базовой ОС и ее подсистемы печати. В Citrix XP FR1 и более поздних версиях были представлены UPD I и II, которые действительно были универсальными, но внутри по-прежнему полагались на подсистему печати ОС.


В Citrix Presentation Server 4 компания Citrix представила новую подсистему печати, созданную с нуля.


Поскольку большинство людей по-прежнему используют Citrix XP или MPS3, я буду придерживаться их и расскажу о печати CPS4 в следующей статье.


Чтобы у клиента был принтер, он должен быть либо сетевым принтером, либо так называемым автоматически создаваемым принтером. В обоих случаях на сервере должен быть установлен драйвер. Автоматически созданный принтер использует все функциональные возможности драйвера на этом сервере, а сетевой принтер использует только часть dll настроек этого драйвера.


Поскольку большинство проблем возникает на автоматически созданных принтерах, в этой статье я сосредоточусь на них.


Проблемы


Больше всего проблем возникает при использовании автоматически созданных принтеров, так как драйвер на сервере используется полностью.


Когда клиент нажимает кнопку печати, задание печати предварительно буферизуется на сервере с помощью этого драйвера, прежде чем оно будет отправлено клиенту для окончательной печати. Эта предварительная буферизация — это поведение, которое многие производители принтеров не учитывают при создании драйверов. Даже если указано «сертифицировано для ОС», это не означает, что этот драйвер на 100% поддерживает Terminal Server/Citrix. Лучший совет, который я могу вам дать, — протестировать любой драйвер, который не поставляется с компакт-диска с ОС, прежде чем запускать производственные серверы. Это может избавить вас от таких проблем, как получение пользователями ошибки «wfshell» при входе в систему, сбой службы очереди печати или, в худшем случае, даже синий экран сервера.


Иногда драйверы пытаются записывать в расположение драйвера, поэтому может помочь предоставление пользователям права на запись в %systemroot%system32spool. Это в основном необходимо для сторонних драйверов.


Драйверы ядра и пользовательского режима


Что касается драйверов, то на сегодняшний день вышло 2 версии. Так называемый драйвер «режим ядра версии 2» и так называемый драйвер принтера «режим пользователя версии 3».


Откройте папку печати на сервере, нажмите «Файл», «Свойства сервера», а затем перейдите на вкладку «Драйверы».



На примере изображения вы можете видеть драйверы, указанные как «Windows 2000», и 1 драйвер, указанный как «Windows NT4.0 или 2000». Это драйвер «режима ядра версии 2», и его следует заменить драйвером пользовательского режима версии 3 как можно скорее. Драйверы версии 2 работают в том же пространстве памяти, что и ОС, и могут нанести серьезный ущерб при неправильном поведении. В старую эпоху NT4 TSE/Metaframe 1.8 это был источник проблем номер один, и он существует до сих пор. Это может вызвать сбои спулера и даже вызвать синий экран сервера.


Когда эти драйверы режима ядра версии 2 исчезнут, пришло время взглянуть на сторонние драйверы в целом. Как я уже упоминал, большинству из них требуется доступ на запись к папке спулера, и они часто оставляют старые вещи в этой папке, поэтому их очистка время от времени не причинит вам вреда.


Большинство доступных версий драйверов — это версии PCL5 или PCL6. Сообщается, что версии PCL6 вызывают проблемы на Terminal Server/Citrix, поэтому, если у вас есть одна из них, вызывающая проблемы, замените ее версией PCL5, и у вас есть хороший шанс, что проблема исчезнет.


Имейте в виду, что большинство поставщиков создают оборудование, совместимое с PCL или PS, и его можно легко сопоставить с базовыми драйверами HP. (Xerox, Kyocera и др.)


Защита драйверов


Драйвера, установленные на сервере, должны быть только вашими. Если активирована опция «автоматически устанавливать собственные драйверы», даже обычные пользователи могут автоматически устанавливать драйверы на сервер. Если сервер не может найти папку i386 для этого родного драйвера, а на клиенте установлена Windows 2000 или Windows XP, файлы этих родных драйверов будут скопированы с клиента на сервер (последнее, что вам нужно, это передача нескольких мегабайтов драйверов через линия WAN). Мой совет — отключить эту опцию в CMC. Это может дать вам больше работы, но помогает поддерживать более стабильную среду.


После того, как все драйверы установлены правильно, я бы посоветовал вам использовать параметр «совместимость» в CMC, чтобы убедиться, что во время использования используются только безопасные драйверы (если новый драйвер случайно проскользнет через сеанс RDP удаленного администратора).


Коррупция


Имейте в виду, что папка спулера со всеми драйверами и спулингом может быть довольно загружена.


Иногда драйвер портится. В этом случае простая переустановка на сервере может решить проблему. Хорошей практикой было бы, чтобы все драйверы, установленные на вашем сервере, были упакованы в папку где-нибудь для быстрого восстановления (и чтобы вы не столкнулись с конфликтами версий).


Производительность


Что касается производительности по линии WAN, имейте в виду, что чем сложнее драйвер, тем больше данных генерируется для отправки клиенту по линии WAN. Если пользователю нужна базовая печать и он, например, совместим с PCL, то использование простого драйвера «HP LaserJet 4» будет генерировать меньше трафика, чем драйвер «HP LaserJet 4050 PCL 6». Использование драйверов с компакт-диска с ОС по сравнению с драйверами производителя также лучше для общей производительности. Возвращайтесь к драйверам поставщиков только для определенных функций.


Для этого можно использовать функции сопоставления драйверов Citrix. Если для каждого сервера вы можете использовать файл wtsprnt.inf или если вы хотите установить их для всей фермы, вы можете использовать сопоставление принтеров CMC.


Хранение небольшого количества хороших драйверов на сервере и сопоставление с ним драйвера с именем семейства обеспечит работоспособность и максимальное быстродействие вашей подсистемы печати (драйверы сторонних производителей могут замедлить время входа в систему).


Пользователь видит все принтеры


Если одно из ваших приложений требует, чтобы у пользователя были права «локального администратора» или «права опытного пользователя» на сервере, то пользователь увидит все автоматически созданные принтеры. Это по дизайну ОС.


Приложите дополнительные усилия, чтобы выяснить, что именно нужно пользователю для получения дополнительных прав, используя для запуска своего приложения filemon и regmon с сайта www.sysinternals.com. Это сделает ваши серверы более стабильными и не запутает пользователей.


Драйверы Citrix UPD


Эти драйверы идеально подходят для хранения как можно меньшего количества драйверов на сервере. Большинство принтеров вполне совместимы с ними. Лишь немногие нуждаются в специальном отображении. Либо из-за функциональности, либо из-за несовместимости с PCL. В драйвере UPDII в Windows 2000 есть небольшая ошибка, из-за которой драйвер HP 4500 создает задания на печать большего размера, чем необходимо. Это можно исправить, заменив драйвер HP Color LaserJet 4500 для Windows 2000 его эквивалентом для Windows 2003.


Версия 8 клиента Citrix также была более оптимизирована для растрирования задания на стороне клиента, поэтому, если вы все еще используете версию 6 или 7 клиента, я бы посоветовал вам обновить ее.


Настройка УПД:


Там не так много настроек, но если вы используете UPD в среде WAN, где пропускная способность является проблемой, вы можете попробовать кое-что. В свойствах автоматически созданного принтера есть параметр «Включить расширенные функции печати», который включен по умолчанию. (также для обычных автоматически создаваемых принтеров)


Если вы отметите этот параметр, размер вашего задания может значительно уменьшиться (до 10% от оригинала) в зависимости от типа документа и содержимого, которое вы пытаетесь напечатать.


Недостатком является то, что эта опция снова включается по умолчанию, когда пользователь входит в систему в следующий раз, но это убийственный совет для тех пользователей, которые используют небольшие линии WAN и которым необходимо печатать.


пропускная способность


Использование пропускной способности принтера практически не ограничено и может вызвать проблемы на общих линиях.


В CMC можно установить максимальную пропускную способность для сеанса. Это защитит полосу пропускания на стороне сервера, но заставит пользователей тратить больше времени на полную загрузку задания на печать.


Хорошо то, что одно задание на печать больше не повлияет на производительность всех пользователей на этой линии.


Я бы посоветовал немного поэкспериментировать с настройкой пропускной способности, пока у вас не появятся довольные пользователи, но они не убивают очередь своими заданиями на печать.


Вывод


Все приведенные выше советы создают много дополнительной работы в начале. Однако полное администрирование и тестирование драйверов избавит вас от множества проблем с устранением неполадок и жалоб пользователей в долгосрочной перспективе.