Спящие сеансы на сервере 1С 8.3: когда сеанс засыпает, отдаёт лицензию и удаляется
Содержание
Время засыпания пассивного сеанса в 1С 8.3 — это число секунд, через которое сеанс, потерявший связь с клиентским приложением, переходит в спящее состояние. Задаётся оно в Конфигураторе: Администрирование → Параметры информационной базы, поле «Время засыпания пассивного сеанса». Рядом стоит парный параметр — «Время завершения спящего сеанса»: через сколько секунд сна сеанс удаляется совсем.
Настройка нужна в клиент-серверном варианте. Короткое время засыпания быстрее освобождает лицензии от «оборванных» пользователей. Длинное даёт людям с плохой связью вернуться в свой сеанс без потери открытых форм. Выбор между этими вариантами и есть вся оптимизация.
Как устроен пассивный и спящий сеанс
Сеанс на сервере 1С и соединение с клиентом — разные сущности. Сеанс хранит состояние работы пользователя: параметры сеанса, данные модулей, временное хранилище. Соединение — это канал, по которому клиент обращается к серверу.
Сеанс становится пассивным, когда соединения с клиентом нет. Типичные причины:
- 📶 пропал Wi-Fi или VPN у пользователя;
- 💻 ноутбук ушёл в спящий режим с открытой 1С;
- 🖥️ RDP-сессию закрыли крестиком, а не выходом из системы, и клиент «заморозился»;
- ⚡ на рабочей станции отключили питание.
Пока сеанс пассивен, сервер ждёт клиента. Когда истекает время засыпания, сеанс засыпает: сервер сохраняет его состояние, освобождает ресурсы и клиентскую лицензию. Если клиент вернулся, тонкий клиент пытается восстановить связь, сеанс просыпается и снова получает лицензию. Пользователь продолжает с того же места.
Если клиент не вернулся, спящий сеанс живёт до истечения времени завершения. После этого сервер удаляет его окончательно. Следующий вход пользователя создаст новый сеанс.
| Состояние | Есть соединение с клиентом | Занимает лицензию | Что происходит дальше |
|---|---|---|---|
| Активный | да | да | обычная работа |
| Пассивный | нет | да | ждёт клиента до времени засыпания |
| Спящий | нет | нет | ждёт до времени завершения, потом удаляется |
Фоновые задания и регламентные задания не имеют клиентского приложения, поэтому к ним механизм засыпания не применяется. Они живут, пока выполняется процедура задания.
Таймаут засыпания и лицензии: что меняется на сервере
Главное практическое следствие — лицензии. Пассивный сеанс держит клиентскую лицензию, хотя человек уже не работает . При 10 лицензиях и 3 «оборванных» пользователях новым сотрудникам доступно только 7 мест. Одиннадцатый вход получит сообщение об отсутствии свободной лицензии.
Как время засыпания влияет на картину:
- ⏱️ Короткое (60–120 секунд). Лицензии от оборванных клиентов возвращаются почти сразу. Минус: при кратком обрыве связи пользователь уже вернётся в спящий сеанс, и ему понадобится свободная лицензия, чтобы проснуться.
- ⏳ Среднее (300 секунд). Обычно это значение по умолчанию. Хватает на перезапуск роутера или переподключение VPN.
- 🐢 Длинное (900 секунд и больше). Удобно для удалённых точек со слабым каналом. Зато лицензии простаивают дольше, и в пиковые часы их может не хватить.
Время завершения спящего сеанса влияет не на лицензии, а на память и надёжность. Спящий сеанс почти не нагружает процессор, но его данные хранятся на сервере. Сотни спящих сеансов за сутки — это заметный объём сеансовых данных в каталоге кластера. По умолчанию время завершения — 86 400 секунд, то есть сутки.
Нулевые значения означают «без ограничения», а не «сразу». Если оба поля обнулить, оборванные сеансы будут висеть и держать лицензии до ручного удаления или перезапуска рабочих процессов.
Практичная отправная точка для офиса с устойчивой сетью:
| Параметр | Офис, стабильная сеть | Удалённые филиалы, мобильный интернет |
|---|---|---|
| Время засыпания пассивного сеанса | 120–300 с | 600–900 с |
| Время завершения спящего сеанса | 3 600–28 800 с | 28 800–86 400 с |
Цифры — ориентир, а не норма. Смотрите, сколько сеансов обычно «висит» в консоли к обеду, и сдвигайте значения по факту.
Где задаётся время простоя сеансов
Оба параметра принадлежат информационной базе, а не кластеру. Для каждой базы на сервере их настраивают отдельно.
Через Конфигуратор
- Запустите базу в режиме Конфигуратора под пользователем с правом администрирования.
- Откройте
Администрирование → Параметры информационной базы. - Найдите поля «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса». Значения указываются в секундах.
- Введите числа и нажмите «ОК». Выходить из базы остальным пользователям не нужно.
- Новые значения применяются к сеансам, которые создаются после изменения. Уже открытые сеансы сохраняют свои значения, их видно в свойствах сеанса.
В этом же окне находятся настройки паролей и блокировки при неудачных попытках входа. Не меняйте их попутно.
Из встроенного языка
Для тиражных решений или массовой настройки удобнее код. В глобальном контексте есть пары методов:
// Выполнять на сервере, под пользователем с правом администрирования
УстановитьВремяЗасыпанияПассивногоСеанса(300);
УстановитьВремяЗавершенияСпящегоСеанса(28800);
Сообщить("Засыпание: " + Формат(ПолучитьВремяЗасыпанияПассивногоСеанса(), "ЧГ=0") + " с");
Сообщить("Завершение: " + Формат(ПолучитьВремяЗавершенияСпящегоСеанса(), "ЧГ=0") + " с");
Такой код можно поставить в обработку и запустить в каждой базе. Сообщения нужны лишь для контроля: после установки они покажут фактические значения.
Что видно в консоли администрирования
В консоли кластера серверов эти параметры для базы не редактируются, но их результат виден. Раскройте Информационные базы → <база> → Сеансы. В свойствах сеанса есть признак «Спящий» и значения обоих таймаутов, с которыми этот сеанс был создан. Колонку «Спящий» удобно вывести в список, чтобы сразу видеть уснувших пользователей.
Засыпание, блокировка и завершение — в чём разница
Три механизма часто путают, потому что все они «выключают» пользователя. Работают они по-разному.
| Механизм | Где включается | Что делает | Данные сеанса |
|---|---|---|---|
| Засыпание | параметры ИБ, автоматически | сеанс без клиента отдаёт лицензию и ждёт | сохраняются |
| Завершение спящего | параметры ИБ, автоматически | спящий сеанс удаляется по таймауту | теряются |
| Блокировка начала сеансов | свойства ИБ в консоли или «Блокировка работы пользователей» в конфигурации | запрещает новые входы, может завершать текущие | теряются у завершённых |
| Ручное удаление сеанса | консоль, rac, обработка «Активные пользователи» | сразу обрывает сеанс | теряются |
Блокировка начала сеансов — инструмент для регламентных работ: обновления, загрузки .dt, тестирования и исправления. В типовых конфигурациях на БСП её удобнее включать из режима предприятия: в разделе Администрирование откройте группу обслуживания и команду «Блокировка работы пользователей». Там задают время начала, сообщение и код разрешения для администратора.
Засыпание же ничего не запрещает. Пользователь может зайти в любой момент, а уснувший сеанс просто ждёт хозяина.
Ручное удаление активного сеанса обрывает пользователя на полуслове: несохранённый документ пропадёт, а если шла запись, транзакция откатится. Перед удалением посмотрите, кто это, и по возможности предупредите человека.
Автоматическое отключение неактивных пользователей
Встроенные таймауты обрабатывают только сеансы без связи. Если пользователь ушёл домой и оставил 1С открытой, соединение живо, сеанс активен и держит лицензию. Засыпание здесь не сработает.
Для таких случаев есть два подхода.
Скрипт по расписанию на сервере
Утилита rac из комплекта сервера 1С работает с кластером через агент (по умолчанию порт 1540, сервис ras — 1545). Базовая схема:
- Запустите сервис администрирования
ras, если он ещё не работает. - Получите идентификатор кластера:
rac cluster list. - Выведите сеансы:
rac session list --cluster=<id кластера>. В выводе есть поляhibernate,last-active-at,user-name,app-id. - Отберите сеансы, где
last-active-atстарше заданного порога, например 3 часов, и приложение — клиент, а не фоновое задание. - Удалите их командой
rac session terminate --cluster=<id кластера> --session=<id сеанса>.
Если кластер защищён паролем администратора, к командам добавляются параметры аутентификации — их точный вид смотрите в rac help session.
Запускайте такой скрипт только в нерабочее время или с большим порогом неактивности — иначе он оборвёт людей, которые просто читают длинный отчёт.
Регламентное задание в расширении
Второй путь — регламентное задание внутри базы. В расширении конфигурации создают регламентное задание, которое через внешнее соединение с агентом кластера (V83.COMConnector) получает список сеансов и удаляет зависшие. Плюс такого решения — расписание и журнал регистрации прямо в 1С. Минус — нужен программист и хранение пароля администратора кластера.
Часть отраслевых и самописных конфигураций уже содержит механизм «завершать работу при бездействии» на стороне клиента: обработчик ожидания закрывает приложение через N минут без действий. Это настройка конкретной конфигурации, в чистой платформе такого переключателя нет.
Диагностика зависших сеансов
«Зависший сеанс» — это обычно один из трёх случаев. Разбирать их нужно по-разному.
Что смотреть в консоли
- 👤 Пользователь и компьютер — кто владелец сеанса и с какой машины.
- 🕒 Последняя активность — когда клиент последний раз обращался к серверу.
- 😴 Спящий — уснул ли сеанс и отдал ли лицензию.
- 🔒 Колонки блокировок и текущего вызова — ждёт ли сеанс кого-то или сам держит данные.
Если сеансы висят без видимой причины, включите технологический журнал (logcfg.xml в каталоге conf платформы) с событиями управляемых блокировок TLOCK и TTIMEOUT. По ним видно, какой сеанс кого ждал и сколько.
Если не помогло
Бывает, что сеанс не удаляется даже из консоли: команда выполняется, но строка возвращается. Обычно это значит, что рабочий процесс занят и не отвечает. Варианты по нарастанию:
- Подождите 1–2 минуты и обновите список — удаление выполняется асинхронно.
- Найдите рабочий процесс, в котором сидит сеанс, и посмотрите его загрузку.
- Перезапустите этот рабочий процесс через консоль кластера.
Перезапуск рабочего процесса оборвёт все сеансы, которые он обслуживает, — не только зависший. Делайте это в обеденный перерыв или вечером, предупредив пользователей.
Перезапуск всей службы агента сервера 1С — крайняя мера на время, когда в базах никто не работает.