Зависший сеанс в 1С 8.3: консоль кластера, rac, процессы и файловая база
Содержание
Чтобы снять зависший сеанс 1С в клиент-серверной базе, откройте консоль администрирования серверов, раскройте Кластер → Информационные базы → <база> → Сеансы, выделите сеанс и выберите в контекстном меню «Удалить». Без графической консоли то же самое делает команда rac session terminate. В файловой базе кластера нет: там зависший сеанс — это процесс 1cv8.exe или 1cv8c.exe на компьютере пользователя, и снимать нужно его.
Какой способ выбрать? Консоль — для разовой ситуации и когда есть доступ к серверу. rac — для скриптов, Linux-серверов и удалённой работы. Остановка процесса в ОС — крайняя мера, когда сеанс не удаляется штатно.
| Способ | Когда применять | Что затронет |
|---|---|---|
| Консоль администрирования серверов | Сервер 1С на Windows, нужен быстрый результат | Только выбранный сеанс |
rac + ras | Linux, удалённый сервер, автоматизация | Только выбранный сеанс |
Завершение rphost | Сеанс не удаляется, процесс занял память или CPU | Все сеансы этого рабочего процесса |
| Процесс клиента в ОС | Файловая база, терминальный сервер | Сеанс одного пользователя |
Как понять, что сеанс действительно завис
Сеанс в списке ещё не значит «завис». Пользователь мог просто оставить открытую программу на обеде. Зависшим считают сеанс, который держит лицензию, блокировки или ресурсы, но не работает .
Типичные признаки:
- 🔒 пользователь закрыл 1С или у него перезагрузился компьютер, а сеанс с его именем остался в списке;
- 🎫 новые пользователи не входят из-за нехватки лицензий, хотя реально работает меньше людей;
- ⏳ обновление конфигурации не стартует: программа сообщает, что с базой работают другие пользователи;
- 🐢 другие сотрудники ждут на блокировках — проведение документа «висит», потом падает по таймауту;
- 📈 процесс
rphostдержит десятки процентов CPU или гигабайты памяти без видимой нагрузки.
В консоли сервера смотрите на колонки списка сеансов. Важны «Приложение» (тонкий клиент, конфигуратор, фоновое задание, COM-соединение), «Время начала» и «Последняя активность». Если последняя активность была несколько часов назад, а пользователь говорит, что давно вышел, — это кандидат на удаление.
Отдельно проверьте, не идёт ли у сеанса вызов сервера прямо сейчас. Сеанс, который третий час проводит закрытие месяца , не завис — он работает. Его принудительное завершение откатит всю транзакцию, и работу придётся начинать сначала.
Прежде чем удалять, позвоните пользователю. Иногда «зависший» сеанс — это несохранённый документ, который человек набирал час.
Снимаем зависший сеанс в консоли администрирования серверов
Консоль ставится вместе с сервером 1С или отдельно, компонентом «Администрирование серверов 1С:Предприятия» в установщике платформы. Запускается из меню «Пуск» в папке 1С:Предприятие 8.
Пошагово
- Откройте консоль и раскройте
Центральные серверы 1С:Предприятия 8.3 → <имя сервера> → Кластеры → <кластер>. - Если сервера нет в дереве, добавьте его: контекстное меню узла центральных серверов → «Создать» → «Центральный сервер», укажите имя компьютера. Порт агента по умолчанию — 1540.
- Раскройте
Информационные базы → <нужная база> → Сеансы. При первом входе консоль спросит логин и пароль администратора базы, если они заданы. - Найдите сеанс по колонкам «Пользователь», «Компьютер» и «Приложение».
- Правой кнопкой по строке → «Удалить». Подтвердите.
- Обновите список (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. Такой скрипт по расписанию снимает «забытые» сеансы ночью.
Когда сеанс не удаляется: рабочие процессы и СУБД
Бывает, что сеанс после «Удалить» остаётся в списке. Обычно это значит, что он сейчас выполняет серверный вызов или ждёт ответа СУБД. Платформа завершит его, когда вызов закончится. Если запрос к СУБД идёт час — сеанс провисит час.
Что делать по порядку
- Подождите 2–3 минуты и обновите список. Часто сеанс уходит сам после отката транзакции.
- Посмотрите в свойствах сеанса, к какому рабочему процессу он относится, и узнайте PID этого процесса в узле «Рабочие процессы».
- Если в процессе нет других важных сеансов, завершите его.
Завершение процесса 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 в каталоге базы удалять при работающих пользователях нельзя. Если все вышли, а база продолжает сообщать о других пользователях, сначала проверьте открытые файлы и процессы на терминальном сервере — виновник обычно там.
rac session terminate.rac session list --licenses или посмотрите сеансы на уровне кластера, найдите сеансы с давней последней активностью и удалите их.radmin.dll нужной версии через regsvr32 от имени администратора.Как не допускать зависших сеансов: настройки кластера и регламентные задания
Снимать сеансы вручную каждую неделю утомительно. Часть работы можно отдать серверу.
Время засыпания и завершения спящих сеансов
В свойствах информационной базы в консоли есть два параметра:
- ⏱ «Время засыпания пассивного сеанса» — через сколько секунд после потери связи с клиентом сеанс перейдёт в спящий режим и освободит лицензию;
- 🧹 «Время завершения спящего сеанса» — через сколько секунд спящий сеанс будет удалён.
Например, 300 и 3600: сеанс отвалившегося клиента через 5 минут засыпает, ещё через час исчезает. Ноль во втором поле означает, что спящие сеансы автоматически не удаляются.
Перезапуск рабочих процессов
В свойствах кластера задаются «Интервал перезапуска», «Допустимый объём памяти» и «Интервал превышения допустимого объёма памяти». С ними разросшийся rphost перезапускается штатно: сервер переносит сеансы на новый процесс, а старый останавливает после завершения работы. Это мягче, чем ручной taskkill.
Регламентные задания
Фоновые задания тоже бывают «зависшими сеансами» — с приложением «Фоновое задание». Обычно это обмены, загрузка курсов, полнотекстовый индекс. Что помогает:
- ⚙️ разнесите тяжёлые задания по времени, чтобы ночью не запускались пять обменов сразу;
- 🚫 на копиях и тестовых базах включите в свойствах базы флажок «Блокировка регламентных заданий включена», иначе копия будет параллельно гонять обмены рабочей базы;
- 🔍 если одно задание стабильно висит, смотрите его журнал регистрации: причина обычно во внешнем ресурсе (FTP, веб-сервис, почта), который не отвечает.
Блокировка входа перед обслуживанием
Перед обновлением не гоняйтесь за сеансами по одному. В свойствах базы включите «Блокировка начала сеансов включена», укажите время, сообщение и код разрешения. Новые пользователи войти не смогут, а вы зайдёте с ключом запуска /UC<код>. Дальше остаётся удалить оставшиеся сеансы и выполнить обслуживание.
Потеряет ли пользователь данные, если удалить его сеанс?
Можно ли снять зависший сеанс без прав администратора кластера?
rac потребуют их логин и пароль. Если администраторы не заданы, управлять кластером может любой, у кого есть доступ к серверу, — это стоит исправить.Почему удалённый сеанс сразу появляется снова?
Освобождается ли лицензия сразу после удаления сеанса?
rac session list --licenses.