Рассмотрим распространенную и крайне неприятную проблему, с которой сталкиваются администраторы и разработчики при эксплуатации файловых баз 1С:Предприятие 8.3, опубликованных на веб-сервере (Apache или IIS). В отличие от клиент-серверного варианта, где для управления сессиями есть удобная консоль администрирования сервера 1С (удобно через инструмент управления сеансами и соединениями в реальном времени), файловый режим работы не предоставляет прямого и очевидного инструментария для принудительного отключения зависших сессий. Пользователи часто забывают закрыть вкладку браузера или программу на ночь, из-за чего блокируется возможность обновления конфигурации, резервного копирования, а также расходуются дефицитные клиентские лицензии. Выясним причины возникновения этих проблем и подробно разберем эффективные методы их решения.
Если в качестве веб-сервера вы используете Internet Information Services (IIS), то наиболее профессиональным решением будет тонкая настройка пулов приложений. По умолчанию все публикации баз данных могут работать в рамках одного общего пула. Перезапуск этого общего пула приведет к мгновенному обрыву сессий абсолютно во всех базах, что критично, если на сервере работает несколько отделов или клиентов.
Разберем по шагам, как настроить изоляцию баз данных и точечно сбрасывать активных пользователей:
Pool_Trade). Версию среды .NET Framework можно оставить без изменений (или выбрать «Без управляемого кода»).Pool_Trade).Теперь, когда вам потребуется монопольно зайти в базу данных или сбросить зависших пользователей конкретной публикации, вам достаточно открыть Диспетчер IIS, выбрать пул приложений этой базы и нажать кнопку Перезапуск (Recycle) или Завершить работу. Все сессии именно этой базы будут мгновенно завершены, тогда как другие публикации на веб-сервере продолжат стабильную работу. Также для отключения зависших сессий есть обработка мониторинга журнала регистрации и прерывания сеансов.
Платформа 1С:Предприятие содержит отличный встроенный механизм самоочистки, который часто игнорируют — для этой задачи пригодится инструмент администрирования и управления процессами 1С. С его помощью система может самостоятельно завершать сеансы пользователей, которые не проявляют активность в течение заданного времени.
Проанализируем процедуру настройки этой функции через режим «1С:Предприятие» под учетной записью с правами администратора:
1200 секунд (20 минут). Если пользователь не совершает никаких действий в программе в течение этого времени, его сеанс переходит в спящий режим и перестает удерживать активные транзакции.3600 секунд (1 час). По истечении этого времени спящий сеанс будет полностью удален веб-сервером, а занятая им лицензия вернется в общий пул свободных лицензий.Этот способ позволяет полностью автоматизировать процесс борьбы с «забытыми» вкладками браузера и открытыми окнами тонкого клиента.
Иногда требуется принудительно запретить новые подключения и выгнать текущих пользователей для проведения технических работ — для этого подойдёт обработка завершения сеансов и обслуживания системы. Для этого в платформе существует объект БлокировкаСеансов. Мы можем использовать обработку или выполнить следующий код в привилегированном модуле для программной установки блокировки:
НоваяБлокировка = ПараметрыБлокировкиСеансов();
НоваяБлокировка.Начало = ТекущаяДата();
НоваяБлокировка.Конец = ТекущаяДата() + 3600; // Блокировка на 1 час
НоваяБлокировка.Сообщение = "Выполняются технические работы. Пожалуйста, зайдите позже.";
НоваяБлокировка.Установлена = Истина;
НоваяБлокировка.КодРазрешения = "KeyAdmin123";
УстановитьБлокировкуСеансов(НоваяБлокировка);
После выполнения этого кода пользователи веб-клиента увидят предупреждение и их сеансы будут завершены. Администратор же сможет зайти в базу, запустив ярлык с параметром запуска /UC KeyAdmin123.
Бывают ситуации, когда веб-сервер перезапущен, но файлы базы данных 1Cv8.1CD все равно остаются заняты (заблокированы). Это происходит из-за того, что кто-то из пользователей подключен к базе напрямую через общий сетевой ресурс (так называемую «расшаренную» папку) по протоколу SMB/CIFS.
Выясним, как снять эти блокировки без перезагрузки всего сервера:
compmgmt.msc в окне «Выполнить» (Win + R)..1CD, .1CLck).После выполнения этой операции блокировки операционной системы будут принудительно сняты, и вы сможете беспрепятственно скопировать, переместить или обновить файл базы данных.
Очень часто администраторы сталкиваются со странным поведением: куплено, к примеру, 5 клиентских лицензий, но в конфигураторе видно, что все 5 лицензий заняты одним и тем же пользователем (с одного компьютера), хотя у него запущена всего одна копия программы. Проанализируем причины этой проблемы.
Основная причина кроется в специфике веб-протоколов и механизме подсчета лицензий веб-сервером:
Для предотвращения «захвата» лицензий рекомендуется внедрить следующие организационные и технические меры: