Перезапуск сервера 1С:Предприятия без потери данных и зависших сеансов
Содержание
Чтобы правильно перезагрузить сервер 1С, сначала заблокируйте начало сеансов и регламентные задания в базах, дождитесь завершения или удалите оставшиеся сеансы в консоли кластера. Затем остановите службу «Агент сервера 1С:Предприятия 8.3» и только после этого перезагружайте Windows или СУБД. Запуск — в обратном порядке: СУБД, затем служба 1С, затем снятие блокировок.
Жёсткий ребут без подготовки обычно заканчивается одним из трёх сценариев: оборванные проведения документов, регламентное задание, которое упало посередине обмена, или служба 1С, поднявшаяся раньше SQL. Ниже — процедура для клиент-серверной 1С 8.3 на Windows Server 2016 и новее, которая обходит все три.
Перезагрузка сервера, службы или одного процесса: что выбрать
Часто весь сервер перезагружать не нужно. Если тормозит одна база или «распух» один рабочий процесс, хватит меньшего вмешательства. Выбирайте минимальный уровень, который решает задачу.
| Уровень | Когда подходит | Что теряют пользователи |
|---|---|---|
Перезапуск одного rphost | Процесс съел память, сеансы на нём зависли | Сеансы только на этом процессе |
| Перезапуск службы агента 1С | Кластер не отвечает, после обновления платформы, после очистки сеансовых данных | Все сеансы всех баз кластера |
| Перезагрузка Windows | Обновления ОС, зависла сама система, проблемы с драйвером ключа | Все сеансы плюс СУБД, если она на этой же машине |
Любой из трёх вариантов обрывает сеансы. Несохранённые документы пропадут, открытые транзакции откатятся. Делайте это в нерабочее время или после предупреждения пользователей.
Если сервер СУБД стоит на той же машине, перезагрузка Windows затрагивает и его. Это главный довод в пользу аккуратной остановки 1С вручную, а не надежды на то, что Windows всё закроет сама.
Подготовка: предупредите пользователей и закройте вход в базы
Цель подготовки — чтобы к моменту остановки службы в кластере не осталось активной работы. Для этого нужны две блокировки в каждой информационной базе.
Блокировка через консоль кластера
- Откройте «Администрирование серверов 1С Предприятия».
- Разверните
Центральные серверы 1С:Предприятия → <ваш сервер> → Кластеры → <кластер> → Информационные базы. - Откройте свойства нужной базы. Введите логин и пароль администратора базы, если запросит.
- Включите флажок «Блокировка начала сеансов включена».
- Заполните «Начало» и «Конец» блокировки, «Сообщение» (его увидят пользователи) и «Код разрешения».
- Там же включите «Блокировка регламентных заданий включена».
Код разрешения нужен администратору. С ним можно войти в заблокированную базу, добавив к строке запуска параметр /UC<код>. Например, при коде reboot — /UCreboot.
💡 Ставьте время начала блокировки на 10–15 минут позже текущего. Типовые конфигурации на БСП показывают сеансам предупреждение заранее и сами завершают работу пользователей к назначенному времени.
Блокировка из самой программы
В конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) то же самое делается без консоли: Администрирование → Обслуживание → Блокировка работы пользователей. Удобно, если у ответственного за базу нет прав администратора кластера.
Кого предупредить заранее
- 📢 Пользователей — за день или хотя бы за час, с точным временем.
- 🔄 Ответственного за обмены. Если обмен с сайтом или филиалом идёт по расписанию, его лучше переждать, а не рвать.
- 🌐 Владельцев внешних интеграций, которые ходят в веб-сервисы и HTTP-сервисы публикации.
Как остановить службу агента сервера 1С
Когда сеансы закрыты, останавливайте службу. Именно служба агента запускает менеджер кластера (rmngr.exe) и рабочие процессы (rphost.exe), поэтому её остановка гасит весь кластер.
Через оснастку «Службы»
- Нажмите
Win + R, введитеservices.msc. - Найдите службу «Агент сервера 1С:Предприятия 8.3». Для 64-битного сервера в названии будет
(x86-64). - Правая кнопка → «Остановить». Дождитесь статуса «Остановлена».
Если на сервере несколько версий платформы, служб может быть две. Проверьте в свойствах путь к исполняемому файлу: в нём есть номер версии, например C:\Program Files\1cv8\8.3.24.1691\bin\ragent.exe.
Из командной строки и PowerShell
Точное системное имя службы видно в её свойствах, поле «Имя службы». Обычно это 1C:Enterprise 8.3 Server Agent (x86-64).
:: Остановка и запуск службы агента 1С
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
net start "1C:Enterprise 8.3 Server Agent (x86-64)"
# Найти все службы 1С и перезапустить агент
Get-Service *1C*
Restart-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"
Если сервер 1С работает на Linux
Порядок тот же, меняются только команды. С платформы 8.3.21 сервер устанавливается как служба systemd, имя юнита содержит номер версии. Сначала найдите его, потом перезапускайте:
systemctl list-units --type=service | grep 1cv8
sudo systemctl stop srv1cv8-8.3.24.1691@default
sudo systemctl start srv1cv8-8.3.24.1691@default
sudo systemctl status srv1cv8-8.3.24.1691@default
Номер версии в имени подставьте свой из вывода первой команды. Если служба не стартует, причину покажет journalctl -u с тем же именем юнита.
Если служба висит в состоянии «Останавливается» дольше 2–3 минут, проверьте в диспетчере задач, остались ли процессы ragent.exe, rmngr.exe, rphost.exe. Их можно завершить вручную, но только когда вы уверены, что пользователей в базах уже нет.
Управление кластером: консоль и утилита rac
Консоль администрирования подключается к агенту сервера по порту 1540. Менеджер кластера слушает 1541, рабочие процессы — диапазон портов, который задан в свойствах рабочего сервера (по умолчанию 1560:1591).
Как удалить оставшиеся сеансы в консоли
- В дереве кластера откройте узел «Сеансы».
- Отсортируйте по колонке с именем приложения. Фоновые задания видны отдельно от клиентских сеансов.
- Выделите сеансы → правая кнопка → «Удалить».
Если сеанс через несколько секунд появляется снова, его порождает регламентное задание или внешняя интеграция. Значит, блокировка регламентных заданий не включена или клиент подключается по веб-сервису.
Без графической консоли: rac
На серверах без рабочего стола или для скриптов удобна утилита rac. Она работает через сервер администрирования ras, который нужно запустить заранее (по умолчанию порт 1545):
cd "C:\Program Files\1cv8\8.3.24.1691\bin"
ras cluster --port=1545 localhost:1540
Дальше в другом окне:
rac localhost:1545 cluster list
rac localhost:1545 session list --cluster=<UUID кластера>
rac localhost:1545 session terminate --cluster=<UUID кластера> --session=<UUID сеанса>
Если на кластере заданы администраторы, добавьте --cluster-user и --cluster-pwd. Остальные параметры смотрите в справке: rac help session.
💡 ras можно зарегистрировать как отдельную службу Windows. Тогда при перезапуске сервера её тоже нужно остановить и поднять, иначе скрипты на rac начнут падать с ошибкой подключения.
Зависший rphost: перезапуск процесса вместо всего сервера
Типичная картина: один rphost.exe занял 10–20 ГБ памяти, пользователи на нём ждут по минуте на каждой операции, остальные работают нормально. Перезагружать сервер ради этого не нужно.
Как найти виновника
- В консоли откройте
Рабочие серверы → <сервер> → Рабочие процессы. - Посмотрите колонки с PID и занятой памятью.
- Найдите этот PID в диспетчере задач на вкладке «Подробности».
- В узле «Сеансы» проверьте, какие сеансы обслуживает этот процесс и кто их владельцы.
Как перезапустить процесс
- 👥 Предупредите владельцев сеансов на этом процессе — их работа оборвётся.
- 🛑 Завершите процесс
rphost.exeс найденным PID в диспетчере задач. - 🔁 Менеджер кластера сам запустит новый рабочий процесс. Остальные сеансы продолжат работу.
Чтобы не ловить такие ситуации вручную, настройте автоматический перезапуск. В свойствах кластера есть поля «Интервал перезапуска» (в секундах), «Допустимый объем памяти» и «Интервал превышения допустимого объема памяти». Например, лимит 12 ГБ и интервал превышения 300 секунд: если процесс держит больше 12 ГБ дольше пяти минут, кластер заменит его новым.
Очистка сеансовых данных при перезапуске
Если после перезапуска службы зависания не уходят, а в журнале видны ошибки сеансовых данных, почистите их кеш. Делается это только при остановленной службе.
- Остановите службу агента.
- Откройте каталог кластера. При установке службой по умолчанию это
C:\Program Files\1cv8\srvinfo\reg_1541\. - Удалите папки
snccntx<GUID>(их может быть несколько). - Запустите службу.
Не удаляйте файл 1CV8Clst.lst в том же каталоге. В нём хранится реестр кластера: список баз, рабочих серверов, администраторов. Без него кластер придётся настраивать заново. Перед чисткой скопируйте весь srvinfo в отдельную папку.
Порядок запуска после перезагрузки сервера 1С
Останавливать сервисы нужно сверху вниз, запускать — снизу вверх. Каждый следующий слой зависит от предыдущего.
| Шаг | Что запускается | Как проверить |
|---|---|---|
| 1 | СУБД: MSSQLSERVER или служба PostgreSQL | Подключение из SQL Management Studio или psql |
| 2 | Менеджер лицензий HASP, если используются аппаратные ключи | Ключ виден в веб-интерфейсе менеджера |
| 3 | Агент сервера 1С | Консоль открывает кластер, видны базы |
| 4 | Сервер администрирования ras, если нужен | rac localhost:1545 cluster list отвечает |
| 5 | Веб-сервер с публикацией (IIS или Apache) | Публикация открывается в браузере |
Если 1С стартует раньше SQL, первые подключения к базе падают с ошибкой СУБД. После загрузки Windows порядок служб не гарантирован. Поставьте службе агента тип запуска «Автоматически (отложенный запуск)» — она стартует позже остальных автоматических служб.
После старта службы снимите в каждой базе обе блокировки: начала сеансов и регламентных заданий. Об этом забывают чаще всего, и утром бухгалтерия звонит с вопросом, почему не пускает в программу.
Ошибки после перезапуска сервера 1С и что с ними делать
Большинство проблем после перезагрузки сервера связаны не с самой 1С, а с окружением: портами, учётной записью службы, порядком старта.
Если ни один вариант не подошёл, откройте «Просмотр событий» Windows, журнал «Приложение». Служба агента пишет туда причину отказа при старте, и текст ошибки обычно указывает на конкретную проблему.
Частые вопросы
Можно ли перезагрузить сервер 1С по расписанию?
net stop и net start для службы агента. Блокировку сеансов на это время задайте заранее в свойствах баз, указав начало и конец.