Администрирование терминальных серверов (RDP), на которых пользователи активно работают в решениях 1С, часто преподносит неприятные сюрпризы. Одна из самых распространенных и болезненных проблем — зависание процессов 1cv8.exe в диспетчере задач после того, как пользователь закрыл программу. Внешне приложение закрывается, но его процесс продолжает висеть в системе, потребляя оперативную память и до 12–15% ресурсов центрального процессора на каждый экземпляр. Когда таких "фантомных" процессов накапливается десяток-другой, сервер начинает катастрофически терять производительность, что приводит к жалобам пользователей на общую медлительность системы.
В рамках этой статьи мы подробно разберем, почему процессы 1С не завершаются корректно, рассмотрим влияние подсистемы печати Windows, проанализируем проблемы с драйверами торгового оборудования (в частности, АТОЛ) и настроим сервер так, чтобы навсегда избавиться от ручного "убийства" процессов каждое утро.
---
Когда пользователь нажимает на "крестик" или выбирает пункт меню "Файл — Выход", платформа 1С запускает стандартный механизм завершения работы. При этом должны последовательно закрыться все активные соединения, выгрузиться внешние компоненты, очиститься временные файлы кэша и завершиться все связанные потоки операционной системы. Если хотя бы один из этих этапов блокируется внешней службой или драйвером, процесс 1cv8.exe переходит в состояние ожидания и зависает.
Выделим основные причины, почему это происходит:
---
Если пользователи отправляют документы на печать, операционная система задействует службу трансляции splwow64.exe. По умолчанию в Windows Server этот процесс ожидает новых заданий печати в течение 180 секунд (3 минут) после завершения последнего документа. Все это время он удерживает связь с процессом 1С, блокируя его закрытие. Если пользователь закроет 1С в этот интервал времени, процесс 1cv8.exe останется висеть в памяти.
Выполним тонкую настройку реестра на сервере терминалов, чтобы сократить время ожидания и разрешить принудительное завершение транслятора:
regedit и нажмем Enter).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print.SplWOW64TimeOut и присвоим ему десятичное значение 1 (это сократит время ожидания до 1 минуты).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\SysProcs.splwow64.exe и присвоим ему значение 0. Данная настройка указывает серверу терминалов, что этот процесс можно принудительно закрывать при завершении сеанса пользователя.После внесения изменений перезапустим службу "Диспетчер печати" (Spooler) или перезагрузим сервер в нерабочее время.
---
Для того чтобы зависшие процессы и "спящие" сессии пользователей не накапливались сутками, настроим автоматическое завершение отключенных сеансов. Это особенно актуально при работе через RemoteApp.
Выполним настройку через локальные групповые политики сервера:
gpedit.msc в окне "Выполнить").---
Часто виновниками зависания процессов 1С при выходе становятся внешние компоненты торгового оборудования. Они не могут корректно завершить работу с COM-портами. Обновление драйверов (например, "Драйвера устройств ввода" от АТОЛ) решает проблему зависания, но может привести к другой проблеме — сканеры штрихкодов начинают считывать коды крайне медленно (с задержкой в несколько секунд).
Выясним причину этого поведения. Современные версии драйверов АТОЛ (начиная с 9-й и 10-й версий) являются платными. Если на сервере не установлена лицензия, драйвер автоматически переходит в демонстрационный режим. В демо-режиме разработчиком намеренно заложена искусственная задержка (от 5 до 15 секунд) при передаче каждого считанного штрихкода в 1С. Это делает работу сотрудников невыносимой.
Рассмотрим два варианта решения этой проблемы:
Современные конфигурации 1С на управляемых формах прекрасно работают со сканерами штрихкодов без стороннего платного софта от АТОЛ. Для этого выполним следующие действия:
Этот способ полностью решает проблему зависаний процессов при закрытии 1С и исключает любые задержки при сканировании, так как библиотека NativeAPI работает напрямую с портами операционной системы и корректно освобождает ресурсы.
Если ваша конфигурация 1С или специфика работы требуют использования именно драйверов АТОЛ, можно установить старую сертифицированную бесплатную версию (например, версию 6.5.3 или другие релизы 2008–2009 годов), где ограничения по скорости и лицензированию отсутствовали.
При установке современного общего пакета драйверов торгового оборудования АТОЛ (ДТО) обязательно выберите выборочный тип установки и снимите флажок с пункта "Драйвер устройств ввода", чтобы новые платные библиотеки не заменяли старую стабильную версию.
---
Иногда "зависание" происходит из-за того, что сессия аварийно завершается на стороне клиента, а сервер считает её живой. На компьютерах пользователей необходимо отключить функции энергосбережения сетевых карт:
---
При закрытии платформы 1cv8.exe активно удаляет временные файлы из каталогов кэша. Если антивирус на сервере блокирует доступ к этим файлам для сканирования, процесс зависает. Добавим папки 1С в исключения антивирусного ПО на сервере:
C:\Program Files\1cv8\ (и C:\Program Files (x86)\1cv8\ для 32-битных платформ)C:\Users\*\AppData\Local\1C\C:\Users\*\AppData\Roaming\1C\Также рекомендуется добавить в исключения исполняемые файлы 1cv8.exe, 1cv8c.exe и 1cv8s.exe.
---
Если процессы продолжают зависать, а точную причину установить не удается, проведем диагностику с помощью утилиты от Microsoft — Process Explorer. Выполним следующие шаги для локализации проблемы:
1cv8.exe, который потребляет ресурсы процессора..dll), которая вызвала блокировку. Если имя библиотеки указывает на драйвер печати или компоненту торгового оборудования (например, файлы драйвера АТОЛ или ККТ), мы сразу поймем, в какую сторону направлять усилия по устранению сбоя.Применяя данные методы в комплексе, мы сможем добиться стабильной работы RDP-сервера, полностью исключить ручной мониторинг диспетчера задач и обеспечить быструю работу торгового оборудования без задержек.