Спящие сеансы на сервере 1С 8.3: когда сеанс засыпает, отдаёт лицензию и удаляется

· 9 мин

Содержание

Время засыпания пассивного сеанса в 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 с

Цифры — ориентир, а не норма. Смотрите, сколько сеансов обычно «висит» в консоли к обеду, и сдвигайте значения по факту.

Где задаётся время простоя сеансов

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

Через Конфигуратор

  1. Запустите базу в режиме Конфигуратора под пользователем с правом администрирования.
  2. Откройте Администрирование → Параметры информационной базы.
  3. Найдите поля «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса». Значения указываются в секундах.
  4. Введите числа и нажмите «ОК». Выходить из базы остальным пользователям не нужно.
  5. Новые значения применяются к сеансам, которые создаются после изменения. Уже открытые сеансы сохраняют свои значения, их видно в свойствах сеанса.

В этом же окне находятся настройки паролей и блокировки при неудачных попытках входа. Не меняйте их попутно.

Из встроенного языка

Для тиражных решений или массовой настройки удобнее код. В глобальном контексте есть пары методов:

// Выполнять на сервере, под пользователем с правом администрирования
УстановитьВремяЗасыпанияПассивногоСеанса(300);
УстановитьВремяЗавершенияСпящегоСеанса(28800);

Сообщить("Засыпание: " + Формат(ПолучитьВремяЗасыпанияПассивногоСеанса(), "ЧГ=0") + " с");
Сообщить("Завершение: " + Формат(ПолучитьВремяЗавершенияСпящегоСеанса(), "ЧГ=0") + " с");

Такой код можно поставить в обработку и запустить в каждой базе. Сообщения нужны лишь для контроля: после установки они покажут фактические значения.

Что видно в консоли администрирования

В консоли кластера серверов эти параметры для базы не редактируются, но их результат виден. Раскройте Информационные базы → <база> → Сеансы. В свойствах сеанса есть признак «Спящий» и значения обоих таймаутов, с которыми этот сеанс был создан. Колонку «Спящий» удобно вывести в список, чтобы сразу видеть уснувших пользователей.

Засыпание, блокировка и завершение — в чём разница

Три механизма часто путают, потому что все они «выключают» пользователя. Работают они по-разному.

МеханизмГде включаетсяЧто делаетДанные сеанса
Засыпаниепараметры ИБ, автоматическисеанс без клиента отдаёт лицензию и ждётсохраняются
Завершение спящегопараметры ИБ, автоматическиспящий сеанс удаляется по таймаутутеряются
Блокировка начала сеансовсвойства ИБ в консоли или «Блокировка работы пользователей» в конфигурациизапрещает новые входы, может завершать текущиетеряются у завершённых
Ручное удаление сеансаконсоль, rac, обработка «Активные пользователи»сразу обрывает сеанстеряются

Блокировка начала сеансов — инструмент для регламентных работ: обновления, загрузки .dt, тестирования и исправления. В типовых конфигурациях на БСП её удобнее включать из режима предприятия: в разделе Администрирование откройте группу обслуживания и команду «Блокировка работы пользователей». Там задают время начала, сообщение и код разрешения для администратора.

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

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

Автоматическое отключение неактивных пользователей

Встроенные таймауты обрабатывают только сеансы без связи. Если пользователь ушёл домой и оставил 1С открытой, соединение живо, сеанс активен и держит лицензию. Засыпание здесь не сработает.

Для таких случаев есть два подхода.

Скрипт по расписанию на сервере

Утилита rac из комплекта сервера 1С работает с кластером через агент (по умолчанию порт 1540, сервис ras — 1545). Базовая схема:

  1. Запустите сервис администрирования ras, если он ещё не работает.
  2. Получите идентификатор кластера: rac cluster list.
  3. Выведите сеансы: rac session list --cluster=<id кластера>. В выводе есть поля hibernate, last-active-at, user-name, app-id.
  4. Отберите сеансы, где last-active-at старше заданного порога, например 3 часов, и приложение — клиент, а не фоновое задание.
  5. Удалите их командой rac session terminate --cluster=<id кластера> --session=<id сеанса>.

Если кластер защищён паролем администратора, к командам добавляются параметры аутентификации — их точный вид смотрите в rac help session.

Запускайте такой скрипт только в нерабочее время или с большим порогом неактивности — иначе он оборвёт людей, которые просто читают длинный отчёт.

Регламентное задание в расширении

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

Часть отраслевых и самописных конфигураций уже содержит механизм «завершать работу при бездействии» на стороне клиента: обработчик ожидания закрывает приложение через N минут без действий. Это настройка конкретной конфигурации, в чистой платформе такого переключателя нет.

Диагностика зависших сеансов

«Зависший сеанс» — это обычно один из трёх случаев. Разбирать их нужно по-разному.

Диагностика: выберите симптом

Что смотреть в консоли

  • 👤 Пользователь и компьютер — кто владелец сеанса и с какой машины.
  • 🕒 Последняя активность — когда клиент последний раз обращался к серверу.
  • 😴 Спящий — уснул ли сеанс и отдал ли лицензию.
  • 🔒 Колонки блокировок и текущего вызова — ждёт ли сеанс кого-то или сам держит данные.

Если сеансы висят без видимой причины, включите технологический журнал (logcfg.xml в каталоге conf платформы) с событиями управляемых блокировок TLOCK и TTIMEOUT. По ним видно, какой сеанс кого ждал и сколько.

Если не помогло

Бывает, что сеанс не удаляется даже из консоли: команда выполняется, но строка возвращается. Обычно это значит, что рабочий процесс занят и не отвечает. Варианты по нарастанию:

  1. Подождите 1–2 минуты и обновите список — удаление выполняется асинхронно.
  2. Найдите рабочий процесс, в котором сидит сеанс, и посмотрите его загрузку.
  3. Перезапустите этот рабочий процесс через консоль кластера.

Перезапуск рабочего процесса оборвёт все сеансы, которые он обслуживает, — не только зависший. Делайте это в обеденный перерыв или вечером, предупредив пользователей.

Перезапуск всей службы агента сервера 1С — крайняя мера на время, когда в базах никто не работает.

Частые вопросы

Спящий сеанс занимает лицензию 1С?
Нет. При засыпании сеанс освобождает клиентскую лицензию. При пробуждении он запрашивает её снова, поэтому для возврата нужна свободная лицензия.
Применяются ли новые значения таймаутов к уже открытым сеансам?
Нет, только к сеансам, созданным после изменения. Текущие сеансы доработают со старыми значениями. Если нужно применить сразу, попросите пользователей перезайти.
Работает ли засыпание в файловой базе?
Механизм рассчитан на клиент-серверный вариант, где сервер хранит сеансы отдельно от клиента. В файловой базе нет кластера, консоли и общей картины сеансов, поэтому настраивать эти параметры там почти не имеет смысла.
Почему конфигуратор в списке сеансов не засыпает вместе со всеми?
Конфигуратор — отдельное приложение со своим соединением. Если связь у него не рвётся, сеанс остаётся активным. Закрывайте конфигуратор после работы, он тоже учитывается в лицензиях.
Какое значение поставить, если пользователи жалуются, что их «выкидывает»?
Увеличьте время завершения спящего сеанса, например до 28 800 секунд. Время засыпания трогать не обязательно: человек всё равно вернётся в свой сеанс, если он не удалён.