Сервер 1С:Предприятия изнутри: кластер, процессы и путь запроса
Содержание
Пользователь жмёт «Провести», и через секунду документ записан. За этой секундой работают три процесса сервера 1С и СУБД: агент принимает соединение, менеджер кластера решает, кто будет обслуживать сеанс, рабочий процесс выполняет код и ходит в базу. Если понимать эту цепочку, медленную работу и обрывы сеансов уже не приходится лечить перезагрузкой наугад.
Коротко: сервер 1С:Предприятия — это не одна программа, а набор процессов (ragent, rmngr, rphost), объединённых в кластер. Они выполняют бизнес-логику, а данные хранятся в отдельной СУБД. Ниже — как это устроено и какие ручки можно крутить.
Из чего состоит сервер: агент, менеджер и рабочие процессы
Серверная часть клиент-серверной 1С собрана из нескольких ролей. Каждая роль — отдельный процесс операционной системы.
| Процесс | Роль | Порт по умолчанию |
|---|---|---|
ragent | Агент сервера. Запускается как служба, принимает первое подключение и поднимает остальные процессы | 1540 |
rmngr | Менеджер кластера. Хранит реестр сеансов, раздаёт нагрузку, держит сервисы блокировок и нумерации | 1541 |
rphost | Рабочий процесс. Исполняет серверный код конфигурации и обращается к СУБД | диапазон 1560–1591 |
ras | Сервер администрирования. Нужен консоли и утилите rac | 1545 |
Порты — значения по умолчанию, их можно переопределить при установке службы. Если между клиентами и сервером стоит файрвол, откройте не только 1540–1541, но и весь диапазон рабочих процессов. Типичная картина «зайти в список баз можно, а в базу — нет» как раз про закрытый диапазон.
Что такое кластер серверов
Кластер — логическая группа процессов, которая обслуживает набор информационных баз. Один кластер может жить на одной машине, а может быть разнесён на несколько. Важные термины:
- 🖥 Рабочий сервер — компьютер, на котором запущены рабочие процессы. Их может быть несколько.
- 🧭 Центральный сервер — машина, где работает главный менеджер кластера. Он один на кластер.
- 🗂 Информационная база — регистрируется в кластере и привязывается к конкретной СУБД.
Для небольшой организации достаточно одного сервера, где всё это совмещено. Несколько рабочих серверов нужны, когда один компьютер уже не вытягивает память или процессор.
Сведения о самом кластере (список баз, настройки, сеансы) лежат в каталоге данных службы, обычно называется srvinfo. Включите его в резервное копирование: без него базы придётся заново регистрировать в кластере.
Сервисы внутри менеджера кластера
Кроме раздачи нагрузки, менеджер выполняет служебные функции:
- Сервис блокировок — следит за управляемыми блокировками, которые код ставит на данные.
- Сервис нумерации — выдаёт уникальные номера документов, чтобы два пользователя не получили один номер.
- Сервис журнала регистрации — собирает события со всех рабочих процессов.
- Сервис полнотекстового поиска — строит и обновляет индекс.
- Сервис настроек клиента-сервера и ряд других мелких служб.
Из-за сервиса блокировок и нумерации менеджер — единая точка. Если он «тормозит», притормаживает вся работа кластера, сколько бы рабочих процессов вы ни добавили.
Как проходит сеанс: от запуска клиента до закрытия
Путь одного пользователя выглядит так:
- Клиент (тонкий, толстый или веб) обращается по адресу сервера и порту агента.
ragentпо имени базы находит нужный кластер и перенаправляет клиента к менеджеру.- Менеджер создаёт сеанс, записывает его в реестр и выбирает рабочий процесс.
- Дальше клиент общается уже с
rphost. Каждый вызов — открытие формы, запись, отчёт — выполняется там. - При закрытии клиента сеанс завершается, а память освобождается.
Важная деталь: сеанс не привязан к рабочему процессу навсегда. Менеджер распределяет не сеансы целиком, а серверные вызовы. Один и тот же пользователь за день может отработать на разных rphost. Поэтому состояние между вызовами хранится не в памяти процесса, а в данных сеанса, которые сервер умеет перекладывать.
Серверный вызов и контекст
Когда вы открываете форму документа, клиент отправляет вызов серверу. Рабочий процесс выполняет серверные процедуры, формирует данные и возвращает результат. Чем меньше таких вызовов и чем легче каждый, тем отзывчивее интерфейс.
Если в обработчике формы стоит цикл с запросом на каждой итерации, нагрузка на сервер умножается на число строк. Это один из самых частых источников «лагов»: сервер справляется, но суммарное время вызовов растёт.
Что бывает с зависшим сеансом
Сеанс, который не отвечает, остаётся в реестре, пока его не завершат вручную или по тайм-ауту. Через консоль кластера можно посмотреть сеансы и принудительно завершить лишние. Это единственный честный способ снять блокировку, которую держит «мёртвый» пользователь, не перезапуская службу.
Связь сервера 1С с СУБД
Сервер 1С сам данных не хранит. Он транслирует запросы на языке 1С в запросы к СУБД и обратно. Поддерживаются PostgreSQL, Microsoft SQL Server, IBM DB2 и Oracle Database. Для небольших установок на Linux обычно ставят PostgreSQL, на Windows — SQL Server.
Что делает рабочий процесс с базой
- переводит запрос 1С в SQL-текст и отправляет его в СУБД;
- получает набор строк и собирает из него объекты и таблицы значений;
- при записи открывает транзакцию, ставит блокировки и фиксирует изменения.
Сервер приложений и СУБД лучше держать на одной быстрой сети либо на одной машине. Задержка между ними прямо добавляется к каждому запросу, а запросов за одну операцию бывают сотни.
Два уровня блокировок
Блокировки бывают двух видов, и путать их нельзя:
| Уровень | Кто ставит | Где виден |
|---|---|---|
| Управляемые блокировки 1С | Код конфигурации и платформа | Сервис блокировок менеджера |
| Блокировки СУБД | Сама СУБД на уровне таблиц и строк | Средства СУБД |
Если пользователь видит ошибку про блокировку, сначала установите, какой уровень сработал. Таймаут «Превышено время ожидания блокировки» лечится по-разному: в одном случае разбирают код, который держит данные слишком долго, в другом — смотрят очереди и транзакции внутри СУБД.
Не меняйте режим блокировок в конфигурации «на всякий случай». Автоматический режим надёжнее, а управляемый даёт выигрыш только при аккуратно написанном коде.
Размещение: один сервер или два
| Схема | Плюсы | Минусы |
|---|---|---|
| 1С и СУБД на одной машине | Нет сетевой задержки, проще администрировать | Борются за одну память и процессор |
| Отдельные серверы под 1С и СУБД | Можно тюнить каждый под свою задачу, выше потолок | Нужна быстрая сеть, больше обслуживания |
Для базы на 10–20 пользователей хватает одного сервера. Разделять стоит, когда видно, что СУБД и рабочие процессы начинают вытеснять друг друга из памяти.
Память, процессы и настройка производительности
Настройки находятся в консоли администрирования серверов 1С: узел «Кластеры», свойства нужного кластера и рабочего сервера. Названия параметров стоит читать в вашей версии платформы, они слегка отличаются от релиза к релизу.
Ключевые параметры
- 🔁 Интервал перезапуска рабочих процессов. Периодически рабочий процесс выгружается и поднимается заново. Это лечит утечки памяти. Частые перезапуски раздражают пользователей, редкие позволяют процессам раздуваться.
- 📏 Допустимый объём памяти процесса. Превышение запускает перезапуск процесса после завершения текущих вызовов.
- 🧮 Число соединений на рабочий процесс. Больше соединений на процесс — меньше процессов и меньше накладных расходов, но хуже изоляция: один тяжёлый сеанс тормозит соседей.
- ⏱ Безопасный расход памяти за один вызов. Защищает от запроса, который пытается съесть всю память.
Универсальных чисел нет. Ориентир такой: на рабочий процесс обычно приходится несколько десятков сеансов, а память под него закладывают с запасом в несколько гигабайт. Точные цифры подбирают по нагрузке: смотрят, как растёт память процессов в течение дня.
С чего начинать, когда «тормозит»
- Откройте монитор ресурсов и проверьте загрузку процессора и память сервера. Если память упирается в потолок, лечить параметры бессмысленно.
- Определите, кто занят: рабочие процессы или СУБД. Если нагружена СУБД, ищите тяжёлые запросы, а не крутите кластер.
- Посмотрите в консоли сеансы и вызовы: нет ли одного сеанса с огромным временем вызова.
- Для разовой диагностики включите технологический журнал на короткое время и отфильтруйте события по длительности.
Технологический журнал быстро распухает. Пишите только нужные события и отключайте его после анализа, иначе диск закончится раньше, чем вы найдёте причину.
Лицензии: что считает сервер и где упирается
Сервер 1С выдаёт доступ только тем, у кого есть свободная лицензия. Различают два слоя:
- Серверная лицензия — разрешает запуск сервера 1С. Привязана к аппаратному ключу либо программной лицензии и определяет, на какое число процессоров и ядер он рассчитан в вашей редакции.
- Клиентские лицензии — на число одновременно работающих пользователей. Бывают на 5, 10, 20, 50 и более мест, их можно складывать.
Лицензии сервер получает при подключении клиента. Если мест не осталось, новый пользователь увидит сообщение о нехватке лицензий, даже когда серверу есть чем считать.
Типовые упоры
- Не хватает клиентских мест: закройте зависшие сеансы в консоли, прежде чем покупать новые.
- Сервер не видит ключ: проверьте драйвер защиты, службу и то, что ключ вставлен в нужную машину.
- Виртуальная машина: аппаратный ключ в неё пробрасывают отдельно, а программные лицензии привязаны к параметрам машины, поэтому клон виртуалки может потерять лицензию.
Лицензионные соглашения читайте у официального поставщика. Эта часть меняется, и по ценам и условиям ориентируйтесь на текущие предложения партнёров.
Типичные проблемы сервера и как их разбирать
Многие сбои повторяются от компании к компании. Вот самые частые симптомы и первые действия.
Службы и права
Служба агента запускается от отдельной учётной записи. У неё должны быть права на каталог srvinfo и на каталоги, куда пишутся журналы. Если права урезали после аудита безопасности, сервер может молча перестать стартовать, а ошибку придётся искать в журнале операционной системы.
Перезапуск сервера без хаоса
Остановка службы агента обрывает все сеансы. Порядок действий:
- Предупредите пользователей и запретите новые подключения к базе.
- Дождитесь завершения регламентных заданий и фоновых процессов.
- Остановите службу, выполните нужные работы, запустите службу.
- Проверьте, что рабочие процессы подняты, и снимите запрет подключений.
Не убивайте процесс rphost в диспетчере задач посреди проведения документов. Транзакции откатятся, но часть данных в кэше пропадёт, а пользователи получат ошибки в случайных местах.
Как не получить проблем: правила эксплуатации
Эти привычки экономят нервы больше, чем любая тонкая настройка.
- 🛡 Держите резервную копию
srvinfoи баз СУБД отдельно, на другом носителе. - 📊 Собирайте метрики: память процессов, число сеансов, длительность вызовов. Без истории не понять, что изменилось.
- 🔄 Обновляйте платформу на тестовом сервере раньше, чем на рабочем.
- 🧹 Раз в период чистите журналы регистрации и технологические журналы.
- 📝 Фиксируйте любые изменения в настройках кластера с датой и причиной.
Частые вопросы
Сколько рабочих процессов нужно кластеру?
Чем отличается сервер 1С от файлового режима?
Можно ли поставить сервер 1С на Linux?
Зачем нужен ras и можно ли без него?
ras — сервер администрирования, через него работают консоль и утилита rac. Для рабочей эксплуатации кластера он не обязателен, но управлять без него неудобно.