Перезапуск службы сервера 1С:Предприятия на Windows и Linux
Содержание
Перезапустить сервер 1С можно одной командой: на Windows это net stop и net start для службы «Агент сервера 1С:Предприятия 8.3», на Linux — systemctl restart srv1cv83. Но выполнять её сразу не стоит: перезапуск обрывает все сеансы пользователей и фоновые задания, а незакрытые документы теряются.
Ниже порядок, который работает без сюрпризов: посмотреть, кто в базе, предупредить людей, остановить службу, убедиться, что процессы завершились, и только потом запускать. Отдельно разобраны утилита rac, реестр кластера и запуск по расписанию.
Всё ниже относится к клиент-серверному варианту. В файловой базе службы нет: достаточно закрыть 1С у всех пользователей.
Что проверить перед перезапуском службы
Прежде чем трогать службу, выясните три вещи. Это занимает пять минут и спасает от потерянной работы.
- Кто сейчас работает. Откройте консоль администрирования серверов 1С (оснастка идёт в составе платформы), раскройте нужный кластер и зайдите в «Сеансы». Там видно пользователя, приложение, время начала и последнюю активность.
- Что выполняется в фоне. В той же консоли откройте «Информационные базы» → нужная база → «Фоновые задания». Закрытие периода , регламентные обмены, загрузка выписок — их обрыв может оставить данные в промежуточном состоянии.
- Нет ли длинных транзакций. Если сеанс «завис» на проведении большого документа, лучше дождаться его окончания, чем рвать на середине.
Полезный минимум действий:
- ✅ написать пользователям в чат или рассылку, назвать точное время;
- ✅ в базе поставить запрет начала сеансов с сообщением (свойства информационной базы в консоли кластера, флажок блокировки сеансов);
- ✅ дождаться, пока список сеансов опустеет или останутся только служебные;
- ✅ убедиться, что свежая копия базы есть.
Перезапуск службы 1С в Windows
В составе сервера на Windows работает одна служба — агент сервера. Она поднимает рабочие процессы кластера, поэтому перезапуск агента перезапускает всё.
Через оснастку «Службы»
- Нажмите
Win+R, введитеservices.msc. - Найдите строку «Агент сервера 1С:Предприятия 8.3 (x86-64)». Номер в названии зависит от версии платформы, а если на машине стоит несколько версий, служб будет несколько.
- Правая кнопка → «Перезапустить». Либо «Остановить», пауза, «Запустить».
Если служба долго висит в состоянии «Остановка», это обычно ждут завершения рабочих процессов. Не нажимайте повторно: подождите минуту-две, потом переходите к разделу про зависания ниже.
Из командной строки и PowerShell
Запускайте от имени администратора. Сначала узнайте точное имя службы:
Get-Service | Where-Object { $_.DisplayName -like "*Агент сервера*" } | Format-List Name, DisplayName, Status
Имя службы (поле Name) и подставьте в команды:
net stop "ИмяСлужбы"
net start "ИмяСлужбы"
В PowerShell то же короче:
Restart-Service -Name "ИмяСлужбы" -Force
-Force нужен, чтобы PowerShell не останавливался на зависимых службах. Для самой службы 1С он не ускоряет остановку: ждать завершения процессов всё равно придётся.
Проверка, что всё поднялось
После запуска откройте диспетчер задач и найдите процессы ragent, rmngr и rphost. Первые два появляются сразу, rphost — когда кто-то подключится к базе. Затем зайдите в консоль кластера и убедитесь, что кластер виден и сеансы создаются.
Порты по умолчанию: 1540 у агента, 1541 у главного менеджера кластера, диапазон 1560–1591 у рабочих процессов. Если после перезапуска клиенты не подключаются, проверьте, что их не заняло другое приложение и они открыты в брандмауэре.
Перезапуск сервера 1С в Linux
На Linux агент сервера ставится как служба systemd. В типовой установке она называется srv1cv83.
sudo systemctl stop srv1cv83
sudo systemctl status srv1cv83
sudo systemctl start srv1cv83
Короткий вариант:
sudo systemctl restart srv1cv83
Если unit-файл вы создавали сами или ставили сервер из нестандартного пакета, имя может быть другим. Найти его просто:
systemctl list-units --type=service | grep -i srv1c
Проверка результата:
systemctl is-active srv1cv83
ps -ef | grep -E "ragent|rmngr|rphost" | grep -v grep
Первая команда должна вернуть active. Во второй видны три типа процессов. Журнал запуска смотрите так:
journalctl -u srv1cv83 -n 50 --no-pager
Служба 1С на Linux работает под отдельным пользователем (обычно usr1cv8). Запуск вручную от root создаст файлы кластера с неверными владельцем и правами, и после этого служба может не стартовать.
Управление кластером через rac без остановки службы
Полный перезапуск не всегда нужен. Если проблема в одной базе или нескольких сеансах, хватит утилиты администрирования rac. Она работает через серверную часть ras, которую нужно запустить отдельно:
ras cluster --port=1545 localhost:1540
Теперь можно задавать вопросы кластеру:
rac localhost:1545 cluster list
rac localhost:1545 session list --cluster=<идентификатор_кластера>
rac localhost:1545 infobase summary list --cluster=<идентификатор_кластера>
Идентификатор кластера — длинный UUID из первой команды. Скопируйте его и подставляйте дальше.
Что можно сделать без остановки службы:
| Задача | Команда | Когда подходит |
|---|---|---|
| Закрыть один сеанс | session terminate --cluster=… --session=… | завис один пользователь |
| Закрыть сеансы базы | перебор списка session list по базе | нужен монопольный доступ |
| Посмотреть нагрузку | session list, process list | диагностика перед решением |
Если на машине несколько версий платформы, берите rac и ras той версии, что и у сервера. Утилиты лежат в каталоге bin рядом с серверной частью.
Реестр кластера и каталог данных сервера
Все настройки кластера хранятся на диске в каталоге данных сервера (параметр -d при запуске агента). Внутри лежит папка вида reg_1541, где число — порт главного менеджера кластера. В ней находятся список кластеров и реестры информационных баз.
Это значит, что при обычном перезапуске службы ничего не теряется: кластер, базы и их настройки поднимутся с диска.
Три правила работы с каталогом:
- 🔒 никогда не правьте файлы внутри
reg_1541вручную при работающей службе; - 💾 перед любыми работами с ним остановите службу и сделайте копию каталога;
- 📁 не удаляйте каталоги
snccntx*и подобные «на глаз»: они хранят данные сеансов. Это допустимо только после остановки службы, когда вы точно понимаете, зачем.
Когда есть смысл лезть в этот каталог: служба не стартует после аварийного выключения, в журнале жалобы на повреждённый реестр. Порядок такой: остановить службу, сохранить копию всего каталога, и только потом пробовать восстановить кластер из копии или создать заново. Кластер пересоздаётся быстро, но все базы придётся регистрировать заново, а настройки пользователей и самих баз остаются в СУБД.
Если регистрировать базы заново нужно часто, запишите параметры каждой в обычный текстовый файл. После аварии это экономит час.
Что делать, если служба 1С зависла и не останавливается
Признаки: служба в статусе «Остановка» дольше пяти минут, net stop не возвращается, процесс rphost держит память.
Идём от безопасного к грубому:
- Подождать. Рабочий процесс может дописывать транзакцию. Десять минут — разумный предел для большой базы.
- Закрыть сеансы через rac. Если кластер ещё отвечает, это снимет блокировку остановки.
- Завершить рабочие процессы. На Windows:
taskkill /F /IM rphost.exe. На Linux:sudo pkill -9 rphost. Агент остановится сам. - Завершить агент.
taskkill /F /IM ragent.exeлибоsudo pkill -9 ragent. Это крайняя мера.
Принудительное завершение процессов не сохраняет незавершённые транзакции: СУБД откатит их сама, но данные пользователей потеряются. Если база большая, после такой остановки первое подключение может открываться заметно дольше обычного.
После принудительной остановки проверьте журнал регистрации важных баз и убедитесь, что нет недопроведённых документов в критичных объектах.
Перезапуск по расписанию
Регулярный перезапуск нужен, когда у рабочих процессов растёт память и сервер к вечеру тормозит. Но сначала посмотрите настройки кластера: у рабочих серверов есть параметры допустимого объёма памяти процессов и интервала перезапуска рабочих процессов. Обычно достаточно их, и служба целиком остаётся в покое.
Если всё же нужно расписание, на Windows сделайте bat-файл:
@echo off
net stop "ИмяСлужбы"
timeout /t 30 /nobreak
net start "ИмяСлужбы"
И создайте задание планировщика, который запускает его ночью:
schtasks /create /tn "Restart1C" /tr "C:\scripts\restart1c.bat" /sc daily /st 03:30 /ru SYSTEM
На Linux удобнее таймер systemd либо запись в cron для root:
30 3 * * * /bin/systemctl restart srv1cv83
Перед автоматическим перезапуском добавьте в сценарий включение запрета сеансов и закрытие оставшихся через rac, иначе ночные обмены оборвутся. Время выбирайте после окончания регламентных заданий и резервного копирования.
Автоматический перезапуск маскирует причину утечки. Если сервер приходится перезагружать ежедневно, ищите, какой код или какая обработка забирает память, а не усиливайте расписание.
| Подход | Плюсы | Минусы |
|---|---|---|
| Перезапуск рабочих процессов в настройках кластера | не трогает службу, мягкий | нужно подобрать параметры |
| Перезапуск службы по расписанию | просто, предсказуемо | рвёт сеансы |
| Перезагрузка всего сервера | очищает всё | самый долгий простой |
Службы не поднимаются после перезапуска: быстрая диагностика
Бывает, что net start или systemctl start завершается ошибкой. Не повторяйте команду по кругу, сначала найдите причину в самом симптоме.
journalctl -u srv1cv83 на Linux. Чаще всего причина в правах учётной записи на каталог данных сервера или в занятом порту.ragent или rphost остался в памяти. Найдите их в диспетчере задач или через ps, завершите и запускайте службу снова.1540 и 1541.Когда на машине несколько версий платформы
На одном сервере часто стоят две-три сборки платформы: старая для прежних баз и новая для тестов. У каждой своя служба агента, а порты по умолчанию совпадают, поэтому запустить обе одновременно с настройками по умолчанию не получится.
Перед перезапуском убедитесь, что вы останавливаете именно ту службу, которая обслуживает нужную базу. Версию видно по пути к исполняемому файлу в свойствах службы (Windows) или по пути в unit-файле (Linux). Перепутать две службы — самая обидная ошибка: вы уронили рабочую базу, а проблемную не тронули.
Порядок действий в аварийной ситуации
Когда горит и некогда думать, держите под рукой короткий порядок:
- Включить запрет начала сеансов, чтобы люди не заходили в базу в момент сбоя.
- Сохранить журнал событий или
journalctl: после перезапуска часть следов уйдёт. - Перезапустить службу штатно, не принудительно.
- Проверить кластер и открыть базу под администратором.
- Снять запрет, написать пользователям.
Журнал сохраняйте всегда, даже если перезапуск помог. Через неделю, когда сбой повторится, вам будет с чем сравнить.
Частые вопросы
Сеансы пользователей после перезапуска восстановятся?
Нужно ли останавливать СУБД вместе со службой 1С?
Можно ли перезапускать службу в рабочее время?
Почему после перезапуска кластер не виден в консоли?
1540–1541 и статус службы.