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

· 9 мин

Содержание

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

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

Что именно вы перезапускаете: агент, менеджер и рабочие процессы

Сервер 1С — это не один процесс, а цепочка. Знать её нужно, чтобы не перезапускать лишнее.

ПроцессРольЧто будет, если завершить
ragentАгент сервера. Это и есть «служба» в Windows. Запускает остальноеОстановится весь сервер, все сеансы оборвутся
rmngrМенеджер кластера. Хранит реестр кластера, раздаёт клиентов процессамАгент поднимет его заново, сеансы потеряются
rphostРабочий процесс. В нём выполняется код ваших базСеансы, живущие на этом процессе, оборвутся. Остальные работают
rasСервер администрирования. Нужен утилите rac и удалённым консолямРабота баз не затронута

Что это значит на практике:

  • 🟢 Завис один пользователь — завершайте сеанс, службу не трогайте.
  • 🟡 Разбух по памяти один rphost — перезапустите рабочие процессы через настройки кластера.
  • 🔴 Не отвечает менеджер кластера, консоль не подключается, службу не остановить — перезапускайте службу целиком.

Порты по умолчанию: агент слушает 1540, менеджер кластера — 1541, рабочие процессы получают диапазон 1560–1591. Если после перезапуска клиенты не подключаются, первым делом проверьте, что эти порты открыты в брандмауэре.

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

Перед перезапуском пройдите короткий список. На это уходит минут десять, зато не придётся объяснять бухгалтерам, куда пропал несохранённый документ.

Перед перезапуском службы
Выполнено: 0 / 5

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

Перезапуск службы в середине длинной операции (закрытие месяца, массовое проведение, выгрузка обмена) оставит документы наполовину обработанными. Подождите завершения или отмените задание штатно.

Резервную копию делайте до перезапуска, а не после. Если файл базы кластера (1CV8Clst.lst и каталог reg_1541) повредится при аварийной остановке, восстанавливать придётся из неё.

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

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

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

Если нужной строки нет, значит сервер поставлен без службы или под другим именем. Отсортируйте список по полю «Имя» и поищите по слову 1C.

Из командной строки

Откройте cmd от имени администратора. Сначала узнайте точное имя службы:

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

В выводе SERVICE_NAME — то, что подставляется в команды. Дальше:

net stop "ИМЯ_СЛУЖБЫ"
net start "ИМЯ_СЛУЖБЫ"

Имя с пробелами и двоеточием берите в кавычки. Если net stop висит дольше минуты, не жмите Ctrl+C сразу: служба ждёт, пока корректно закроются рабочие процессы. Перейдите к разделу про аварийную остановку.

Через PowerShell

Get-Service | Where-Object { $_.DisplayName -like "*1C*" -or $_.DisplayName -like "*1С*" }
Restart-Service -Name "ИМЯ_СЛУЖБЫ" -Force

Первая строка нужна, потому что в имени могут встретиться и латинская C, и кириллическая С. Фильтр ловит оба варианта.

Совет: если служба запущена под отдельной учётной записью (обычно так и бывает), после перезапуска проверьте, что она не слетела на «Локальную систему». Права на каталог кластера srvinfo выдаются именно пользователю службы.

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

В Linux служба называется srv1cv83 (для платформы 8.3). Управление — через systemd:

sudo systemctl status srv1cv83
sudo systemctl restart srv1cv83

Остановить и запустить раздельно:

sudo systemctl stop srv1cv83
sudo systemctl start srv1cv83

Если unit-файла нет, ищите скрипт в /etc/init.d/ и запускайте через service srv1cv83 restart. Служба работает под пользователем usr1cv8, а данные кластера лежат в каталоге srvinfo (путь задаётся в файле настроек службы, обычно в /etc/default/ или /etc/sysconfig/).

После старта проверьте, что процессы поднялись:

ps -ef | grep -E "ragent|rmngr|rphost" | grep -v grep
ss -ltnp | grep -E "1540|1541"

Должны быть ragent, rmngr и хотя бы один rphost (рабочие процессы создаются по мере подключения пользователей, поэтому сразу после старта их может не быть). Порт 1540 в списке слушающих обязателен.

Мягкая альтернатива: перезапуск через консоль кластера и утилиту rac

Если службу целиком перезапускать нельзя, начните отсюда.

Консоль администрирования серверов

В Windows это оснастка MMC «Администрирование серверов 1С:Предприятия» (поставляется вместе с сервером). В Linux и при удалённой работе используют утилиту rac с сервером ras.

В консоли разверните кластер и посмотрите три ветки:

  • «Сеансы» — кто и с чем работает, сколько памяти занимает, когда была последняя активность;
  • «Соединения» — подключения, включая фоновые задания и внешние обработки;
  • «Рабочие процессы» — все rphost с объёмом памяти и числом соединений.

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

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

В свойствах кластера есть параметры перезапуска рабочих процессов: интервал перезапуска (в секундах), допустимый объём памяти и интервал превышения этого объёма. Типичная схема: перезапуск раз в сутки, например раз в 86400 секунд, плюс предел по памяти. Когда процесс превышает лимит дольше заданного времени, менеджер сам выводит его из работы и запускает новый. Сеансы на нём пересоздаются.

Это самый безопасный способ «лечить» утечки памяти: служба остаётся на месте, остальные пользователи не замечают ничего.

Те же действия через rac

Запустите ras (в Windows его обычно регистрируют отдельной службой, в Linux запускают из командной строки):

ras cluster --port=1545

Затем в другом окне:

rac localhost:1545 cluster list
rac localhost:1545 session list --cluster=<ИДЕНТИФИКАТОР_КЛАСТЕРА>
rac localhost:1545 process list --cluster=<ИДЕНТИФИКАТОР_КЛАСТЕРА>

Идентификатор кластера — это длинный GUID из первой команды. Завершить сеанс:

rac localhost:1545 session terminate --cluster=<ИД_КЛАСТЕРА> --session=<ИД_СЕАНСА>

Если кластер защищён администратором, добавьте ключи --cluster-user и --cluster-pwd.

Не оставляйте ras открытым на внешний интерфейс. Он даёт управление кластером, а встроенной защиты у него почти нет. Закрывайте порт 1545 брандмауэром или слушайте только localhost.

Если служба зависла: аварийная остановка процессов

Признаки: net stop висит, systemctl stop ждёт до таймаута, консоль кластера не подключается, а в диспетчере задач есть ragent.exe и несколько rphost.exe.

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

Windows

Сначала завершите рабочие процессы, потом агент:

taskkill /F /IM rphost.exe
taskkill /F /IM rmngr.exe
taskkill /F /IM ragent.exe
net start "ИМЯ_СЛУЖБЫ"

Если на машине крутится несколько служб 1С (разные версии платформы), /IM убьёт процессы всех сразу. Тогда завершайте по PID, который виден в диспетчере задач или в tasklist:

taskkill /F /PID 4120

Linux

sudo systemctl kill -s SIGKILL srv1cv83
sudo pkill -9 rphost
sudo pkill -9 rmngr
sudo systemctl start srv1cv83

Использовать kill -9 стоит только после того, как обычная остановка не сработала.

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

Если после аварийной остановки кластер не поднимается, переименуйте (не удаляйте) папку reg_1541 в каталоге srvinfo. Служба создаст её заново. Состав кластера и параметры баз при этом подтянутся из файла реестра, но сеансы и серверные блокировки сбросятся.

После перезапуска: что проверить

Служба в статусе «Работает» ещё не значит, что сервер здоров. Пройдите по короткому списку:

  1. Откройте консоль кластера и убедитесь, что кластер виден, а все нужные информационные базы на месте.
  2. Снимите блокировку начала сеансов, которую включали перед остановкой. Её забывают чаще всего, и потом пользователи пишут, что «база не пускает».
  3. Зайдите в одну из баз сами, под обычной учётной записью, и откройте любой справочник. Первый вход после старта идёт дольше обычного: рабочий процесс создаётся заново, кэш прогревается.
  4. Загляните в журнал регистрации: нет ли ошибок подключения к СУБД и лицензирования.
  5. Проверьте, что лицензии на месте. Если сервер использует программный ключ или ключ защиты на этой же машине, после перезапуска он должен быть доступен службе. Сообщения о нехватке лицензий в первые минуты чаще означают, что сеансы старого сервера ещё не отпустили места.

Если пользователи жалуются, что клиент долго «думает» при подключении, подождите 5–10 минут и повторите проверку. Рабочие процессы набирают нагрузку постепенно.

Автоматизация: перезапуск по расписанию и контроль

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

Windows: планировщик заданий

Файл restart_1c.bat:

@echo off
net stop "ИМЯ_СЛУЖБЫ"
timeout /t 30 /nobreak
taskkill /F /IM rphost.exe 2>nul
taskkill /F /IM rmngr.exe 2>nul
taskkill /F /IM ragent.exe 2>nul
net start "ИМЯ_СЛУЖБЫ"

Пауза в 30 секунд нужна, чтобы служба успела остановиться сама, а taskkill срабатывает только на то, что не завершилось. Создайте задание в «Планировщике заданий» с запуском от имени администратора и триггером на ночь выходного дня.

Linux: cron

30 3 * * 0 /bin/systemctl restart srv1cv83

Эта строка в crontab пользователя root перезапустит службу в воскресенье в 03:30.

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

  • 🔔 Уведомление в мессенджер или почту, если служба не поднялась. Проверка может быть простым скриптом, который смотрит, слушается ли порт 1540.
  • 📈 Мониторинг памяти rphost. Рост до десятков гигабайт — повод разбираться в коде, а не перезапускать по расписанию.
  • 🚫 Не ставьте перезапуск в рабочее время и в дни сдачи отчётности.

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

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

Сеансы пользователей оборвутся при перезапуске службы?
Да, все. Незаписанные документы потеряются, а вот проведённые останутся. Если работа идёт в транзакции, она откатится.
Можно ли перезапустить службу сервера 1С, не останавливая SQL-сервер?
Да. СУБД (PostgreSQL или MS SQL) живёт отдельно и сервера 1С не требует перезапускать. Данные из неё никуда не пропадают.
Как перезапустить только один рабочий процесс rphost?
Завершите его через консоль кластера или командой taskkill /PID (в Linux kill). Менеджер кластера запустит новый, и к нему переподключатся новые сеансы. Работавшие на нём пользователи вылетят.
Какое значение вносить в перезапуск рабочих процессов в свойствах кластера?
Обычно ставят раз в сутки и лимит по памяти. Лимит подбирают от фактического объёма: возьмите типичный размер rphost в пике и добавьте запас примерно 20–30%.
Нужно ли перезапускать сервер после обновления платформы?
Да. Старая служба продолжает работать на прежней версии, пока её не остановят. При установке новой версии рядом создаётся новая служба, и старую обычно отключают вручную.
Что делать, если после перезапуска пропал кластер или список баз?
Проверьте, что служба смотрит на прежний каталог srvinfo (путь задаётся параметром запуска -d). Если нужно, верните его на прежнее место, и список появится вновь.