Рассмотрим частую ситуацию, с которой сталкиваются администраторы 1С: в параметрах информационной базы корректно заданы параметры Время засыпания пассивного сеанса и Время завершения спящего сеанса. Однако при просмотре активности через консоль кластера мы видим, что сеансы веб-клиентов продолжают висеть продолжительное время. Более того, пользователь мог просто закрыть вкладку, а сеанс остается активным. Разберем по шагам, почему так происходит, как платформа 1С обрабатывает такие соединения и какие существуют способы для принудительного освобождения ресурсов и лицензий.
Для начала проанализируем важный вопрос: съедают ли несколько сеансов под одной учетной записью несколько клиентских лицензий? Да, если пользователь открывает базу в нескольких вкладках браузера или с разных устройств, каждый такой сеанс веб-клиента будет потреблять отдельную лицензию. Именно поэтому проблема зависших сессий стоит так остро — они впустую расходуют доступный пул лицензий предприятия.
Многие специалисты замечают, что веб-клиенты «висят» еще с релизов платформы 1С версии 8.3.14. Даже если запустить веб-клиент и абсолютно ничего не делать в открытой вкладке, сеанс все равно останется активным в консоли кластера. Выясним причину такого поведения.
Проанализируем механизмы скрытой сетевой активности. Даже при визуальном бездействии пользователя, в системе происходят следующие процессы:
Из-за этих постоянных микро-запросов сервер 1С расценивает сеанс как «живой». Настройки таймаутов (время засыпания и завершения) штатно срабатывают только тогда, когда от клиента к серверу полностью прекращается поступление любых запросов. Такое происходит, например, при физическом обрыве интернета или уходе компьютера в спящий режим с отключением сетевого адаптера.
Если же пользователь нештатно закрыл вкладку (нажал на «крестик» в браузере), сервер распознает обрыв связи не сразу. Из-за особенностей веб-протоколов сеанс может удерживаться в активном состоянии еще около 20 минут, прежде чем перейдет в спящий режим.
Рассмотрим подробнее проверенные способы, которые помогут вам эффективно бороться с зависшими сессиями веб-клиента.
Если вы используете в качестве веб-сервера Microsoft IIS, эффективным решением будет изоляция публикации базы данных. Выделим публикацию конкретной информационной базы в отдельный пул приложений (Application Pool). В настройках этого пула перейдем в дополнительные параметры и зададим жесткий таймаут простоя — Idle Time-out. При достижении этого времени бездействия веб-сервер принудительно разорвет соединение на своем уровне, тем самым освободив ресурсы сервера 1С и клиентскую лицензию.
Проблему можно решить доработкой самой конфигурации. Воспользуемся встроенным языком 1С для отслеживания реального времени простоя. Мы можем подключить специальную процедуру с помощью метода ПодключитьОбработчикОжидания. Эта процедура будет отслеживать активность мыши, клавиатуры или просто время с момента последнего значимого действия пользователя. Если лимит времени бездействия превышен, вызывается метод ЗавершитьРаботуСистемы, который инициирует штатное и корректное закрытие клиентского приложения.
Начиная с релиза платформы 1С версии 8.3.24, разработчики внедрили полезный механизм самостоятельного управления сеансами. Посмотрим, как это работает на практике: если пользователь пытается войти в базу, но наталкивается на нехватку лицензий или блокировку, вызванную его же собственным «зависшим» сеансом, в окне с ошибкой появится специальная кнопка. Она позволяет пользователю принудительно завершить свои предыдущие зависшие сеансы без обращения к системному администратору.
Часто корень проблемы кроется в привычках пользователей. Обучим сотрудников правильному выходу из системы. Для мгновенного высвобождения лицензий пользователи веб-клиента должны завершать сеанс строго штатным образом: через меню Файл и команду Выход, либо через гиперссылку с именем пользователя в правом верхнем углу интерфейса программы (пункт «Завершить работу»). Объясните коллективу, что обычное закрытие вкладки браузера «крестиком» оставляет их сеанс висеть на сервере, что может привести к нехватке лицензий для их коллег.