Остановка агента сервера 1С:Предприятие в Windows и Linux

· 9 мин

Содержание

Агент сервера 1С останавливается как обычная служба: в Windows через services.msc или net stop, в Linux через systemctl stop. Если служба висит в состоянии «Останавливается», процесс ragent завершают принудительно: taskkill /F /IM ragent.exe или kill -9. Но сначала нужно убедиться, что в базах никто не работает .

Типичная ситуация: в пятницу вечером надо обновить платформу, а установщик ругается, что файлы заняты. Или после обновления сервер «подвис», сеансы не закрываются, а служба остановиться не хочет. Ниже порядок действий от безопасного к жёсткому.

Что делает агент и почему его нельзя гасить сразу

Агент сервера (процесс ragent) запускает всё остальное. Под ним живёт менеджер кластера rmngr, а под менеджером рабочие процессы rphost, в которых и выполняется код 1С. Остановили агент, значит, остановили кластер целиком.

Что пропадёт в этот момент:

  • 🔌 все подключения пользователей к серверным базам;
  • ⏳ фоновые и регламентные задания, которые не успели завершиться;
  • 📄 несохранённые данные в открытых документах и формах;
  • 🧩 внешние обработки и обмены, которые идут через сервер.

Файловые базы агент не затрагивает. Если у вас только файловый вариант, останавливать нечего.

Останавливайте агент только когда сеансов нет или все предупреждены. Прерванная посреди проведения запись может оставить документ непроведённым, а долгая операция закрытия месяца уйдёт в откат.

Подготовка: предупредить людей и снять нагрузку

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

Посмотреть активные сеансы

Откройте консоль администрирования серверов 1С, раскройте нужный кластер, затем «Информационные базы» и ветку «Сеансы» нужной базы. В списке видно пользователя, приложение (1С:Предприятие, фоновое задание, COM-соединение) и время последней активности.

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

Запретить новые подключения

В свойствах информационной базы в консоли включите блокировку начала сеансов и задайте текст сообщения. Новые пользователи не зайдут, а старые успеют закончить работу. Сообщение и код разрешения лучше написать сразу: «Сервер будет остановлен в 22:00, сохраните работу».

💡 Блокировка снимается той же галочкой. Не забудьте её снять после запуска, иначе утром никто не войдёт, и вы будете искать причину.

Перед остановкой агента
Выполнено: 0 / 6

Штатная остановка через консоль управления кластером

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

Из консоли делается подготовительная часть:

  1. Выделите нужную базу, откройте «Сеансы».
  2. Выберите сеанс, нажмите «Удалить» (красный крестик). Сеанс завершится, пользователь получит сообщение об отключении.
  3. Повторите для всех сеансов или выделите их пачкой.
  4. Проверьте раздел «Соединения»: там висят соединения служебных процессов, их тоже можно разорвать.

После этого переходите к остановке самой службы.

Как выключить агент сервера 1С в Windows

В Windows агент работает как служба. Название зависит от версии платформы и разрядности. Обычно это что-то вроде «Агент сервера 1С:Предприятия 8.3 (x86-64)». Точное имя смотрите в списке служб.

Через оснастку «Службы»

  1. Нажмите Win+R, введите services.msc.
  2. Найдите службу, в названии которой есть «1С:Предприятия» и «Агент сервера».
  3. Правый клик, пункт «Остановить». Подождите до минуты.
  4. Статус должен смениться на пустой (в старых версиях Windows «Остановлена»).

Через командную строку

Откройте её от имени администратора. Сначала узнайте точное имя службы:

sc query state= all | findstr /i "1C"

Команда выдаст строки SERVICE_NAME и DISPLAY_NAME. Остановить можно по имени:

net stop "имя_службы"

Если в имени есть пробелы и скобки, кавычки обязательны. Запуск обратно — net start "имя_службы".

Через PowerShell

Get-Service | Where-Object { $_.DisplayName -like "*1С*" -or $_.DisplayName -like "*1C*" }
Stop-Service -Name "имя_службы" -Force

Параметр -Force остановит и зависимые службы. У агента сервера они обычно не настроены, но на кастомных установках бывает привязан сервер администрирования ras.

Если у вас запущен сервер администрирования (служба RAS), он зависит от агента. Остановите его первым, тогда агент не будет ждать закрытия соединений.

Остановка агента сервера 1С в Linux

В Linux служба поднимается скриптом установщика платформы. В большинстве дистрибутивов она называется srv1cv83, но у вас может быть иначе: имя зависит от способа установки и версии.

Узнать фактическое имя:

systemctl list-units --type=service | grep -i srv1c
ps -ef | grep ragent

Дальше всё стандартно:

sudo systemctl stop srv1cv83
sudo systemctl status srv1cv83

Если systemd в вашей системе нет, служба управляется скриптом /etc/init.d/srv1cv83 stop.

Проверьте, что процессов не осталось:

ps -ef | grep -E "ragent|rmngr|rphost" | grep -v grep

Пустой вывод означает, что всё остановлено. Если строки остались, переходите к принудительному завершению.

Принудительное завершение, если служба зависла

Служба может висеть в статусе «Останавливается» десять минут и дольше. Типичные причины: рабочий процесс застрял в долгой операции, ждёт ответа от СУБД или упёрся в блокировку на диске. Ждать бессмысленно.

Диспетчер задач и taskkill в Windows

Откройте Диспетчер задач, вкладка «Подробности». Найдите процессы:

ПроцессЧто этоМожно ли убивать
ragent.exeагент серверада, если служба не отвечает
rmngr.exeменеджер кластерада, перезапустится вместе с агентом
rphost.exeрабочий процессда, но прервутся сеансы и операции в нём
1cv8.exeклиент, не серверне трогайте, это чужие сеансы

Порядок такой: сначала rphost, затем rmngr, в последнюю очередь ragent. Командой:

taskkill /F /IM rphost.exe
taskkill /F /IM rmngr.exe
taskkill /F /IM ragent.exe

Если на машине несколько кластеров или несколько версий платформы, /IM убьёт все сразу. Тогда выбирайте по идентификатору:

taskkill /F /PID 4128

PID берите из Диспетчера задач (включите столбец «ИД процесса») или из tasklist | findstr ragent.

kill в Linux

sudo pkill -TERM ragent
sleep 10
sudo pkill -KILL ragent
sudo pkill -KILL rmngr
sudo pkill -KILL rphost

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

Не убивайте процессы клиентов СУБД и сам PostgreSQL или SQL Server вместо ragent. Это разные программы, и потеря сервера баз данных поверх зависшего агента превращается в восстановление из копии.

После принудительной остановки лишние данные в каталоге кластера (по умолчанию srvinfo) остаются. Агент при запуске читает реестр кластера и чаще всего поднимается без проблем. Если после запуска кластер пропал из консоли или появилась ошибка о блокировке файла, смотрите раздел о диагностике.

Остановка через rac и что делать с rmngr

Утилита rac (Remote Administration Client) работает через сервер администрирования ras и управляет кластером из командной строки. Она не останавливает агент. Зато закрывает сеансы и блокирует базы без графической консоли, что удобно в скриптах.

Сначала нужно запустить ras, если он ещё не работает:

ras cluster --port=1545 localhost:1540

Дальше:

rac cluster list
rac session list --cluster=<идентификатор_кластера>
rac session terminate --session=<идентификатор_сеанса> --cluster=<идентификатор_кластера>

Идентификаторы выводятся первыми командами в виде длинных GUID. Для кластера с паролем администратора добавьте --cluster-user и --cluster-pwd.

Теперь про rmngr. Это не утилита для ручного запуска, а процесс менеджера кластера, который порождает агент. Командной строки управления у него нет. Если вы видите совет «остановить через rmngr», он по сути сводится к завершению процесса из Диспетчера задач или командой kill. Остановка только rmngr без агента бесполезна: ragent поднимет менеджер заново.

Служба не останавливается. Что делать?

Почему агент зависает и как найти причину

Если зависание повторяется, одной остановкой не отделаешься. Что проверить по порядку.

Журналы и счётчики

  • 📁 В каталоге srvinfo лежат подкаталоги reg_1541 и подобные. В них журналы технологического процесса: падения рабочих процессов, дампы, ошибки соединений с СУБД.
  • 📊 Системный журнал: в Windows это Просмотр событий (раздел «Приложения»), в Linux journalctl -u srv1cv83.
  • 🖥 Диспетчер задач или top: сколько памяти занимает rphost на момент проблемы.

Частые причины

ПричинаКак проявляетсяЧто делать
Утечка памяти в рабочем процессеrphost растёт до нескольких гигабайт, сервер уходит в свопНастроить временный перезапуск рабочих процессов в свойствах кластера
Зависшая транзакция в СУБДСеансы «висят» на одной операцииНайти блокирующий запрос в СУБД и завершить его
Нехватка места на диске с srvinfoСлужба не запускается или падаетОсвободить место, очистить старые журналы
Антивирус сканирует каталог кластераФризы, долгие остановкиДобавить srvinfo и каталоги платформы в исключения
Несовпадение версий платформыАгент не поднимается после обновленияПроверить, что запущена служба нужной версии

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

Автоматический перезапуск и профилактика

Если сервер приходится перезапускать регулярно, не делайте это руками.

Расписание перезапуска

В Windows создайте задание в Планировщике: действие «Запуск программы», в параметрах скрипт .bat:

net stop "имя_службы"
timeout /t 30 /nobreak
net start "имя_службы"

Тридцать секунд паузы дают процессам освободить порты. Время задавайте ночное, вне окна резервного копирования.

В Linux это делается через cron или таймер systemd:

0 4 * * 0 root systemctl restart srv1cv83

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

Автозапуск после сбоя

В Windows откройте свойства службы, вкладку «Восстановление», и задайте перезапуск службы при первом и втором сбое. В systemd добавьте в unit-файл Restart=on-failure.

Простая гигиена

  1. Не держите агент, СУБД и антивирус на одном диске без запаса места.
  2. Следите за размером каталога журналов и регулярно чистите его.
  3. Перед обновлением платформы останавливайте службу штатно, не выдёргивайте питание машины.
  4. Для сервера с нагрузкой заведите уведомление, если служба упала: проверка статуса раз в минуту и сообщение в мессенджер.

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

Когда служба снова работает, не расходитесь сразу. Пройдите короткую проверку:

  1. В консоли администрирования кластер появился и в нём видны ваши информационные базы.
  2. Блокировка начала сеансов снята, иначе пользователи получат сообщение о запрете входа.
  3. Откройте одну из баз тонким клиентом и проведите любой тестовый документ.
  4. Загляните в журнал регистрации: нет ли ошибок соединения с СУБД в первые минуты.
  5. Через 10–15 минут посмотрите, сколько памяти заняли rphost: резкий рост сразу после старта указывает на проблемную базу или регламентное задание.

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

Можно ли остановить агент сервера, пока пользователи работают?
Технически можно, но их сеансы оборвутся без сохранения. Сначала включите блокировку начала сеансов и закройте подключения.
Что случится с файловыми базами при остановке агента?
Ничего. Они работают напрямую с каталогом и от агента сервера не зависят.
Как понять, что агент остановлен полностью?
В списке процессов нет ragent, rmngr и rphost, а порты 1540 и 1541 свободны. Достаточно проверить netstat или ss.
Нужно ли останавливать агент перед обновлением платформы?
Да. Установщик заменяет файлы, которые заняты запущенными процессами, и без остановки службы обновление либо не пройдёт, либо потребует перезагрузки.
Служба запускается, но кластер в консоли пустой. Это из-за принудительной остановки?
Чаще всего причина в путях или правах: агент запустился с другим каталогом данных или от пользователя без доступа к srvinfo. Проверьте параметры запуска службы.
Порты 1540 и 1541 всегда такие?
Это значения по умолчанию, их можно изменить параметрами запуска агента и настройками кластера. Если у вас другие, сверяйтесь с параметрами службы.