Плановое отключение сервера 1С:Предприятия: от блокировки сеансов до остановки службы

· 9 мин

Содержание

Кластер серверов 1С останавливают остановкой службы агента сервера: в Windows это служба 1C:Enterprise 8.3 Server Agent (в 64-битной установке с припиской (x86-64)), в Linux — юнит srv1cv8-<версия>@default или старый srv1cv83. Вместе с агентом (ragent) завершаются менеджер кластера (rmngr) и все рабочие процессы (rphost). Но правильная остановка начинается раньше: сначала блокируют новые сеансы и регламентные задания, затем завершают активные сеансы, и только потом гасят службу.

Способов три, и выбирают их по ситуации. Консоль администрирования удобна, когда сервер один и администратор работает в Windows. Утилита rac нужна для Linux, удалённой работы и скриптов. Принудительное завершение процессов — крайняя мера, когда служба зависла в состоянии «Остановка».

СпособКогда подходитРиски
Консоль администрирования + службы WindowsРазовое плановое обслуживание, один серверМинимальные, если сеансы завершены заранее
rac + systemctl / net stopLinux, удалённые серверы, ночные регламентыОшибка в UUID кластера или базы — команда уйдёт не туда
taskkill / kill -9Служба не останавливается, процессы висятОбрыв транзакций, незаписанные данные в сеансах

Подготовка сервера 1С к остановке кластера

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

Что проверить до начала:

  • 👥 Активные сеансы. Список есть в консоли в ветке Информационные базы → <база> → Сеансы. Сеансы с типом «Фоновое задание» — это регламенты, их тоже нужно дождаться или прервать осознанно.
  • 🕐 Время. Выбирайте окно, когда не идёт закрытие месяца , выгрузка в банк, обмены с сайтом и отправка отчётности.
  • 💾 Резервная копия. Если остановка нужна ради обновления платформы или конфигурации, сделайте копию базы средствами СУБД до остановки. Пока кластер работает, бэкап SQL Server или PostgreSQL снимается без проблем.
  • 🔑 Учётные данные. Если на кластере задан администратор, понадобятся его логин и пароль. Для блокировки сеансов в базе — ещё и логин администратора информационной базы.
  • 🖥️ Состав кластера. Если рабочих серверов несколько, выпишите их. Агент на каждом сервере останавливается отдельно.

Предупредите пользователей заранее, хотя бы за 15–30 минут. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть механизм Администрирование → Поддержка и обслуживание → Блокировка работы пользователей: он показывает сообщение работающим пользователям и через заданное время завершает их сеансы.

Блокировка начала сеансов

Самый надёжный способ не дать людям зайти обратно — серверная блокировка. Откройте свойства информационной базы в консоли и заполните:

  1. Флажок «Блокировка начала сеансов включена».
  2. Время начала и окончания блокировки.
  3. «Сообщение о блокировке» — текст, который увидит пользователь при попытке входа.
  4. «Код разрешения» — с ним администратор сможет войти в заблокированную базу, указав параметр запуска /UC<код>.
  5. Флажок «Блокировка регламентных заданий включена» — чтобы фоновые задания не стартовали заново.

Эти настройки хранятся в реестре кластера и не требуют входа в саму базу.

Остановка через консоль администрирования серверов 1С

Консоль «Администрирование серверов 1С Предприятия» — оснастка MMC, которая ставится вместе с платформой. Если ярлык не открывается с ошибкой оснастки, зарегистрируйте библиотеку консоли от имени администратора:

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

Номер версии в пути подставьте свой. Разрядность консоли и зарегистрированной radmin.dll должна совпадать.

Порядок действий в консоли:

  1. Подключитесь к центральному серверу: правой кнопкой по Central 1C:Enterprise 8.3 servers → новый центральный сервер, имя хоста и порт агента (по умолчанию 1540).
  2. Раскройте кластер → Информационные базы. Для каждой базы включите блокировку сеансов и регламентных заданий, как описано выше.
  3. Откройте ветку Сеансы кластера или конкретной базы. Подождите, пока пользователи выйдут сами.
  4. Оставшиеся сеансы выделите и удалите через контекстное меню. Удаление сеанса в консоли — это его принудительное завершение.
  5. Проверьте ветку Соединения: висящие соединения без сеанса тоже допустимо удалить.
  6. Перейдите к остановке службы агента (раздел про службы ниже).

Удаляя сеанс, вы обрываете работу пользователя. Несохранённый документ пропадёт, незавершённая транзакция откатится.

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

Утилита rac: остановка кластера из командной строки

rac — клиент сервера администрирования. Сам по себе он к агенту не подключается: на сервере должен работать ras (по умолчанию порт 1545). Если его нет, запустите вручную из каталога bin платформы:

ras.exe cluster --port=1545 localhost:1540

В Linux ras можно запустить в фоне с ключом --daemon.

Найти кластер и базы

rac localhost:1545 cluster list
rac localhost:1545 infobase summary list --cluster=<UUID_кластера> --cluster-user=admin --cluster-pwd=***

Первая команда выдаёт UUID кластера, вторая — UUID и имена баз.

Заблокировать базу

rac localhost:1545 infobase update --cluster=<UUID_кластера> --infobase=<UUID_базы> ^
  --infobase-user=Администратор --infobase-pwd=*** ^
  --sessions-deny=on --scheduled-jobs-deny=on ^
  --denied-message="Плановые работы, сервер будет доступен в 23:30" ^
  --permission-code=12345

Завершить сеансы

rac localhost:1545 session list --cluster=<UUID_кластера>
rac localhost:1545 session terminate --cluster=<UUID_кластера> --session=<UUID_сеанса>

Команда session list показывает пользователя, базу, тип приложения и время начала. По ней удобно проверить, кто ещё в базе. Для точного списка параметров вашей версии платформы вызовите rac help session или rac help infobase.

После того как сеансов не осталось, останавливайте службу агента.

Если на кластере задан администратор, добавляйте --cluster-user и --cluster-pwd в каждую команду. Без них rac вернёт ошибку прав, а скрипт продолжит выполняться, если вы не проверяете код возврата.

Остановка службы сервера 1С в Windows и Linux

Windows

Точное имя службы посмотрите в оснастке services.msc или командой:

sc query state= all | findstr /I "1C:Enterprise"

Затем остановите её из командной строки, запущенной от имени администратора:

net stop "1C:Enterprise 8.3 Server Agent (x86-64)"

Через services.msc то же самое: правой кнопкой по службе → «Остановить». Запуск обратно — net start с тем же именем.

Linux

С версии платформы 8.3.21 сервер устанавливается как systemd-юнит, в имени которого есть номер версии. Найдите его:

systemctl list-units --all 'srv1cv8*'
sudo systemctl stop srv1cv8-8.3.24.1342@default
sudo systemctl status srv1cv8-8.3.24.1342@default

На старых установках (номер ниже 8.3.21) служба называется srv1cv83 и останавливается так:

sudo systemctl stop srv1cv83
# или
sudo /etc/init.d/srv1cv83 stop

Если сервер администрирования ras работает отдельной службой, его можно не останавливать: он не держит базы. Но при обновлении платформы останавливают и его, иначе каталог старой версии будет занят.

Несколько рабочих серверов

На каждом сервере кластера своя служба агента. Сначала останавливают дополнительные рабочие серверы, последним — центральный. Запускают в обратном порядке: центральный первым. Так рабочие серверы не пытаются переподключиться к недоступному менеджеру кластера.

Проверка после запуска

Остановка считается удачной, когда кластер так же чисто поднимается. После net start или systemctl start проверьте по шагам:

  1. Служба в состоянии «Выполняется» (sc query или systemctl status), без повторных перезапусков.
  2. Процессы ragent и rmngr есть в списке, а rphost появляется при первом входе пользователя.
  3. rac localhost:1545 cluster list отвечает и показывает тот же UUID кластера, что и до остановки.
  4. В консоли видны все информационные базы.
  5. Блокировка начала сеансов снята, если её включали на время работ. Иначе утром никто не войдёт, а пользователи увидят ваше сообщение о плановых работах.

Последний пункт забывают чаще всего: блокировка живёт в реестре кластера и переживает перезапуск службы.

Принудительное завершение процессов rphost, rmngr, ragent

Бывает, что служба висит в состоянии «Остановка» по 5–10 минут и дольше. Чаще всего держит зависший rphost, который выполняет тяжёлый запрос или ждёт ответа СУБД.

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

Windows

sc queryex "1C:Enterprise 8.3 Server Agent (x86-64)"
taskkill /F /PID <PID_из_вывода>
taskkill /F /IM rphost.exe
taskkill /F /IM rmngr.exe

Первая команда покажет PID агента. Сначала завершают рабочие процессы, затем менеджер, затем агент.

Linux

ps aux | grep -E 'ragent|rmngr|rphost' | grep -v grep
sudo pkill -TERM rphost
sudo pkill -9 rphost

Сначала дайте процессам сигнал TERM и подождите полминуты. kill -9 — когда TERM не помог.

Если после принудительной остановки кластер стартует с ошибками, помогает очистка сеансовых данных: при остановленной службе удалите папки snccntx* в каталоге кластера (srvinfo\reg_1541). Файл 1CV8Clst.lst не трогайте: в нём регистрация баз кластера.

Почему кластер 1С не останавливается: диагностика

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

Где искать подробности:

  • 📜 Журнал событий Windows, раздел «Приложение»: агент пишет туда ошибки запуска и остановки.
  • 🐧 journalctl -u srv1cv8-<версия>@default в Linux — вывод юнита за последнее время.
  • 🔍 Технологический журнал (logcfg.xml в каталоге conf платформы) — если зависания повторяются и нужно понять, какой запрос держит процесс.
  • 🗄️ Монитор активности СУБД — блокирующие запросы и долгие транзакции видны там раньше, чем в консоли 1С.

Автоматизация остановки по расписанию

Ночные перезапуски кластера раз в неделю или перед обновлением удобно запускать скриптом. Скелет для Windows:

@echo off
set RAC="C:\Program Files\1cv8\8.3.24.1342\bin\rac.exe"
set CL=<UUID_кластера>
set SRV="1C:Enterprise 8.3 Server Agent (x86-64)"

rem Завершаем все сеансы кластера
for /f "tokens=2 delims=: " %%S in ('%RAC% localhost:1545 session list --cluster=%CL% ^| findstr /B "session "') do (
  %RAC% localhost:1545 session terminate --cluster=%CL% --session=%%S
)

net stop %SRV%
timeout /t 30 /nobreak
taskkill /F /IM rphost.exe 2>nul
net start %SRV%

Строки вывода session list имеют вид session : <UUID>, поэтому строку режем по двоеточию и пробелу и берём второе слово — это и есть UUID сеанса. Если на кластере есть администратор, допишите учётные данные в обе команды rac.

Запускайте скрипт через Планировщик заданий Windows от учётной записи с правами администратора. В Linux тот же сценарий собирается в shell-скрипте и вешается на cron или systemd-таймер:

#!/bin/bash
CL=<UUID_кластера>
for S in $(rac localhost:1545 session list --cluster=$CL | awk '/^session /{print $3}'); do
  rac localhost:1545 session terminate --cluster=$CL --session=$S
done
systemctl restart srv1cv8-8.3.24.1342@default

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

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

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

Остановится ли кластер, если просто перезагрузить сервер?
Да, при выключении ОС служба агента завершается. Но время на корректное закрытие сеансов ограничено, и зависшие процессы будут убиты системой. Плановую остановку лучше делать вручную.
Можно ли остановить только одну базу, не трогая кластер?
Остановить базу нельзя, можно запретить в неё вход и завершить её сеансы. Остальные базы кластера продолжат работать.
Нужно ли останавливать СУБД вместе с кластером 1С?
Нет. Для обновления платформы достаточно остановить службы 1С. СУБД останавливают только при её собственном обслуживании, и уже после 1С.
Что делать, если забыт пароль администратора кластера?
Остановить службу агента и восстановить файл реестра кластера из резервной копии, сделанной до установки пароля, либо обратиться к администратору сервера. Пересоздавать кластер не стоит: пропадёт регистрация баз.
Как перезапустить только рабочие процессы без остановки службы?
В свойствах рабочего сервера и кластера есть параметры автоматического перезапуска рабочих процессов по интервалу и по объёму памяти. Вручную — завершить конкретный rphost: менеджер кластера запустит новый, но сеансы на старом процессе оборвутся.