Рестарт сервера 1С:Предприятие без потерь: службы, кластер, кэш
Содержание
Чтобы перезапустить службу 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С
Перезапуск обрывает все сеансы на этом сервере: незаписанные документы пропадут, фоновые задания прервутся, длинная проводка или закрытие месяца откатятся. Пять минут подготовки избавляют от звонков «у меня всё вылетело».
- Предупредите пользователей. Назовите время и длительность простоя, обычно хватает 5–10 минут.
- Проверьте активные сеансы и задания. В консоли кластера откройте узел
Сеансынужной базы. Если там идёт обновление конфигурации , загрузка.dtили закрытие месяца — дождитесь окончания. - Запретите новые подключения. В консоли кластера откройте свойства информационной базы и включите флажок
Блокировка начала сеансов включена, задайте сообщение и код разрешения. Так никто не зайдёт в момент остановки. - Остановите регламентные задания, если перезапуск длительный: флажок
Блокировка регламентных заданий включенатам же, в свойствах базы. - Запишите имя службы и версию платформы. Пригодится, если служба не поднимется.
Не перезапускайте службу 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. Оснастка «Службы»
- Нажмите
Win + R, введитеservices.msc. - Найдите службу агента 1С.
- Правой кнопкой —
Перезапустить.
Способ наглядный, но неудобен, если нужно управлять сервером удалённо или из скрипта.
Способ 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 "...", иначе получите ошибку «служба уже запущена».
Если служба зависла в состоянии «Остановка»
Бывает, что агент не может завершить рабочий процесс: тот держит длинную транзакцию или упёрся в память. Тогда:
- Подождите 2–3 минуты, процесс часто завершается сам.
- Откройте Диспетчер задач, вкладку
Подробности, и проверьте, остались лиragent.exe,rmngr.exe,rphost.exe. - Принудительно завершите их:
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.3 | net stop / net start или Restart-Service | Get-Service |
| Linux, 8.3.21+ | systemctl restart srv1cv8-<версия>@default | systemctl status … |
| Linux, до 8.3.21 | systemctl restart srv1cv83 | systemctl 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)
Классическое лечение «плавающих» ошибок после обновления платформы или при странном поведении кластера — очистка сеансовых данных:
- Остановите службу агента.
- Откройте каталог кластера: в Windows по умолчанию
C:\Program Files\1cv8\srvinfo\reg_1541, в Linux —/home/usr1cv8/.1cv8/1C/1cv8/reg_1541. - Удалите папки, чьи имена начинаются с
snccntx. - Запустите службу.
Не трогайте файл 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 не нужно.