Как избавиться от зависших сеансов веб-клиента 1С и решить проблему нехватки лицензий

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

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

Архитектура работы веб-клиента и механизм освобождения лицензий

Проанализируем, почему сеансы веб-клиента не завершаются мгновенно при закрытии браузера. В отличие от тонкого клиента, веб-клиент работает поверх протокола HTTP/HTTPS через веб-сервер (IIS или Apache). Веб-клиент с определенной периодичностью отправляет на сервер служебные пакеты (пинги) для поддержания активности. Когда пользователь закрывает окно браузера или вкладку, веб-клиент не всегда успевает корректно отправить серверу команду завершения работы.

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

Однако если механизмы засыпания и завершения не настроены или работают некорректно из-за ошибок платформы, сеансы остаются в статусе активных часами или даже сутками, блокируя лицензии.

Способ 1. Настройка времени засыпания и завершения сеансов в конфигураторе

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

  1. Откроем информационную базу в режиме Конфигуратор с правами администратора.
  2. В главном меню перейдем в раздел Администрирование > Параметры информационной базы....
  3. Найдем параметры, отвечающие за управление временем жизни сеансов:
    1. Время засыпания пассивного сеанса — интервал неактивности пользователя, после которого сеанс переводится в спящий режим и освобождает лицензию 1С (рекомендуемое значение: 300–600 секунд, то есть 5–10 минут).
    2. Время завершения спящего сеанса — интервал времени, по истечении которого спящий сеанс окончательно удаляется сервером (рекомендуемое значение: 60–120 секунд).
  4. Нажмем кнопку Применить для сохранения настроек.

Важное лицензионное ограничение для версий ПРОФ и КОРП

Обратим особое внимание на лицензионные ограничения платформы «1С:Предприятие 8.3». Начиная с версии 8.3.14, возможность изменения параметров «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса» относится к функционалу уровня КОРП.

Если информационная база работает на лицензиях уровня ПРОФ и число одновременно работающих пользователей превышает 10, изменение указанных параметров со значений по умолчанию (0) приведет к ошибке проверки лицензионных ограничений и блокировке работы пользователей. Поэтому для баз на лицензиях ПРОФ эти параметры должны оставаться равными 0, а задачу освобождения сеансов необходимо решать альтернативными путями.

Способ 2. Обновление версии платформы 1С

Выясним причину, по которой даже при корректных настройках сеансы продолжают висеть сутками. В некоторых релизах платформы (в частности, в ветках 8.3.5, 8.3.7 и ряде ранних версий 8.3.10+) присутствовали зарегистрированные ошибки, из-за которых фоновые процессы веб-клиента не позволяли сеансу перейти в пассивный режим.

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

Способ 3. Автоматическое отключение сеансов через утилиту администрирования rac

Для систем на лицензиях уровня ПРОФ, где нельзя штатно сократить время засыпания в параметрах информационной базы, наиболее надежным решением является внешняя автоматизация с помощью консольной утилиты rac и службы ras (Remote Administration Server).

Разберем логику работы такого скрипта, запускаемого по расписанию в планировщике задач операционной системы:

  1. На сервере 1С запускается служба администрирования ras (по умолчанию порт 1545).
  2. Скрипт (PowerShell, Bash или Python) выполняет опрос списка текущих сеансов кластера через команду rac cluster session list.
  3. Скрипт анализирует время последней активности каждого сеанса (last-active-at) и признак сеанса веб-клиента.
  4. Если время простоя превышает заданный лимит (например, 15 минут), вызывается команда принудительного завершения: rac cluster session terminate.

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

rac session --cluster=cluster-id terminate --session=session-id

Способ 4. Программное отключение сеансов регламентным заданием базы

Еще один способ контроля соединений — создание собственного регламентного задания внутри конфигурации или через внешнюю обработку. Задание может выполняться каждые 5–10 минут, опрашивая кластер серверов через COMConnector или программный интерфейс администрирования.

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


Соединитель = Новый COMОбъект("V83.COMConnector");
Агент = Соединитель.ConnectAgent("ServerName");
Кластеры = Агент.GetClusters();

Для Каждого Кластер Из Кластеры Цикл
    Агент.Authenticate(Кластер, "AdminUser", "AdminPassword");
    Сеансы = Агент.GetSessions(Кластер);
    
    Для Каждого ТекСеанс Из Сеансы Цикл
        // Проверяем длительность отсутствия активности
        // и при необходимости вызываем завершение
        // Агент.TerminateSession(Кластер, ТекСеанс);
    КонецЦикла;
КонецЦикла;

Способ 5. Настройка веб-сервера и файла публикации default.vrd

Проанализируем параметры веб-сервера, влияющие на удержание соединений. При публикации информационной базы создается файл конфигурации default.vrd. В нем можно настроить параметры пула соединений:

  1. Параметр poolTimeout определяет время жизни неиспользуемого сеанса в пуле веб-сервера. Уменьшение этого значения позволяет веб-серверу быстрее освобождать ресурсы.
  2. В диспетчере служб IIS (Internet Information Services) в свойствах используемого пула приложений (Application Pool) рекомендуется настроить параметр Idle Time-out (Таймаут простоя), чтобы неактивные рабочие процессы веб-сервера вовремя сбрасывали зависшие контексты.

Организационные меры и обучение пользователей

Помимо технических настроек, важно минимизировать возникновение зависших процессов со стороны клиентских рабочих мест:

  1. Корректный выход из базы: в интерфейсе веб-клиента необходимо приучить пользователей завершать работу через главное меню: Главное меню > Файл > Выход. При таком выходе сервер 1С получает явный сигнал о закрытии и мгновенно уничтожает сеанс с возвратом лицензии.
  2. Борьба с фоновыми вкладками: если пользователь оставляет вкладку 1С открытой в свернутом браузере, сеанс не считается сервером пассивным, так как браузерный движок продолжает отправлять фоновые служебные запросы. Пользователям следует закрывать неиспользуемые вкладки.
  3. Параметр выдачи лицензий: в консоли администрирования кластера в свойствах информационной базы параметр «Разрешить выдачу лицензий сервером 1С:Предприятия» обязательно должен быть установлен в значение «Да», поскольку веб-клиент не может использовать локальные клиентские ключи напрямую.
← На главную