Перезапуск службы сервера 1С:Предприятия на Windows и Linux

· 9 мин

Содержание

Перезапустить сервер 1С можно одной командой: на Windows это net stop и net start для службы «Агент сервера 1С:Предприятия 8.3», на Linux — systemctl restart srv1cv83. Но выполнять её сразу не стоит: перезапуск обрывает все сеансы пользователей и фоновые задания, а незакрытые документы теряются.

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

Всё ниже относится к клиент-серверному варианту. В файловой базе службы нет: достаточно закрыть 1С у всех пользователей.

Что проверить перед перезапуском службы

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

  1. Кто сейчас работает. Откройте консоль администрирования серверов 1С (оснастка идёт в составе платформы), раскройте нужный кластер и зайдите в «Сеансы». Там видно пользователя, приложение, время начала и последнюю активность.
  2. Что выполняется в фоне. В той же консоли откройте «Информационные базы» → нужная база → «Фоновые задания». Закрытие периода , регламентные обмены, загрузка выписок — их обрыв может оставить данные в промежуточном состоянии.
  3. Нет ли длинных транзакций. Если сеанс «завис» на проведении большого документа, лучше дождаться его окончания, чем рвать на середине.

Полезный минимум действий:

  • ✅ написать пользователям в чат или рассылку, назвать точное время;
  • ✅ в базе поставить запрет начала сеансов с сообщением (свойства информационной базы в консоли кластера, флажок блокировки сеансов);
  • ✅ дождаться, пока список сеансов опустеет или останутся только служебные;
  • ✅ убедиться, что свежая копия базы есть.
Перед остановкой службы
Выполнено: 0 / 5

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

В составе сервера на Windows работает одна служба — агент сервера. Она поднимает рабочие процессы кластера, поэтому перезапуск агента перезапускает всё.

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

  1. Нажмите Win+R, введите services.msc.
  2. Найдите строку «Агент сервера 1С:Предприятия 8.3 (x86-64)». Номер в названии зависит от версии платформы, а если на машине стоит несколько версий, служб будет несколько.
  3. Правая кнопка → «Перезапустить». Либо «Остановить», пауза, «Запустить».

Если служба долго висит в состоянии «Остановка», это обычно ждут завершения рабочих процессов. Не нажимайте повторно: подождите минуту-две, потом переходите к разделу про зависания ниже.

Из командной строки и 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 держит память.

Идём от безопасного к грубому:

  1. Подождать. Рабочий процесс может дописывать транзакцию. Десять минут — разумный предел для большой базы.
  2. Закрыть сеансы через rac. Если кластер ещё отвечает, это снимет блокировку остановки.
  3. Завершить рабочие процессы. На Windows: taskkill /F /IM rphost.exe. На Linux: sudo pkill -9 rphost. Агент остановится сам.
  4. Завершить агент. 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 завершается ошибкой. Не повторяйте команду по кругу, сначала найдите причину в самом симптоме.

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

Когда на машине несколько версий платформы

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

Перед перезапуском убедитесь, что вы останавливаете именно ту службу, которая обслуживает нужную базу. Версию видно по пути к исполняемому файлу в свойствах службы (Windows) или по пути в unit-файле (Linux). Перепутать две службы — самая обидная ошибка: вы уронили рабочую базу, а проблемную не тронули.

Порядок действий в аварийной ситуации

Когда горит и некогда думать, держите под рукой короткий порядок:

  1. Включить запрет начала сеансов, чтобы люди не заходили в базу в момент сбоя.
  2. Сохранить журнал событий или journalctl: после перезапуска часть следов уйдёт.
  3. Перезапустить службу штатно, не принудительно.
  4. Проверить кластер и открыть базу под администратором.
  5. Снять запрет, написать пользователям.

Журнал сохраняйте всегда, даже если перезапуск помог. Через неделю, когда сбой повторится, вам будет с чем сравнить.

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

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