Агент сервера 1С не нужен до утра: корректная остановка службы без потерь данных

· 10 мин

Содержание

Чтобы остановить агент сервера 1С, откройте Win+R → services.msc, найдите службу «Агент сервера 1С:Предприятия 8.3», нажмите правой кнопкой и выберите «Остановить». Вместе с агентом (ragent.exe) завершатся менеджер кластера (rmngr.exe) и все рабочие процессы (rphost.exe). Все пользователи, работающие с базами этого сервера, потеряют сеансы.

Частая ошибка — сразу «гасить» rphost.exe в диспетчере задач, потому что так быстрее. Процесс исчезнет, но через несколько секунд менеджер кластера запустит новый, а незаписанные данные пользователей пропадут. Корректный порядок другой: запретить новые сеансы, дождаться выхода людей, остановить службу Windows. Всё ниже — про платформу 8.3 на Windows Server 2016 и новее, от конфигурации порядок не зависит.

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

Почему агент 1С нельзя просто «убить» через диспетчер задач

Сервер 1С — это не один процесс, а связка из трёх:

ПроцессРоль
ragent.exeАгент сервера: принимает подключения клиентов и консоли, по умолчанию порт 1540
rmngr.exeМенеджер кластера: распределяет сеансы, порт 1541
rphost.exeРабочие процессы: выполняют код и обращаются к СУБД, порты из диапазона 1560–1591

Служба Windows запускает только ragent.exe, остальные процессы он порождает сам. Когда вы останавливаете службу, агент по очереди закрывает менеджер и рабочие процессы, сохраняет состояние кластера и выходит.

Что происходит при принудительном завершении процесса:

  • 🔴 незаписанные документы пользователей теряются, открытые транзакции откатываются на стороне СУБД;
  • 🔴 файлы реестра кластера в каталоге srvinfo (в первую очередь 1CV8Clst.lst) могут остаться в повреждённом состоянии — тогда после запуска в консоли пропадают базы или кластер;
  • 🟡 сеансовые данные (папки snccntx*) остаются «грязными», сервер стартует медленнее или с ошибками;
  • 🟡 если «убили» только rphost.exe, менеджер кластера тут же поднимет новый — вы ничего не остановите.

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

Подготовка: запрет новых сеансов через консоль кластера 1С

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

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

  1. Откройте «Администрирование серверов 1С Предприятия».
  2. Разверните Центральные серверы 1С → имя сервера → Кластеры → Локальный кластер → Информационные базы.
  3. Откройте свойства нужной базы.
  4. Включите флажок «Блокировка начала сеансов включена», задайте время начала и окончания, напишите сообщение для пользователей.
  5. Если планируете работать в Конфигураторе во время блокировки, заполните «Код разрешения» — с ним можно войти, несмотря на запрет.

Блокировку ставят по каждой базе отдельно. На сервере с десятком баз это долго — тут выручает rac (ниже).

Завершение оставшихся сеансов

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

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

То же через rac

Если на сервере запущена служба удалённого администрирования (ras), то же самое делается из командной строки:

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

Идентификатор кластера возьмите из вывода первой команды. Если на кластере заданы администраторы, добавьте --cluster-user и --cluster-pwd. Остальные параметры смотрите в rac help и rac help session — набор зависит от версии платформы.

💡 После завершения работы с сервером не забудьте снять блокировку сеансов в свойствах баз. Иначе утром пользователи увидят ваше сообщение вместо программы.

Способ 1: остановка агента сервера 1С в оснастке «Службы»

Самый понятный вариант, подходит для разовой остановки.

  1. Нажмите Win+R, введите services.msc, нажмите Enter. Оснастку можно открыть и через «Диспетчер серверов» → «Средства» → «Службы».
  2. Найдите в списке службу «Агент сервера 1С:Предприятия 8.3». В конце названия бывает разрядность (x86-64) или номер версии, если на сервере установлено несколько платформ.
  3. Правой кнопкой → «Остановить».
  4. Дождитесь, пока в колонке «Состояние» исчезнет «Выполняется». Обычно это 10–60 секунд, на нагруженном сервере дольше.
  5. Откройте диспетчер задач, вкладку «Подробности», и убедитесь, что ragent.exe, rmngr.exe и rphost.exe пропали.

Если нужно, чтобы служба не стартовала сама

Остановленная служба с типом запуска «Автоматически» поднимется после перезагрузки сервера. Если вы чините сервер и перезагружаетесь несколько раз:

  • откройте свойства службы, вкладка «Общие»;
  • поставьте «Тип запуска» → «Вручную» или «Отключена»;
  • после работ верните «Автоматически».

Загляните и на вкладку «Восстановление». Если там для сбоев стоит «Перезапуск службы», Windows поднимет агент после аварийного завершения процесса. При штатной остановке через «Службы» это не срабатывает, а вот при taskkill — может.

Какую из служб 1С останавливать

На сервере бывает несколько служб с «1С» в названии:

СлужбаЧто делаетНужно ли останавливать
Агент сервера 1С:Предприятия 8.3Сам сервер 1СДа
Сервер администрирования 1С:Предприятия 8.3 (ras)Даёт доступ консоли и rac по порту 1545Нет, базы через неё не работают
Несколько агентов разных версийКаждый — свой кластер со своими портамиТолько нужный

Если стоят два агента разных версий, сверьте путь в поле «Исполняемый файл» на вкладке «Общие»: там видна папка платформы и порт (-port 1540 или другой).

Способ 2: остановка службы 1С из командной строки (sc, net stop, PowerShell)

Командная строка нужна, когда вы работаете по SSH или PowerShell Remoting, пишете скрипт или просто не хотите листать список служб.

Шаг 1. Узнайте точное имя службы

Отображаемое имя в оснастке и внутреннее имя службы различаются. Для команд нужно внутреннее. Найдите его так (командная строка от имени администратора):

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

Или в PowerShell:

Get-Service | Where-Object { $_.DisplayName -like "*1С*" -or $_.Name -like "*1C*" } | Format-Table Name, DisplayName, Status

Нужна строка SERVICE_NAME в выводе sc или колонка Name в PowerShell. Обычно это что-то вроде 1C:Enterprise 8.3 Server Agent (x86-64) — с пробелами и двоеточием, поэтому в командах имя всегда берут в кавычки.

Шаг 2. Остановите службу

Три равноценных варианта:

net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
sc stop "1C:Enterprise 8.3 Server Agent (x86-64)"
Stop-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"

Подставьте своё имя из шага 1.

КомандаОсобенность
net stopЖдёт завершения и пишет «Служба успешно остановлена». Удобна в bat-скриптах
sc stopОтправляет команду и сразу возвращает управление. Состояние проверяют через sc query
Stop-ServiceЖдёт завершения, с ключом -Force останавливает и зависимые службы

Шаг 3. Проверьте результат

sc query "1C:Enterprise 8.3 Server Agent (x86-64)"
tasklist | findstr /i "ragent rmngr rphost"

В первой команде должно быть STATE : 1 STOPPED, вторая не должна ничего выводить. Запуск — net start, sc start или Start-Service с тем же именем.

Как остановить агент 1С на удалённом сервере

Заходить на сервер по RDP не обязательно. Ваша учётная запись должна быть администратором на удалённой машине, а брандмауэр — пропускать удалённое управление службами.

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

  1. Откройте services.msc на своём компьютере.
  2. В левой панели правой кнопкой по «Службы (локальные)» → «Подключиться к другому компьютеру».
  3. Введите имя или IP-адрес сервера.
  4. Остановите агент так же, как локально.

Через sc

У sc первым параметром можно передать имя сервера:

sc \\SRV-1C stop "1C:Enterprise 8.3 Server Agent (x86-64)"
sc \\SRV-1C query "1C:Enterprise 8.3 Server Agent (x86-64)"

net stop удалённо не работает — только sc или PowerShell.

Через PowerShell Remoting

Invoke-Command -ComputerName SRV-1C -ScriptBlock {
    Stop-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"
    Get-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"
}

Работает, если на сервере включён WinRM (на Windows Server он включён по умолчанию). Ошибка «Отказано в доступе» почти всегда означает, что учётная запись не входит в группу локальных администраторов сервера.

Автоматизация: скрипт перезапуска и планировщик заданий

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

@echo off
set SVC=1C:Enterprise 8.3 Server Agent (x86-64)
set SRVINFO=C:\Program Files\1cv8\srvinfo

net stop "%SVC%"
timeout /t 15 /nobreak >nul

rem Добиваем рабочие процессы, если служба остановилась не полностью
taskkill /F /IM rphost.exe >nul 2>&1
taskkill /F /IM rmngr.exe >nul 2>&1

rem Очистка сеансовых данных
for /d %%D in ("%SRVINFO%\reg_1541\snccntx*") do rd /s /q "%%D"

net start "%SVC%"
echo %date% %time% restart done >> C:\scripts\restart1c.log

Перед использованием проверьте:

  • 📁 путь к srvinfo: его видно в поле «Исполняемый файл» службы после ключа -d;
  • 📁 имя папки reg_1541: цифры совпадают с портом менеджера кластера, при нестандартных портах будут другими;
  • 🔑 имя службы — из шага 1 предыдущего раздела.

Никогда не удаляйте весь каталог srvinfo или файл 1CV8Clst.lst. В них хранится список баз кластера. Чистить можно только папки snccntx*, и только при остановленной службе.

Расписание в планировщике заданий

Создайте задание, которое запускает скрипт от системной учётной записи каждое воскресенье в 3:00:

schtasks /create /tn "Restart 1C Agent" /tr "C:\scripts\restart1c.bat" /sc weekly /d SUN /st 03:00 /ru SYSTEM /rl HIGHEST

Время ставьте так, чтобы не пересечься с резервным копированием СУБД, регламентными заданиями баз и ночными обменами. Если бэкап SQL идёт в 2:00 и длится час, перезапуск в 3:00 его оборвёт.

Перед ночным автоматическим перезапуском
Выполнено: 0 / 5

Типичные ошибки при остановке службы и что они значат

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

Если агент 1С не останавливается никаким способом

Служба висит в «Остановке» больше пяти минут, net stop не помогает. Действуйте по нарастающей.

  1. Посмотрите, что держит сервер. Если база на MS SQL или PostgreSQL, проверьте активные запросы и блокировки в СУБД. Часто это долгий запрос от обработки или обмена, и проще дождаться его конца.
  2. Узнайте PID агента:
    sc queryex "1C:Enterprise 8.3 Server Agent (x86-64)"
    
    В выводе есть строка PID.
  3. Завершите процессы принудительно — сначала рабочие, потом менеджер, потом агент:
    taskkill /F /IM rphost.exe
    taskkill /F /IM rmngr.exe
    taskkill /F /PID <PID_агента>
    
    Если на сервере стоят агенты нескольких версий, не используйте /IM: так вы убьёте процессы всех кластеров. Завершайте по PID, который виден в диспетчере задач вместе с командной строкой процесса.
  4. Почистите snccntx* в папке reg_<порт> при полностью остановленных процессах.
  5. Запустите службу и проверьте в консоли, что все базы на месте.
  6. Если и после этого не стартует — перезагрузите сервер.

Перед принудительным завершением сделайте копию каталога srvinfo. Если после taskkill в консоли пропал кластер или базы, остановите службу и верните 1CV8Clst.lst из этой копии. Пересоздавать кластер и заново регистрировать базы не нужно.

Если зависания повторяются, ищите причину, а не перезапускайте сервер каждую ночь. Включите технологический журнал (файл logcfg.xml в каталоге conf платформы) с событиями EXCP и PROC — он покажет, на чём падают или зависают рабочие процессы.

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

Пропадут ли данные в базах после остановки агента?
Нет. Данные хранятся в СУБД, агент их не держит. Теряются только несохранённые изменения у пользователей, которые работали в момент остановки.
Нужно ли останавливать агент перед обновлением конфигурации?
Нет. Для обновления конфигурации достаточно монопольного доступа к базе: заблокируйте сеансы и завершите их. Агент останавливают для обновления самой платформы, переноса каталога srvinfo или очистки кэша.
Можно ли остановить агент, не трогая другие базы на сервере?
Нет: агент обслуживает все базы своего кластера. Чтобы освободить одну базу, заблокируйте сеансы только в её свойствах в консоли.
Нужно ли останавливать СУБД вместе с агентом 1С?
Нет. MS SQL или PostgreSQL работают независимо. Останавливать их нужно только для обслуживания самой СУБД.
Почему после запуска агента первые пользователи входят долго?
Рабочие процессы стартуют заново и прогревают кэш метаданных конфигураций. Через несколько минут вход ускоряется до обычного.