Как устроен кластер серверов 1С:Предприятия и как его настроить под нагрузку
Содержание
Сервер приложений 1С — это служба «Агент сервера 1С:Предприятия 8.3», которая стоит между программой пользователя и СУБД (MS SQL Server или PostgreSQL). Клиент 1С не ходит в базу данных напрямую: он отправляет вызовы серверу приложений, тот выполняет серверный код конфигурации, ставит управляемые блокировки, сам общается с СУБД и возвращает клиенту только результат.
Типичная ситуация: в бухгалтерии пять человек работали в файловой базе, штат вырос до двадцати, и в конце месяца закрытие идёт час, а у остальных всё «висит». Файловый вариант упёрся в потолок. Сервер приложений нужен как раз для этого: он даёт клиент-серверный режим работы, в котором десятки и сотни пользователей работают одновременно, а тяжёлые операции выполняются на мощной машине, а не на ноутбуке бухгалтера.
Сервер приложений и сервер баз данных: кто за что отвечает
В клиент-серверной архитектуре 1С три звена. Их часто путают, потому что в небольших компаниях всё стоит на одном физическом сервере.
| Звено | Что делает | Что хранит |
|---|---|---|
| Клиент (тонкий клиент, веб-клиент) | Показывает формы, принимает ввод | Ничего, кроме кэша и настроек |
| Сервер приложений 1С | Выполняет серверные процедуры, запросы, проведение, регламентные задания; держит сеансы и блокировки | Служебные данные кластера, кэш сеансов |
| Сервер СУБД | Хранит таблицы базы, выполняет SQL | Все данные информационной базы |
Отсюда несколько практических выводов:
- 📦 Данные лежат в СУБД. Резервная копия — это бэкап базы средствами SQL Server или PostgreSQL, а не копия папки сервера 1С.
- 🧠 Нагрузку на процессор при проведении документов и расчёте отчётов создаёт в основном сервер приложений.
- 💾 Нагрузку на диски создаёт в основном СУБД. Поэтому при росте базы их часто разносят на разные машины.
- 🌐 Веб-сервер (IIS или Apache) — отдельная роль. Он нужен только для веб-клиента и HTTP-сервисов и сам ничего не вычисляет: он передаёт запросы в тот же сервер приложений.
Файловый вариант устроен иначе: каждый клиент сам читает файл 1Cv8.1CD по сети. Пока пользователей мало, разница незаметна. При 10–15 одновременных пользователях и базе на несколько гигабайт начинаются блокировки таблиц и долгие ожидания.
Из каких процессов состоит кластер и какие порты он слушает
Сервер приложений 1С — это не одна программа, а набор процессов. Вместе они называются кластером серверов. У каждого процесса своя роль.
| Процесс | Название | Порт по умолчанию | Роль |
|---|---|---|---|
ragent | Агент сервера | 1540 | Точка входа: принимает первое обращение клиента и консоли, запускает остальные процессы |
rmngr | Менеджер кластера | 1541 | Хранит реестр кластера, распределяет сеансы, ведёт блокировки и лицензии |
rphost | Рабочий процесс | 1560–1591 | Выполняет серверный код и запросы к СУБД |
ras | Сервер администрирования | 1545 | Нужен для утилиты rac и сторонних консолей |
Цепочка подключения такая. Клиент обращается к агенту на порт 1540. Агент сообщает адрес менеджера кластера (1541). Менеджер назначает сеансу рабочий процесс из диапазона портов. Консоль администрирования тоже подключается через агент.
Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера, а не кластера. Если в брандмауэре открыт только 1540, клиент дойдёт до агента, но не сможет соединиться с рабочим процессом. Это самая частая причина ошибки «не удаётся установить соединение» после установки.
Строка запуска службы в Windows выглядит так (путь и номер версии у вас свои):
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Ключ -d указывает каталог srvinfo. В нём хранится реестр кластера: список баз, настройки, сеансовые данные. Если на одной машине нужен второй кластер другой версии, его ставят отдельной службой со своими портами, например 2540, 2541 и диапазоном 2560:2591.
Зачем нужен сервер приложений: признаки, что файловой базы мало
Сервер приложений покупают не «на вырост», а под конкретные задачи. Вот признаки, что пора переходить:
- 👥 Одновременно работают больше 10–15 человек, и при проведении документов у коллег появляются ожидания.
- 🐢 Закрытие месяца или расчёт зарплаты идут часами и блокируют работу остальных.
- 🗄️ Размер файла
1Cv8.1CDприближается к десяткам гигабайт, растёт риск повреждения базы. - 🔗 Нужны веб-клиент для удалённых сотрудников, HTTP-сервисы для обмена с сайтом или мобильным приложением.
- 📈 Нужны регламентные задания, которые идут по расписанию без запущенного клиента.
В клиент-серверном режиме регламентные задания выполняет сам сервер. В файловой базе они идут только пока открыт хотя бы один сеанс, и это постоянный источник «почему не загрузился курс валют».
Лицензирование тоже меняется: для клиент-серверного режима нужна лицензия на сервер 1С:Предприятия плюс клиентские лицензии на пользователей. Клиентские лицензии можно установить на сервер, тогда их будет раздавать он. Для этого в свойствах базы в консоли включают флажок «Разрешить выдачу лицензий сервером 1С:Предприятия».
Ориентировочно, для 20–30 пользователей Бухгалтерии 3.0 хватает одной машины, на которой стоят и сервер 1С, и СУБД, с 8 ядрами и 32 ГБ памяти. Для ERP и сотен сеансов роли разносят по разным серверам. Точный расчёт зависит от конфигурации и сценариев, поэтому перед покупкой железа полезно замерить нагрузку на текущей базе.
Установка сервера 1С и регистрация первой базы в кластере
Ниже порядок для Windows Server. На Linux логика та же, отличается установка пакетов и управление службой.
Шаг 1. Установка платформы
- Запустите дистрибутив сервера 1С:Предприятия нужной разрядности (x86-64).
- В списке компонентов отметьте «Сервер 1С:Предприятия 8» и «Модули расширения веб-сервера», если нужен веб-клиент.
- Включите «Установить сервер 1С:Предприятия 8 как сервис Windows».
- Выберите учётную запись. По умолчанию создаётся пользователь
USR1CV8. Ему нужны права «Вход в систему как служба» и полный доступ к каталогуsrvinfo. - Установите «Администрирование сервера 1С:Предприятия» — это консоль кластера.
Шаг 2. Регистрация консоли
Консоль — это оснастка MMC. Она работает только с библиотекой своей версии. После установки или обновления зарегистрируйте её от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll"
Если не сделать этот шаг, консоль откроется с ошибкой создания COM-объекта или не увидит кластер новой версии. Версия radmin.dll должна совпадать с версией сервера.
Шаг 3. Создание информационной базы
- В консоли раскройте
Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → Локальный кластер. - На узле «Информационные базы» вызовите контекстное меню и выберите создание новой базы.
- Заполните имя базы в кластере, тип СУБД, адрес сервера СУБД, имя базы данных, логин и пароль СУБД.
- Для MS SQL Server поставьте смещение дат 2000.
- Включите «Создать базу данных в случае ее отсутствия» и, при необходимости, «Установить блокировку регламентных заданий» — это убережёт копию базы от отправки отчётов и обменов.
Шаг 4. Подключение пользователей
В окне запуска 1С нажмите «Добавить», выберите вариант «На сервере 1С:Предприятия» и укажите два поля: «Кластер серверов 1С:Предприятия» (имя сервера) и «Имя информационной базы в кластере». Строка подключения в итоге выглядит так:
Srvr="srv-1c";Ref="buh";
Версия платформы на клиенте должна совпадать с версией сервера до последней цифры, иначе подключение не пройдёт.
Настройка памяти и производительности рабочих процессов
Основные параметры производительности находятся в свойствах рабочего сервера: в консоли раскройте кластер, узел «Рабочие серверы» и откройте свойства нужного сервера.
| Параметр | Что регулирует | Практика |
|---|---|---|
| Количество ИБ на процесс | Сколько баз обслуживает один rphost | Значение 1 изолирует базы друг от друга: зависание одной не тормозит другие |
| Количество соединений на процесс | Сколько соединений держит один rphost | При превышении сервер запускает новый процесс |
| Временно допустимый объём памяти процессов | Порог, после которого кластер начинает отсчёт интервала превышения | Ставят с запасом от реальной памяти сервера |
| Интервал превышения допустимого объёма памяти | Сколько секунд процесс может быть выше порога | По истечении процесс перезапускается |
| Критический объём памяти процессов | Жёсткий потолок для всех рабочих процессов | При превышении сервер обрывает самый тяжёлый вызов |
| Безопасный расход памяти за один вызов | Лимит на один серверный вызов | Защищает от отчёта, который «съедает» всю память |
В свойствах самого кластера задают уровень отказоустойчивости и режим распределения нагрузки. Там же есть «Интервал перезапуска» рабочих процессов: плановый перезапуск раз в сутки снимает накопленные утечки памяти.
Перезапуск рабочего процесса обрывает сеансы, которые он обслуживает, вместе с несохранёнными данными. Ручной перезапуск и смену параметров памяти делайте вне рабочего времени или после предупреждения пользователей.
Что ещё влияет на скорость, помимо параметров кластера:
- ⚙️ Схема электропитания Windows «Высокая производительность». На сбалансированной схеме процессор сбрасывает частоту, и серверные вызовы идут медленнее.
- 🔄 Устаревшая статистика и фрагментированные индексы в СУБД. Регулярное обслуживание базы в SQL Server или
VACUUM ANALYZEв PostgreSQL дают больше, чем любые настройки 1С. - 📡 Сеть между сервером 1С и СУБД. Если роли на разных машинах, задержка между ними напрямую добавляется к каждому запросу.
- 🧹 Разросшийся сеансовый кэш. Когда кластер ведёт себя странно (сеансы не завершаются, база «помнит» удалённых пользователей), чистят каталоги
snccntx*вsrvinfo\reg_1541.
Чистку snccntx* выполняют только при остановленной службе агента. Остановка службы завершит все сеансы во всех базах кластера, поэтому делайте это вечером, предупредив пользователей.
Мониторинг и диагностика проблем кластера
У сервера приложений три основных инструмента диагностики. Начинайте с простого.
Консоль кластера
В консоли видно сеансы, соединения, рабочие процессы и управляемые блокировки. Для каждого рабочего процесса показаны занятая память и «Средний серверный вызов» — время типичного вызова. Если у одного процесса память растёт без остановки, а у остальных стоит на месте, ищите тяжёлую операцию в сеансах этого процесса.
Через список сеансов можно завершить зависший сеанс пользователя. Это безопаснее перезапуска процесса: оборвётся только один пользователь.
Утилита rac
Утилита командной строки rac работает через сервер администрирования ras, поэтому сначала запустите его (ras cluster или как службу). Базовые команды:
rac localhost:1545 cluster list
rac localhost:1545 session list --cluster=<id-кластера>
rac localhost:1545 session list --cluster=<id-кластера> --licenses
rac localhost:1545 infobase summary list --cluster=<id-кластера>
Если в кластере заданы администраторы, добавляйте --cluster-user и --cluster-pwd. Полный список команд и параметров выводит rac help. Через rac удобно писать скрипты: например, раз в час выгружать число сеансов и лицензий в журнал мониторинга.
Технологический журнал
Когда консоль не показывает причину, включают технологический журнал. Его настройка — файл logcfg.xml в каталоге conf установки платформы. Пример, который пишет исключения, взаимоблокировки и таймауты блокировок:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\techlog" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<event>
<eq property="name" value="TDEADLOCK"/>
</event>
<event>
<eq property="name" value="TTIMEOUT"/>
</event>
<property name="all"/>
</log>
</config>
Параметр history — сколько часов хранить логи. Журнал подхватывается без перезапуска службы. На диске с журналом держите запас места: подробный журнал на нагруженном сервере растёт на гигабайты в час. Закончили диагностику — удалите или переименуйте logcfg.xml.
Безопасность сервера приложений и разграничение прав
Свежий кластер открыт: любой, кто дотянется до порта 1540 с консолью, может удалить базу из кластера. Закройте это в первую очередь.
Три уровня прав на сервере:
- 🛡️ Администраторы центрального сервера. Узел «Администраторы» под центральным сервером в консоли. Могут создавать и удалять кластеры.
- 🔐 Администраторы кластера. Узел «Администраторы» внутри кластера. Управляют базами, сеансами и рабочими серверами. Как только добавлен первый администратор, консоль и
racначинают требовать логин и пароль. - 👤 Пользователи информационной базы. Права внутри конфигурации: роли, профили групп доступа. С кластером они не связаны.
Что ещё настроить:
- 🚫 Не используйте для подключения к СУБД учётную запись
saилиpostgres. Заведите отдельный логин с правами только на базы 1С. - 🔒 Служба агента работает под ограниченным пользователем
USR1CV8, а не под администратором домена или LocalSystem. - 🧱 Ограничьте доступ к портам 1540, 1541, 1545 и диапазону рабочих процессов сетью, где работают пользователи и администраторы.
- 📜 Используйте профили безопасности кластера, если в базах запускают внешние обработки и расширения из непроверенных источников. Профиль ограничивает доступ кода к файловой системе, COM-объектам и интернет-ресурсам.
- 🗝️ Пароль администратора кластера храните в менеджере паролей. Если он утерян, остановите службу и восстановите реестр кластера (
srvinfo) из резервной копии или обратитесь к администратору, который настраивал сервер.
Каталог srvinfo включите в резервное копирование сервера. В нём список баз, настройки рабочих серверов и администраторы. Без него после сбоя кластер придётся настраивать заново, хотя сами данные в СУБД останутся целыми.
Частые вопросы
Можно ли поставить сервер 1С и СУБД на одну машину?
Нужен ли сервер приложений для работы через интернет?
Можно ли на одном сервере держать разные версии платформы?
srv-1c:2541.Работает ли сервер 1С на Linux?
rac или с Windows-машины.Переносит ли сервер приложений данные при смене СУБД?
.dt через Конфигуратор и загружают в новую базу, созданную в кластере на другой СУБД.