Как устроен кластер серверов 1С:Предприятия и как его настроить под нагрузку

· 11 мин

Содержание

Сервер приложений 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. Запустите дистрибутив сервера 1С:Предприятия нужной разрядности (x86-64).
  2. В списке компонентов отметьте «Сервер 1С:Предприятия 8» и «Модули расширения веб-сервера», если нужен веб-клиент.
  3. Включите «Установить сервер 1С:Предприятия 8 как сервис Windows».
  4. Выберите учётную запись. По умолчанию создаётся пользователь USR1CV8. Ему нужны права «Вход в систему как служба» и полный доступ к каталогу srvinfo.
  5. Установите «Администрирование сервера 1С:Предприятия» — это консоль кластера.

Шаг 2. Регистрация консоли

Консоль — это оснастка MMC. Она работает только с библиотекой своей версии. После установки или обновления зарегистрируйте её от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll"

Если не сделать этот шаг, консоль откроется с ошибкой создания COM-объекта или не увидит кластер новой версии. Версия radmin.dll должна совпадать с версией сервера.

Шаг 3. Создание информационной базы

  1. В консоли раскройте Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → Локальный кластер.
  2. На узле «Информационные базы» вызовите контекстное меню и выберите создание новой базы.
  3. Заполните имя базы в кластере, тип СУБД, адрес сервера СУБД, имя базы данных, логин и пароль СУБД.
  4. Для MS SQL Server поставьте смещение дат 2000.
  5. Включите «Создать базу данных в случае ее отсутствия» и, при необходимости, «Установить блокировку регламентных заданий» — это убережёт копию базы от отправки отчётов и обменов.

Шаг 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 с консолью, может удалить базу из кластера. Закройте это в первую очередь.

Три уровня прав на сервере:

  1. 🛡️ Администраторы центрального сервера. Узел «Администраторы» под центральным сервером в консоли. Могут создавать и удалять кластеры.
  2. 🔐 Администраторы кластера. Узел «Администраторы» внутри кластера. Управляют базами, сеансами и рабочими серверами. Как только добавлен первый администратор, консоль и rac начинают требовать логин и пароль.
  3. 👤 Пользователи информационной базы. Права внутри конфигурации: роли, профили групп доступа. С кластером они не связаны.

Что ещё настроить:

  • 🚫 Не используйте для подключения к СУБД учётную запись sa или postgres. Заведите отдельный логин с правами только на базы 1С.
  • 🔒 Служба агента работает под ограниченным пользователем USR1CV8, а не под администратором домена или LocalSystem.
  • 🧱 Ограничьте доступ к портам 1540, 1541, 1545 и диапазону рабочих процессов сетью, где работают пользователи и администраторы.
  • 📜 Используйте профили безопасности кластера, если в базах запускают внешние обработки и расширения из непроверенных источников. Профиль ограничивает доступ кода к файловой системе, COM-объектам и интернет-ресурсам.
  • 🗝️ Пароль администратора кластера храните в менеджере паролей. Если он утерян, остановите службу и восстановите реестр кластера (srvinfo) из резервной копии или обратитесь к администратору, который настраивал сервер.

Каталог srvinfo включите в резервное копирование сервера. В нём список баз, настройки рабочих серверов и администраторы. Без него после сбоя кластер придётся настраивать заново, хотя сами данные в СУБД останутся целыми.

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

Можно ли поставить сервер 1С и СУБД на одну машину?
Да. Для небольших компаний это обычная схема: меньше сетевых задержек и одна лицензия Windows. Разносят роли, когда одна машина перестаёт справляться по памяти или дискам.
Нужен ли сервер приложений для работы через интернет?
Не обязательно: файловую базу можно опубликовать на веб-сервере. Но при нескольких удалённых пользователях клиент-серверный вариант работает заметно стабильнее.
Можно ли на одном сервере держать разные версии платформы?
Да. Каждую версию запускают отдельной службой агента со своими портами, а клиенты подключаются с указанием порта в имени сервера, например srv-1c:2541.
Работает ли сервер 1С на Linux?
Да, сервер 1С:Предприятия выпускается для Linux и часто работает в паре с PostgreSQL. Консоль MMC там недоступна, поэтому администрируют через rac или с Windows-машины.
Переносит ли сервер приложений данные при смене СУБД?
Нет. Для переноса выгружают базу в файл .dt через Конфигуратор и загружают в новую базу, созданную в кластере на другой СУБД.