Траблшутинг Print Spooler: Служба печати (spoolsv.exe) грузит процессор
Архитектура Spooler и симптомы перегрузки
Системный процесс spoolsv.exe (Диспетчер очереди печати / Print Spooler) внезапно начинает потреблять 50-100% ресурсов процессора (CPU) и занимает сотни мегабайт оперативной памяти (Memory Leak). Из-за этого сервер терминалов (RDS) или выделенный Print-сервер начинает тормозить, а пользователи жалуются, что документы не выходят из принтера.
Две главные причины сбоя:
- Поврежденное задание на печать (Corrupted Print Job): Пользователь отправил на печать сложный PDF (чертеж AutoCAD или скан с высоким DPI). Файл скомпилировался в огромный
.SPLфайл. Драйвер не смог его обработать и завис (Crash Loop), а служба печати бесконечно пытается переотправить этот битый файл. - Конфликт старых драйверов (Type 3): Использование драйверов 3-го типа (режима ядра) от разных производителей (HP, Kyocera, Canon) на одном сервере вызывает конфликт DLL библиотек в оперативной памяти.
Дерево решений: Стабилизация сервера печати
Сценарий 1: Принудительная очистка зависшей очереди (PRINTERS)
Самое быстрое и эффективное решение — физически удалить зависшие файлы из папки спулера. Обычная кнопка 'Очистить очередь' в GUI здесь не поможет, так как файл заблокирован процессом.
# Скрипт (CMD от имени Администратора) для полной очистки очереди печати
net stop spooler
del /Q /F /S "%systemroot%\System32\Spool\Printers\*.*"
net start spoolerВнимание: Это удалит ВСЕ нераспечатанные документы всех пользователей на этом сервере.
Сценарий 2: Изоляция драйверов (Driver Isolation Mode)
Если сервер печати падает регулярно, нужно защитить ядро службы (spoolsv.exe) от криво написанных драйверов принтеров. Windows позволяет запускать драйверы в отдельном процессе PrintIsolationHost.exe.
- Откройте консоль Управление печатью (PrintManagement.msc).
- Перейдите:
Серверы печати -> [Ваш Сервер] -> Драйверы. - В центральном окне выделите все драйверы сторонних производителей (HP, Kyocera).
- Нажмите правой кнопкой мыши -> Изоляция драйвера (Set Driver Isolation).
- Выберите Изолированный (Isolated). Теперь сбойный драйвер обрушит только свою песочницу, а служба Spooler продолжит работать!
Типовые ошибки администраторов
- Установка сотен драйверов на Терминальный сервер: Это классическая ошибка архитектуры (Spooler Hell). Терминальный сервер должен иметь 0 (НОЛЬ) сторонних драйверов принтеров! Внедряйте выделенный Print Server и используйте механизм Easy Print (перенаправление TS) или драйверы 4-го типа (Type 4 v4), которые работают в User Mode.
Управление зоопарком из десятков принтеров — головная боль ИТ-отдела. Доверьте инфраструктуру системным инженерам ITSTM. Мы настроим отказоустойчивые Print-кластеры, внедрим политику Type 4 драйверов и GPO-маппинг, гарантируя бесперебойную печать во всех филиалах.
Частые вопросы (FAQ)
Что за файлы .SPL и .SHD появляются в папке PRINTERS?
Файл .SPL (Spool File) — это само тело документа для печати, отрендеренное в формате EMF или RAW. Файл .SHD (Shadow File) — это метаданные: кто отправил, на какой принтер, приоритет. Служба использует оба файла.
Почему spoolsv.exe открывает сетевые порты?
Для связи с сетевыми принтерами по протоколу WSD, SNMP и TCP/IP (порт 9100). Также Spooler принимает входящие RPC-запросы от клиентов, если он расшарен.
Может ли вирус маскироваться под spoolsv.exe?
Да, часто. Оригинальный файл находится СТРОГО в C:\Windows\System32\. Если вы видите spoolsv.exe в %AppData% или Temp — это 100% троян. Кроме того, уязвимость PrintNightmare (CVE-2021-34527) активно используется для эксплуатации службы печати.
Как найти, какой именно пользователь отправил 'битый' документ?
Включите в Event Viewer журнал: 'Журналы приложений и служб -> Microsoft -> Windows -> PrintService -> Рабочий (Operational)'. Там будут логироваться все события 307 (Документ распечатан) с указанием логина и имени файла.