Сервер 1С:Предприятия в роли службы: права, регистрация, автоперезапуск
Содержание
Как служба Windows запускается не клиент 1С, а агент сервера 1С:Предприятия — процесс ragent.exe. Проще всего получить службу при установке платформы: в установщике отметить компонент «Сервер 1С:Предприятия 8» и флажок «Установить 1С:Предприятие 8 как сервис Windows
». Если сервер уже стоит, службу регистрируют командой ragent.exe -instsrvc или через sc create.
Служба стартует вместе с Windows, без входа пользователя в систему. Поэтому регламентные и фоновые задания работают ночью, после перезагрузки и при пустом рабочем столе. В файловом варианте такой службы нет: там задания выполняет сеанс клиента, и без открытой 1С они стоят.
| Способ | Когда подходит | Что учесть |
|---|---|---|
| Установщик платформы | Новый сервер, стандартные порты | Учётная запись USR1CV8 создаётся сама |
ragent.exe -instsrvc | Перерегистрация после обновления, своя учётная запись | Запускать из каталога bin нужной версии |
sc create | Нестандартные порты, второй экземпляр, тонкая настройка | Аккуратно с кавычками и пробелами после = |
1. Учётная запись службы и права доступа
Агент сервера не стоит запускать от «Локальной системы» или от доменного администратора. Нужна отдельная учётная запись с минимальными правами. Установщик по умолчанию создаёт локального пользователя USR1CV8 — его и используйте, если нет причин иначе.
Своя учётная запись нужна, когда сервер 1С ходит в сеть: выгружает файлы в общую папку, читает каталог обмена, работает с SQL через проверку подлинности Windows. Тогда заводят доменного пользователя, например DOMAIN\svc-1c.
Что должно быть у учётной записи:
- 🔑 право «Вход в качестве службы»:
secpol.msc → Локальные политики → Назначение прав пользователя; - 📁 полный доступ к каталогу кластера
srvinfo(по умолчаниюC:\Program Files\1cv8\srvinfo); - 📂 чтение и выполнение для каталога платформы
C:\Program Files\1cv8\<версия>\bin; - 📊 членство в группе «Пользователи журналов производительности» — без него сервер не может читать счётчики производительности;
- 🌐 права на сетевые папки, куда база пишет выгрузки и обмены.
Каталог srvinfo лучше вынести на отдельный быстрый диск, например D:\srvinfo. Там лежат реестр кластера, сеансовые данные и кеш — при росте баз он занимает гигабайты.
Отдельно проверьте временный каталог. Рабочие процессы пишут туда файлы при выгрузке отчётов, печати и обменах. Если служба работает от доменной записи, которая ни разу не входила на сервер, профиль может не создаться, и операции с временными файлами начнут падать с ошибкой доступа. Один интерактивный вход под этой записью обычно решает вопрос.
Пароль учётной записи службы делайте бессрочным или заведите напоминание о смене. Истёкший пароль — самая частая причина, по которой служба 1С однажды утром не поднимается.
2. Установка службы 1С при установке платформы
Порядок для нового сервера:
- Запустите
setup.exeиз дистрибутива сервера нужной разрядности. Для рабочих баз берите 64-разрядный сервер. - В списке компонентов отметьте «Сервер 1С:Предприятия 8» и «Администрирование сервера 1С:Предприятия».
- На шаге параметров сервера поставьте флажок «Установить 1С:Предприятие 8 как сервис Windows».
- Выберите: создать пользователя
USR1CV8(задайте пароль) или указать существующего. - Завершите установку и откройте
services.msc.
В списке появится служба с именем вида 1C:Enterprise 8.3 Server Agent (x86-64). Откройте её свойства и проверьте вкладки:
- Общие — тип запуска «Автоматически». Если сервер SQL на той же машине, ставьте «Автоматически (отложенный запуск)», чтобы 1С стартовала после СУБД.
- Вход в систему — нужная учётная запись и актуальный пароль.
- Восстановление — об этом ниже, в разделе про мониторинг.
Отложенный запуск не гарантирует, что СУБД уже готова. Надёжнее прописать зависимость: sc config "<имя службы 1С>" depend= MSSQLSERVER. Учтите, что команда заменяет весь список зависимостей, а не дописывает в него. Имя службы SQL для именованного экземпляра другое — посмотрите его в services.msc.
Строка запуска службы (поле «Исполняемый файл») выглядит примерно так:
"C:\Program Files\1cv8\8.3.25.1374\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
Здесь -port 1540 — порт агента, -regport 1541 — порт главного менеджера кластера, -range 1560:1591 — диапазон для рабочих процессов, -d — каталог кластера. Если в строке есть ключ -debug, а отладка на рабочем сервере не нужна, его стоит убрать.
3. Регистрация службы из командной строки
Командная строка нужна в трёх случаях: после обновления платформы служба смотрит на старый каталог bin; надо поменять порты или srvinfo; на одной машине нужен второй сервер. Командную строку открывайте от имени администратора.
Через ragent.exe
Перейдите в каталог bin новой версии и зарегистрируйте службу:
cd /d "C:\Program Files\1cv8\8.3.25.1374\bin"
ragent.exe -instsrvc -usr .\USR1CV8 -pwd "Пароль" -port 1540 -regport 1541 -range 1560:1591 -d "D:\srvinfo"
ragent.exe -start
Удалить старую регистрацию — ragent.exe -rmsrvc, остановить — ragent.exe -stop. Удаляйте службу из каталога той версии, которой она принадлежит.
Остановка и удаление службы обрывают все сеансы пользователей и фоновые задания. Делайте это вне рабочего времени и предупредите пользователей заранее.
Через sc create
Тот же результат даёт системная утилита sc. После binPath=, start=, obj= обязателен пробел:
sc create "1C:Enterprise 8.3 Server Agent (x86-64)" binPath= "\"C:\Program Files\1cv8\8.3.25.1374\bin\ragent.exe\" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d \"D:\srvinfo\"" start= delayed-auto obj= ".\USR1CV8" password= "Пароль" DisplayName= "Агент сервера 1С:Предприятия 8.3"
sc start "1C:Enterprise 8.3 Server Agent (x86-64)"
Если служба уже есть и нужно только перевести её на новую версию, проще поправить путь: sc config "<имя службы>" binPath= "..." — права и учётная запись сохранятся.
Второй сервер на той же машине
Например, для тестовой версии платформы. Каждому экземпляру — свои порты и свой srvinfo:
| Экземпляр | -port | -regport | -range | -d |
|---|---|---|---|---|
| Рабочий | 1540 | 1541 | 1560:1591 | D:\srvinfo |
| Тестовый | 2540 | 2541 | 2560:2591 | D:\srvinfo_test |
Клиенты тестового сервера подключаются к server:2541, в консоли кластера указывают порт агента 2540.
Служба сервера администрирования RAS
Утилита rac и сторонние консоли работают не с агентом напрямую, а через сервер администрирования ras.exe. Его тоже регистрируют службой:
sc create "1C:Enterprise 8.3 Remote Server" binPath= "\"C:\Program Files\1cv8\8.3.25.1374\bin\ras.exe\" cluster --service --port=1545 localhost:1540" start= auto obj= ".\USR1CV8" password= "Пароль"
Проверка: rac cluster list localhost:1545 должна вернуть кластер с его идентификатором и портом 1541.
4. Консоль администрирования кластера 1С
Оснастка «Администрирование серверов 1С Предприятия» — это MMC-консоль, файл 1CV8 Servers.msc. Ставится вместе с компонентом администрирования.
Подключение:
- Откройте консоль, на узле «Central 1C:Enterprise 8.3 servers» выберите «Создать → Центральный сервер 1С:Предприятия 8.3».
- Укажите имя компьютера и порт агента — 1540.
- Раскройте «Кластеры»: там должен быть «Локальный кластер» с портом 1541.
Если консоль пишет об ошибке компонента или не открывается после обновления платформы, перерегистрируйте radmin.dll той же версии, что и сервер:
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"
В каталоге bin для этого есть готовый RegMSC.cmd — запускайте его от имени администратора. Консоль версии 8.3.24 к серверу 8.3.25 не подключится: версии должны совпадать.
5. Почему служба 1С не запускается
Первое, куда смотреть, — журнал Windows: eventvwr.msc → Журналы Windows → Приложение и Система. Сервер 1С пишет туда причины отказа старта.
Ещё две ситуации, которые путают с поломкой службы:
- 🧩 После обновления платформы работает старый сервер. Новая версия установлена, а служба по-прежнему запускает
ragent.exeиз старого каталога. Клиенты новой версии к нему не подключаются. Лечится правкойbinPathили перерегистрацией из новогоbin. - 🧹 Сервер запускается, но базы ведут себя странно. Повреждён сеансовый кеш в
srvinfo. Остановите службу, удалите только папкиsnccntx*внутри каталога кластера, запустите службу. Файл реестра кластера1CV8Clst.lstне трогайте — в нём список баз и настроек кластера.
Очистка кеша требует остановки службы: все пользователи будут отключены. Планируйте её на нерабочее время.
6. Производительность службы сервера 1С
Служба сама по себе ресурсов почти не ест — нагрузку дают рабочие процессы rphost.exe. Что настроить:
- ⚡ Схема электропитания Windows — «Высокая производительность». На «Сбалансированной» процессор сбрасывает частоту, и сервер 1С заметно тормозит на коротких запросах.
- 🛡️ Исключения антивируса: каталог
srvinfo, каталог платформы и процессыragent.exe,rmngr.exe,rphost.exe. Проверка на лету каждого обращения к кешу сильно замедляет работу. - 💾 Диск под srvinfo — SSD. Там пишутся сеансовые данные и временные файлы.
- 🧠 Память рабочих процессов — в консоли кластера, в свойствах кластера и рабочего сервера. Ограничение памяти на процесс и безопасный расход памяти за один вызов не дают одному тяжёлому отчёту уронить весь сервер.
- 🔁 Перезапуск рабочих процессов — в свойствах кластера задаётся интервал перезапуска. Процесс плавно передаёт сеансы новому, пользователи этого не видят.
Главное правило по памяти: ограничения ставьте с запасом. Слишком низкий порог безопасного расхода прерывает нормальные отчёты и закрытие месяца с ошибкой о превышении памяти.
7. Мониторинг службы и автоматический перезапуск
Если ragent.exe упал, Windows может поднять его сама. В services.msc на вкладке «Восстановление» выставьте для первого, второго и последующих сбоев «Перезапуск службы» через 1 минуту, сброс счётчика — через 1 день. То же из командной строки:
sc failure "1C:Enterprise 8.3 Server Agent (x86-64)" reset= 86400 actions= restart/60000/restart/60000/restart/60000
Это спасает от падения процесса, но не от зависания: зависшая служба для Windows остаётся «Выполняется». Для этого нужен внешний контроль. Простейший вариант — проверка порта агента по расписанию:
$ok = Test-NetConnection -ComputerName localhost -Port 1540 -InformationLevel Quiet
if (-not $ok) {
Write-EventLog -LogName Application -Source "Application" -EventId 1540 -EntryType Error -Message "Агент сервера 1С не отвечает на порту 1540"
}
Скрипт ставят в планировщик заданий раз в 5 минут от имени служебной учётной записи. Запись в журнале подхватит любая система мониторинга. Автоматический перезапуск по такой проверке делать не стоит — он оборвёт сеансы посреди рабочего дня, лучше сигнал администратору.
Для разбора причин сбоев включают технологический журнал: файл logcfg.xml в каталоге conf платформы. Там настраивают запись исключений (EXCP) и дампов процессов при падении. Журнал быстро растёт, поэтому задавайте срок хранения в часах и выключайте его после разбора.