Как завершать зависшие сеансы сервера 1С на Linux без COM-соединения и как устроен протокол RAS?

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

При эксплуатации кластера серверов 1С:Предприятие системные администраторы часто сталкиваются с ситуацией, когда пользователи забывают закрывать тонкие или веб-клиенты. Неактивные соединения продолжают удерживать клиентские лицензии, блокируя вход другим сотрудникам. Ранее для автоматического сброса сессий традиционно применялись VBS-скрипты или PowerShell-сценарии через COM-объект V83.COMConnector. Однако при переносе серверной инфраструктуры на Linux COM-технологии становятся недоступными.

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

1. Архитектура и протокол взаимодействия RAS / RAC

Выясним, как организовано удаленное управление кластером 1С без Windows и COM-компонентов. Основным инструментом администрирования на Linux выступает связка из службы RAS (Remote Administration Server) и утилиты командной строки RAC (Remote Administration Client).

Проанализируем технические особенности протокола взаимодействия:

  1. Тип протокола: Служба RAS не использует открытые веб-протоколы (REST, SOAP, JSON-RPC или XML-RPC). Взаимодействие между клиентом администрирования и сервером происходит по собственному проприетарному бинарному протоколу поверх прямого TCP-соединения (по умолчанию порт 1545).
  2. Клиентские библиотеки: Входящая в комплект платформы утилита rac и Java-библиотека содержат готовые бинарные сериализаторы и кодеки для вызова удаленных процедур кластера.
  3. Сторонняя разработка: Если требуется разработать собственную панель мониторинга без вызова CLI-утилиты, сообществом созданы открытые библиотеки для Python, Go и Node.js, реализующие протокол RAS на уровне TCP-сокетов.

2. Автоматизация завершения сеансов через утилиту RAC в Linux

Разберем по шагам практический способ управления сеансами с помощью Bash-скриптов и утилиты rac, запускаемых по расписанию через cron.

Для работы скрипта на сервере 1С должна быть запущена служба RAS. Пример запуска службы:

/opt/1cv8/x86_64/8.3.XX.XXXX/ras cluster --port=1545 localhost:1540

Посмотрим на пример основных команд утилиты rac для получения списка и принудительного закрытия сессий:

  1. Получение идентификатора кластера: rac cluster list localhost:1545
  2. Просмотр списка активных сеансов конкретной информационной базы: rac session list --cluster=<ID_Кластера> --ib-name=<Имя_Базы> localhost:1545
  3. Принудительное завершение сеанса:
    
    rac session terminate --cluster=<ID_Кластера> --session=<ID_Сеанса> localhost:1545
    

С помощью парсинга вывода команды rac session list в Bash или Python можно отслеживать время последней активности (last-active-at) и автоматически сбрасывать соединения, которые простаивают дольше установленного лимита.

3. Штатная автоочистка неактивных сеансов средствами платформы

Во многих случаях написание внешних скриптов не требуется: платформа 1С содержит встроенный механизм управления жизненным циклом сессий и возврата лицензий. Разберем ключевые параметры информационной базы в консоли администрирования:

  1. «Время засыпания пассивных сеансов» (Sleep timeout): Время бездействия пользователя в секундах, по истечении которого сеанс переходит в статус «спящий». Важно: в момент засыпания сеанса клиентская лицензия автоматически освобождается и возвращается в пул доступных лицензий.
  2. «Время завершения спящих сеансов» (Terminate timeout): Интервал времени, после которого спящий сеанс окончательно удаляется сервером из списка подключений.

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

4. Особенности работы тонкого и веб-клиента

Проанализируем нюансы, которые могут препятствовать автоматическому засыпанию клиентских приложений:

  1. Фоновые обращения типовых конфигураций: Механизмы БСП (Библиотеки Стандартных Подсистем), системы взаимодействия, проверки блокировок и оповещений могут периодически отправлять запросы на сервер от имени клиентского приложения. Платформа фиксирует сетевую активность, из-за чего таймер пассивности сбрасывается, и сеанс не переходит в спящий режим.
  2. Публикация веб-клиента на веб-сервере: При использовании веб-клиента (Apache, IIS, Nginx) необходимо синхронизировать таймауты. В файле публикации default.vrd на веб-сервере следует проверить параметр sessionTimeout, а также настройки времени жизни сессий в конфигурации самого веб-сервера. Если вкладка браузера закрыта некорректно, веб-сервер удерживает соединение до истечения своего внутреннего таймаута.

5. Управление сеансами через регламентные задания

Альтернативным вариантом является создание регламентного задания внутри самой конфигурации 1С. Серверный код конфигурации может выполнять анализ сеансов и принудительно завершать зависшие фоновые и пользовательские процессы без внешних утилит и COM-соединений, используя программные методы администрирования кластера или вызов внешних сценариев из контекста сервера.

← На главную