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

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

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

Анализируем причину возникновения проблемы

Для начала выясним причину такого поведения системы. Когда мы работаем через тонкий или толстый клиент, приложение напрямую взаимодействует с менеджером лицензий. В случае же с веб-клиентом посредником выступает веб-сервер (в нашем случае Internet Information Services — IIS). Когда пользователь просто закрывает вкладку браузера нажатием на «крестик», веб-сервер не получает мгновенного уведомления о том, что работа завершена. Он продолжает считать сессию активной до тех пор, пока не истечет установленное в настройках время ожидания (тайм-аут).

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

Метод 1. Настройка параметров публикации через консоль 1С

Самый простой и доступный способ — это изменение настроек публикации информационной базы. Рассмотрим по шагам, как это сделать:

  1. Запустим 1С:Предприятие в режиме Конфигуратор от имени администратора.
  2. Перейдем в меню Администрирование — Публикация на веб-сервере.
  3. В открывшемся окне выберем нашу публикацию и перейдем на вкладку Прочие.
  4. Найдем параметр Время жизни соединения (по умолчанию он часто составляет 1200 секунд, что равно 20 минутам).
  5. Установим значительно меньшее значение, например, 300 секунд (5 минут) или даже меньше, в зависимости от стабильности вашего интернет-соединения.
  6. Нажмем кнопку Опубликовать и согласимся на перезапуск веб-сервера.

Уменьшение этого параметра заставляет веб-сервер быстрее разрывать связь с неактивным клиентом, что ведет к освобождению ресурсов и лицензий.

Метод 2. Тонкая настройка файла default.vrd

Иногда настроек в интерфейсе Конфигуратора недостаточно для решения проблемы. В этом случае нам поможет прямое редактирование файла конфигурации публикации default.vrd. Этот файл находится в каталоге, куда была выполнена публикация (например, C:\inetpub\wwwroot\ваша_база\).

Рассмотрим структуру этого файла и параметры, которые отвечают за удержание сессий. Нам необходимо обратить внимание на атрибуты sessionTimeout и sessionMaxAge. Если этих параметров нет, их можно добавить вручную в секцию point.

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


<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       base="/BaseName"
       ib="File=&quot;C:\Bases\Base1C&quot;;"
       sessionTimeout="300"
       sessionMaxAge="600">
    <ws>
        <point name="WebServiceName" alias="ws1.1cws"/>
    </ws>
</point>

В данном примере параметр sessionTimeout="300" ограничивает время бездействия сессии пятью минутами. Это значит, что если от браузера не поступает запросов в течение этого времени, сервер сочтет сессию завершенной.

Метод 3. Регулировка тайм-аутов в консоли управления IIS

Поскольку веб-сервер IIS сам управляет рабочими процессами, полезно будет заглянуть в его собственные настройки. Это особенно актуально для систем на базе клиентских ОС (как Windows 7 в нашем случае), где есть ограничения на количество одновременных соединений.

Разберем, как настроить пул приложений:

  1. Откроем Панель управления — Администрирование — Диспетчер служб IIS.
  2. В дереве слева выберем Пулы приложений (Application Pools).
  3. Найдем пул, который обслуживает нашу публикацию 1С (обычно он имеет то же имя, что и сайт, или используется DefaultAppPool).
  4. Щелкнем правой кнопкой мыши и выберем Дополнительные параметры.
  5. В разделе Модель процесса найдем параметр Тайм-аут простоя (минуты). По умолчанию там установлено 20 минут.
  6. Установим значение, например, 5 или 10 минут.

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

Метод 4. Дисциплина пользователей и корректный выход

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

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

Резюме и рекомендации

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

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

← На главную