Как определить и безопасно удалить зависшие сеансы в 1С 8.3 и почему они блокируют лицензии?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе системного администрирования серверов 1С часто возникает ситуация: открывая консоль управления кластером, мы видим у одного и того же пользователя сразу два зарегистрированных сеанса. При этом у более раннего сеанса поля Сервер, Порт, Процесс и Соединение остаются абсолютно пустыми, а второй сеанс содержит актуальные данные о текущем подключении. В это же самое время пользователи начинают получать предупреждения о нехватке свободных клиентских лицензий. Проанализируем природу этого явления, разберем причины его возникновения и настроим систему для автоматического устранения проблемы.

Природа зависших сеансов без соединения и процесса

Для понимания происходящего рассмотрим архитектуру клиент-серверного взаимодействия платформы 1С:Предприятие 8.3. В системе разделяются понятия сеанса и соединения:

  1. Сеанс — логическая сущность, хранящая состояние пользователя в контексте информационной базы. Учет сеансов ведет менеджер кластера (rmngr).
  2. Соединение — физический канал связи между клиентским приложением и рабочим процессом (rphost).

Если происходит внезапный обрыв сетевого соединения (например, сбой локальной сети, переключение с Wi-Fi, переход ноутбука пользователя в режим сна или аварийное завершение процесса 1cv8.exe через диспетчер задач), физическое соединение с rphost мгновенно рвется. Однако менеджер кластера rmngr не завершает сеанс сразу, а переводит его в состояние ожидания, надеясь на повторное подключение клиента. В результате в консоли кластера образуется «сеанс-призрак» с пустыми значениями процесса и соединения.

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

Почему зависшие сеансы удерживают лицензии

Ответим на вопрос о лицензиях: зависший сеанс действительно удерживает за собой клиентскую лицензию в том случае, если она выдавалась сервером 1С. Пока сеанс официально зарегистрирован в менеджере кластера rmngr, привязанная к нему программная или аппаратная лицензия считается занятой. Повторный вход пользователя приводит к захвату еще одной лицензии, из-за чего пул доступных лицензий быстро исчерпывается.

Настройка автоматического завершения спящих сеансов в кластере 1С

Часто на форумах советуют включить параметр «Интервал перезапуска рабочих процессов». Однако важно понимать технический нюанс: эта опция перезапускает только рабочие процессы rphost для освобождения фрагментированной оперативной памяти. Поскольку информация о зависших сеансах без соединений находится в rmngr, перезапуск rphost их не очищает.

Для корректного автоматического удаления брошенных сессий настроим параметры жизненного цикла сеансов в свойствах кластера:

  1. Откроем утилиту Консоль администрирования серверов 1С Предприятия.
  2. Раскроем список серверов, перейдем к нужному кластеру, вызовем контекстное меню правой кнопкой мыши и выберем пункт Свойства.
  3. Найдем параметр Время засыпания пассивных сеансов. По умолчанию он равен 1200 секунд (20 минут). Если за этот интервал клиент не выполняет никаких действий или связь пропала, сеанс помечается как спящий.
  4. Обратим внимание на параметр Время завершения спящих сеансов. По умолчанию значение равно 86400 секунд (24 часа). Именно по этой причине брошенные вчера сеансы продолжают отображаться в списке кластера и удерживать лицензии на следующий день.
  5. Установим значение параметра Время завершения спящих сеансов равным 1200 или 3600 секунд (от 20 минут до 1 часа). Сохраним изменения.

Теперь сервер 1С будет самостоятельно удалять потерянные и пассивные сессии, возвращая лицензии в общий пул.

Сетевые настройки и политики терминального доступа

Для предотвращения зависания сессий разберем дополнительные системные меры на уровне операционной системы:

  1. Таймауты TCP Keep-Alive на сервере: по умолчанию в ОС задержка обнаружения оборванного соединения может достигать двух часов. Уменьшение параметров TCP KeepAlive в реестре Windows Server или файле конфигурации sysctl.conf в Linux позволяет операционной системе быстрее сообщать процессу rmngr о том, что клиентский сокет закрыт.
  2. Групповые политики терминального сервера (RDP): если пользователи работают через удаленный рабочий стол и регулярно закрывают сессию нажатием на крестик окна RDP, сессия уходит в состояние Disconnected. Настроим в локальных групповых политиках параметр Задать предел времени для отключенных сеансов (например, 15–30 минут), чтобы завершать отключенные сессии Windows вместе с запущенными приложениями 1С.

Автоматизация очистки через утилиту RAC

Если требуется жесткий регламентный контроль за состоянием кластера, организуем периодическую проверку сеансов с помощью встроенной консольной утилиты rac и службы администрирования кластера ras. Ниже приведен пример команды для принудительного завершения зависшего сеанса по его идентификатору:


rac session --cluster=<ИдентификаторКластера> terminate --session=<ИдентификаторСеанса>

Скрипт, запускаемый по планировщику задач, может запрашивать список сеансов информационных баз через команду rac session --cluster=<...> list, находить элементы без активных соединений и вызывать команду terminate, поддерживая пул лицензий свободным в автоматическом режиме.

← На главную