Рестарт сервера 1С:Предприятие без потерь: службы, кластер, кэш

· 9 мин

Содержание

Чтобы перезапустить службу 1С:Предприятие на сервере Windows, выполните от администратора net stop и net start с именем службы агента (обычно 1C:Enterprise 8.3 Server Agent (x86-64)). На Linux с платформой 8.3.21 и выше это systemctl restart srv1cv8-<версия>@default, на более старых сборках — systemctl restart srv1cv83.

Частое заблуждение — что достаточно «перезапустить базу» или закрыть зависший клиент. Сервис 1С — это агент сервера ragent, который поднимает менеджер кластера rmngr и рабочие процессы rphost. Пока жив агент, живут и они. Поэтому рестарт службы агента перезапускает весь кластер серверов разом, и все пользователи теряют соединение.

Что сделать перед рестартом службы 1С

Перезапуск обрывает все сеансы на этом сервере: незаписанные документы пропадут, фоновые задания прервутся, длинная проводка или закрытие месяца откатятся. Пять минут подготовки избавляют от звонков «у меня всё вылетело».

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

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

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

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

Как узнать точное имя службы

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

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

Типичные варианты:

СлужбаЗа что отвечает
1C:Enterprise 8.3 Server Agent (x86-64)агент сервера, 64-разрядный
1C:Enterprise 8.3 Server Agentагент сервера, 32-разрядный
1C:Enterprise 8.3 Remote Serverсервер администрирования ras, нужен для rac и веб-консолей

Если служба называется иначе (её регистрировали вручную), смотрите столбец Name в выводе команды выше. Номер порта агента виден в свойствах службы, в строке Исполняемый файл после параметра -port.

Способ 1. Оснастка «Службы»

  1. Нажмите Win + R, введите services.msc.
  2. Найдите службу агента 1С.
  3. Правой кнопкой — Перезапустить.

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

Способ 2. Командная строка net

Запустите cmd от имени администратора:

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

Кавычки обязательны: в имени есть пробелы и скобки. Команда net stop ждёт остановки, поэтому net start сработает только после полного завершения.

Способ 3. PowerShell

Restart-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)" -Force

Ключ -Force нужен, если у службы есть зависимые. Для удалённого сервера удобнее sc:

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

Учтите: sc stop не ждёт остановки, а только отправляет команду. Перед start проверьте состояние через sc \\SRV1C query "...", иначе получите ошибку «служба уже запущена».

Если служба зависла в состоянии «Остановка»

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

  1. Подождите 2–3 минуты, процесс часто завершается сам.
  2. Откройте Диспетчер задач, вкладку Подробности, и проверьте, остались ли ragent.exe, rmngr.exe, rphost.exe.
  3. Принудительно завершите их:
taskkill /F /IM rphost.exe
taskkill /F /IM rmngr.exe
taskkill /F /IM ragent.exe

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

Если на сервере работают две версии платформы, taskkill /IM убьёт процессы обеих. В таком случае завершайте процессы по PID, найдя их в Диспетчере задач по столбцу командной строки.

Перезапуск сервиса 1С в Linux

На Linux способ зависит от версии платформы: начиная с 8.3.21 фирма перешла на systemd-юниты с номером версии в имени.

Платформа 8.3.21 и новее

Юнит называется srv1cv8-<версия>@.service, экземпляр по умолчанию — default. Сначала узнайте точное имя:

systemctl list-units --all | grep -i 1cv8

Затем перезапустите:

sudo systemctl restart srv1cv8-8.3.24.1548@default
sudo systemctl status srv1cv8-8.3.24.1548@default

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

sudo systemctl link /opt/1cv8/x86_64/8.3.24.1548/srv1cv8-8.3.24.1548@.service
sudo systemctl enable srv1cv8-8.3.24.1548@default

Сервер администрирования ras на этих версиях — отдельный юнит, его имя тоже начинается с ras- и содержит номер версии. Найти его можно тем же grep.

Платформа до 8.3.21

Здесь служба называется srv1cv83 и управляется скриптом инициализации:

sudo systemctl restart srv1cv83
# или напрямую
sudo /etc/init.d/srv1cv83 restart

Если процессы не завершились

ps aux | grep -E 'ragent|rmngr|rphost' | grep -v grep

Остались висящие процессы — завершите их по PID сначала обычным kill, а через минуту, если не помогло, kill -9. Служба работает от пользователя usr1cv8, так что команды выполняйте через sudo.

ПлатформаПерезапускПроверка
Windows, любая 8.3net stop / net start или Restart-ServiceGet-Service
Linux, 8.3.21+systemctl restart srv1cv8-<версия>@defaultsystemctl status …
Linux, до 8.3.21systemctl restart srv1cv83systemctl status srv1cv83

Перезагрузка кластера серверов 1С без остановки службы

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

Завершить сеансы одной базы

В консоли кластера откройте Информационные базы → <база> → Сеансы, выделите сеансы и выберите Удалить. Пользователи этой базы увидят разрыв, остальные базы продолжат работать.

То же через rac (нужна запущенная служба ras, по умолчанию порт 1545):

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

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

Перезапуск рабочих процессов по регламенту

В свойствах кластера есть параметры, которые перезапускают rphost без участия администратора:

  • 🔁 Интервал перезапуска — через сколько секунд рабочий процесс заменяется новым. Например, 86400 — раз в сутки.
  • 💾 Допустимый объём памяти — порог, после которого процесс считается «распухшим».
  • ⏱ Интервал превышения допустимого объёма памяти — сколько секунд процесс может держаться выше порога, прежде чем его перезапустят.

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

Очистка кэша сеансов (snccntx)

Классическое лечение «плавающих» ошибок после обновления платформы или при странном поведении кластера — очистка сеансовых данных:

  1. Остановите службу агента.
  2. Откройте каталог кластера: в Windows по умолчанию C:\Program Files\1cv8\srvinfo\reg_1541, в Linux — /home/usr1cv8/.1cv8/1C/1cv8/reg_1541.
  3. Удалите папки, чьи имена начинаются с snccntx.
  4. Запустите службу.

Не трогайте файл 1CV8Clst.lst и папки с GUID-именами баз. В 1CV8Clst.lst хранится реестр кластера: список баз, администраторы, настройки. Перед чисткой скопируйте весь каталог reg_1541 в резервную папку.

Каталог srvinfo может лежать в другом месте — путь задан параметром -d в командной строке службы.

Проверка и диагностика после перезапуска

Служба в статусе «Выполняется» — ещё не значит, что сервер принимает подключения. Проверьте по порядку.

1. Слушаются ли порты. Агент работает на 1540, менеджер кластера на 1541, рабочие процессы — в диапазоне, заданном в свойствах рабочего сервера (по умолчанию 1560–1591).

netstat -ano | findstr ":154"
ss -tlnp | grep -E ':154[0-9]'

2. Видит ли кластер консоль. Подключитесь консолью кластера или выполните rac cluster list. Ответ со списком кластеров — агент жив.

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

4. Снимите блокировку. Не забудьте выключить Блокировка начала сеансов включена, иначе пользователи упрутся в сообщение о блокировке и решат, что сервер сломан.

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

Если причина неясна, смотрите журнал событий Windows (eventvwr.msc, раздел Приложение) или journalctl -u srv1cv8-<версия>@default на Linux. Для глубокого разбора включают технологический журнал logcfg.xml, но это отдельная настройка.

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

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

Windows: bat-файл и планировщик

@echo off
set SVC="1C:Enterprise 8.3 Server Agent (x86-64)"
net stop %SVC%
timeout /t 30 /nobreak
taskkill /F /IM rphost.exe 2>nul
net start %SVC%

Сохраните как C:\scripts\restart1c.bat и зарегистрируйте задание:

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

Задание запустится каждое воскресенье в 4:00 от учётной записи SYSTEM.

Linux: cron

sudo crontab -e
# каждое воскресенье в 04:00
0 4 * * 0 /usr/bin/systemctl restart srv1cv8-8.3.24.1548@default

Что учесть в расписании

  • 🕓 Не ставьте рестарт на время ночных регламентных заданий, обменов и резервного копирования СУБД.
  • 📦 После обновления платформы обновите имя службы в скрипте: на Linux оно содержит номер версии.
  • 🔔 Добавьте в скрипт проверку порта 1541 после старта и уведомление, если сервер не поднялся.

Для частых «распуханий» сначала настройте интервал перезапуска рабочих процессов в свойствах кластера. Часто этого хватает, и полный ночной рестарт службы становится не нужен.

Частые ошибки при рестарте сервиса

  • ❌ Перезапуск сервера целиком вместо службы. Перезагрузка Windows занимает дольше и не даёт больше эффекта, если проблема в процессах 1С.
  • ❌ Удаление всего содержимого srvinfo. Вместе с кэшем уходит реестр кластера, и базы приходится регистрировать заново.
  • ❌ Рестарт не той службы. На сервере с двумя версиями платформы легко перезапустить старую, а проблемная продолжит работать.
  • ❌ Забытая блокировка сеансов. Сервер работает, а войти никто не может.
  • ❌ Остановка службы СУБД вместе с 1С. Для рестарта 1С трогать MS SQL или PostgreSQL не нужно.

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

Сколько длится перезапуск службы 1С?
Обычно 10–60 секунд. Дольше — если рабочие процессы держат большие транзакции или занимают много памяти.
Нужно ли перезапускать службу 1С после обновления конфигурации?
Нет. Обновление конфигурации базы рестарта службы не требует. Перезапуск нужен после установки новой версии платформы на сервер.
Можно ли перезапустить службу 1С без прав администратора Windows?
Нет. Управление службами требует прав локального администратора или явно выданных прав на службу.
Сохранятся ли настройки кластера после рестарта?
Да. Список баз, администраторы и параметры хранятся в каталоге srvinfo и при перезапуске не меняются.
Перезапускать ли службу ras вместе с агентом?
Не обязательно. Служба ras только принимает команды администрирования. Перезапуск нужен, если rac или веб-консоль перестали подключаться.