Зависший сеанс в 1С 8.3: консоль кластера, rac, процессы и файловая база

· 10 мин

Содержание

Чтобы снять зависший сеанс 1С в клиент-серверной базе, откройте консоль администрирования серверов, раскройте Кластер → Информационные базы → <база> → Сеансы, выделите сеанс и выберите в контекстном меню «Удалить». Без графической консоли то же самое делает команда rac session terminate. В файловой базе кластера нет: там зависший сеанс — это процесс 1cv8.exe или 1cv8c.exe на компьютере пользователя, и снимать нужно его.

Какой способ выбрать? Консоль — для разовой ситуации и когда есть доступ к серверу. rac — для скриптов, Linux-серверов и удалённой работы. Остановка процесса в ОС — крайняя мера, когда сеанс не удаляется штатно.

СпособКогда применятьЧто затронет
Консоль администрирования серверовСервер 1С на Windows, нужен быстрый результатТолько выбранный сеанс
rac + rasLinux, удалённый сервер, автоматизацияТолько выбранный сеанс
Завершение rphostСеанс не удаляется, процесс занял память или CPUВсе сеансы этого рабочего процесса
Процесс клиента в ОСФайловая база, терминальный серверСеанс одного пользователя

Как понять, что сеанс действительно завис

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

Типичные признаки:

  • 🔒 пользователь закрыл 1С или у него перезагрузился компьютер, а сеанс с его именем остался в списке;
  • 🎫 новые пользователи не входят из-за нехватки лицензий, хотя реально работает меньше людей;
  • ⏳ обновление конфигурации не стартует: программа сообщает, что с базой работают другие пользователи;
  • 🐢 другие сотрудники ждут на блокировках — проведение документа «висит», потом падает по таймауту;
  • 📈 процесс rphost держит десятки процентов CPU или гигабайты памяти без видимой нагрузки.

В консоли сервера смотрите на колонки списка сеансов. Важны «Приложение» (тонкий клиент, конфигуратор, фоновое задание, COM-соединение), «Время начала» и «Последняя активность». Если последняя активность была несколько часов назад, а пользователь говорит, что давно вышел, — это кандидат на удаление.

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

Прежде чем удалять, позвоните пользователю. Иногда «зависший» сеанс — это несохранённый документ, который человек набирал час.

Снимаем зависший сеанс в консоли администрирования серверов

Консоль ставится вместе с сервером 1С или отдельно, компонентом «Администрирование серверов 1С:Предприятия» в установщике платформы. Запускается из меню «Пуск» в папке 1С:Предприятие 8.

Пошагово

  1. Откройте консоль и раскройте Центральные серверы 1С:Предприятия 8.3 → <имя сервера> → Кластеры → <кластер>.
  2. Если сервера нет в дереве, добавьте его: контекстное меню узла центральных серверов → «Создать» → «Центральный сервер», укажите имя компьютера. Порт агента по умолчанию — 1540.
  3. Раскройте Информационные базы → <нужная база> → Сеансы. При первом входе консоль спросит логин и пароль администратора базы, если они заданы.
  4. Найдите сеанс по колонкам «Пользователь», «Компьютер» и «Приложение».
  5. Правой кнопкой по строке → «Удалить». Подтвердите.
  6. Обновите список (F5) и убедитесь, что сеанс исчез.

Можно выделить несколько строк через Ctrl или Shift и удалить их одной командой. Узел «Сеансы» на уровне всего кластера показывает сеансы всех баз сразу — удобно, когда ищете, кто занял лицензии.

Если консоль не открывается

Частая ситуация после обновления платформы: консоль выдаёт ошибку создания объекта или пустое окно. Причина — не зарегистрирована библиотека radmin.dll нужной версии. Регистрируйте её из командной строки, запущенной от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"

Номер версии в пути подставьте свой: тот, что совпадает с версией сервера. Разрядность библиотеки должна соответствовать разрядности консоли.

Сеансы и соединения — не одно и то же

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

Как снять сеанс 1С из командной строки: rac и ras

В планах некоторых инструкций фигурирует «утилита rmngr». Это путаница: rmngr — процесс менеджера кластера, он работает в фоне и командной строки для управления сеансами не даёт. Консольная утилита администрирования называется rac, и ей нужен запущенный сервер администрирования ras.

Шаг 1. Запустите ras

ras лежит в каталоге bin платформы. Он подключается к агенту сервера (порт 1540) и сам слушает порт 1545:

ras cluster --port=1545 localhost:1540

На Windows его обычно регистрируют как службу, чтобы не держать открытое окно. На Linux запускают с ключом --daemon.

Шаг 2. Найдите кластер, базу и сеанс

rac cluster list
rac infobase summary list --cluster=<uuid кластера>
rac session list --cluster=<uuid кластера> --infobase=<uuid базы>

Первая команда выдаёт идентификатор кластера, вторая — идентификаторы баз, третья — сеансы выбранной базы с полями session, user-name, host, app-id, started-at, last-active-at. Если на кластере заданы администраторы, добавьте к командам --cluster-user=<имя> --cluster-pwd=<пароль>.

Чтобы увидеть, какие сеансы держат лицензии:

rac session list --cluster=<uuid кластера> --licenses

Шаг 3. Завершите сеанс

rac session terminate --cluster=<uuid кластера> --session=<uuid сеанса>

rac по умолчанию обращается к localhost:1545. Для удалённого сервера адрес ras указывают последним аргументом, например srv1c:1545. Полный список параметров для вашей версии показывает rac help session.

На Linux rac удобно сочетать с grep и awk: выбрать сеансы с last-active-at старше нужной даты и передать их идентификаторы в terminate. Такой скрипт по расписанию снимает «забытые» сеансы ночью.

Когда сеанс не удаляется: рабочие процессы и СУБД

Бывает, что сеанс после «Удалить» остаётся в списке. Обычно это значит, что он сейчас выполняет серверный вызов или ждёт ответа СУБД. Платформа завершит его, когда вызов закончится. Если запрос к СУБД идёт час — сеанс провисит час.

Что делать по порядку

  1. Подождите 2–3 минуты и обновите список. Часто сеанс уходит сам после отката транзакции.
  2. Посмотрите в свойствах сеанса, к какому рабочему процессу он относится, и узнайте PID этого процесса в узле «Рабочие процессы».
  3. Если в процессе нет других важных сеансов, завершите его.

Завершение процесса rphost обрывает ВСЕ сеансы, которые он обслуживает, а не только зависший. У всех этих пользователей пропадут несохранённые данные, незавершённые транзакции откатятся. Делайте это после предупреждения сотрудников или в нерабочее время.

Остановка процесса в Windows

Откройте «Диспетчер задач», вкладку «Подробности», найдите rphost.exe с нужным PID и завершите его. Из командной строки:

taskkill /PID 4812 /F

Менеджер кластера запустит новый рабочий процесс автоматически, пользователи смогут войти заново.

Остановка процесса в Linux

ps aux | grep rphost
kill 4812

Если процесс не реагирует, используйте kill -9 4812. Это жёсткое завершение, без шанса корректно закрыть соединения.

Перезапуск службы сервера

Если зависло всё — консоль не отвечает, сеансы не удаляются, процессы перезапускаются и снова виснут — перезапустите службу «Агент сервера 1С:Предприятия 8.3». Это отключит всех пользователей всех баз кластера, поэтому заранее предупредите людей.

Последний вариант — очистка кэша сервера. Остановите службу и переименуйте (не удаляйте) папки snccntx* в каталоге srvinfo\reg_1541. Затем запустите службу. Через день-два, если всё работает, старые папки можно убрать.

Если висит запрос в СУБД

Когда сеанс ждёт СУБД, проблема может быть на стороне сервера баз данных. В MS SQL Server найдите соединение в мониторе активности SQL Server Management Studio по имени базы и хосту рабочего сервера 1С. Завершать соединение средствами СУБД стоит, только если вы уверены, что это именно оно: ошибка уронит чужую транзакцию.

Зависший сеанс в файловой базе 1С

В файловом варианте нет кластера, консоли и rac. Каждый пользователь работает со своим процессом 1С, который напрямую открывает файл 1Cv8.1CD. Значит, «сеанс» живёт ровно столько, сколько живёт процесс.

Где посмотреть, кто в базе

В пользовательском режиме: Главное меню → Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» нет, включите его в Главное меню → Сервис → Параметры, флажок «Отображать команду “Все функции”». В Конфигураторе тот же список открывается через Администрирование → Активные пользователи.

Список покажет имя пользователя и компьютер. Завершить чужой сеанс из файловой базы платформа не умеет — нужно идти к процессу.

Как снять

Где работает пользовательЧто делать
Его собственный ПКНа ПК пользователя завершить 1cv8.exe или 1cv8c.exe в «Диспетчере задач»
Терминальный серверДиспетчер задач сервера → вкладка «Пользователи» → завершить процесс 1С этого пользователя или выйти из его сеанса RDP
ПК недоступен (выключен, отвалилась сеть)Закрыть открытый файл базы на сервере, где лежит каталог

Третий случай — самый частый. Компьютер пользователя упал, а сетевая папка всё ещё считает файл базы открытым. На Windows-сервере откройте Управление компьютером → Общие папки → Открытые файлы, найдите 1Cv8.1CD с именем этого пользователя и выберите «Закрыть открытый файл». Блокировка снимется, пользователь исчезнет из списка активных.

Закрывать открытый файл можно только для того пользователя, чей сеанс завис. Если закрыть файл у работающего сотрудника, его 1С упадёт с ошибкой посреди записи. Ради целостности базы после такой операции сделайте резервную копию и при необходимости проверьте базу через «Тестирование и исправление» в Конфигураторе.

Файл 1Cv8.1CL в каталоге базы удалять при работающих пользователях нельзя. Если все вышли, а база продолжает сообщать о других пользователях, сначала проверьте открытые файлы и процессы на терминальном сервере — виновник обычно там.

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

Как не допускать зависших сеансов: настройки кластера и регламентные задания

Снимать сеансы вручную каждую неделю утомительно. Часть работы можно отдать серверу.

Время засыпания и завершения спящих сеансов

В свойствах информационной базы в консоли есть два параметра:

  • ⏱ «Время засыпания пассивного сеанса» — через сколько секунд после потери связи с клиентом сеанс перейдёт в спящий режим и освободит лицензию;
  • 🧹 «Время завершения спящего сеанса» — через сколько секунд спящий сеанс будет удалён.

Например, 300 и 3600: сеанс отвалившегося клиента через 5 минут засыпает, ещё через час исчезает. Ноль во втором поле означает, что спящие сеансы автоматически не удаляются.

Перезапуск рабочих процессов

В свойствах кластера задаются «Интервал перезапуска», «Допустимый объём памяти» и «Интервал превышения допустимого объёма памяти». С ними разросшийся rphost перезапускается штатно: сервер переносит сеансы на новый процесс, а старый останавливает после завершения работы. Это мягче, чем ручной taskkill.

Регламентные задания

Фоновые задания тоже бывают «зависшими сеансами» — с приложением «Фоновое задание». Обычно это обмены, загрузка курсов, полнотекстовый индекс. Что помогает:

  • ⚙️ разнесите тяжёлые задания по времени, чтобы ночью не запускались пять обменов сразу;
  • 🚫 на копиях и тестовых базах включите в свойствах базы флажок «Блокировка регламентных заданий включена», иначе копия будет параллельно гонять обмены рабочей базы;
  • 🔍 если одно задание стабильно висит, смотрите его журнал регистрации: причина обычно во внешнем ресурсе (FTP, веб-сервис, почта), который не отвечает.

Блокировка входа перед обслуживанием

Перед обновлением не гоняйтесь за сеансами по одному. В свойствах базы включите «Блокировка начала сеансов включена», укажите время, сообщение и код разрешения. Новые пользователи войти не смогут, а вы зайдёте с ключом запуска /UC<код>. Дальше остаётся удалить оставшиеся сеансы и выполнить обслуживание.

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