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

· 10 мин

Содержание

Пользователь жмёт «Провести», и через секунду документ записан. За этой секундой работают три процесса сервера 1С и СУБД: агент принимает соединение, менеджер кластера решает, кто будет обслуживать сеанс, рабочий процесс выполняет код и ходит в базу. Если понимать эту цепочку, медленную работу и обрывы сеансов уже не приходится лечить перезагрузкой наугад.

Коротко: сервер 1С:Предприятия — это не одна программа, а набор процессов (ragent, rmngr, rphost), объединённых в кластер. Они выполняют бизнес-логику, а данные хранятся в отдельной СУБД. Ниже — как это устроено и какие ручки можно крутить.

Из чего состоит сервер: агент, менеджер и рабочие процессы

Серверная часть клиент-серверной 1С собрана из нескольких ролей. Каждая роль — отдельный процесс операционной системы.

ПроцессРольПорт по умолчанию
ragentАгент сервера. Запускается как служба, принимает первое подключение и поднимает остальные процессы1540
rmngrМенеджер кластера. Хранит реестр сеансов, раздаёт нагрузку, держит сервисы блокировок и нумерации1541
rphostРабочий процесс. Исполняет серверный код конфигурации и обращается к СУБДдиапазон 1560–1591
rasСервер администрирования. Нужен консоли и утилите rac1545

Порты — значения по умолчанию, их можно переопределить при установке службы. Если между клиентами и сервером стоит файрвол, откройте не только 1540–1541, но и весь диапазон рабочих процессов. Типичная картина «зайти в список баз можно, а в базу — нет» как раз про закрытый диапазон.

Что такое кластер серверов

Кластер — логическая группа процессов, которая обслуживает набор информационных баз. Один кластер может жить на одной машине, а может быть разнесён на несколько. Важные термины:

  • 🖥 Рабочий сервер — компьютер, на котором запущены рабочие процессы. Их может быть несколько.
  • 🧭 Центральный сервер — машина, где работает главный менеджер кластера. Он один на кластер.
  • 🗂 Информационная база — регистрируется в кластере и привязывается к конкретной СУБД.

Для небольшой организации достаточно одного сервера, где всё это совмещено. Несколько рабочих серверов нужны, когда один компьютер уже не вытягивает память или процессор.

Сведения о самом кластере (список баз, настройки, сеансы) лежат в каталоге данных службы, обычно называется srvinfo. Включите его в резервное копирование: без него базы придётся заново регистрировать в кластере.

Сервисы внутри менеджера кластера

Кроме раздачи нагрузки, менеджер выполняет служебные функции:

  1. Сервис блокировок — следит за управляемыми блокировками, которые код ставит на данные.
  2. Сервис нумерации — выдаёт уникальные номера документов, чтобы два пользователя не получили один номер.
  3. Сервис журнала регистрации — собирает события со всех рабочих процессов.
  4. Сервис полнотекстового поиска — строит и обновляет индекс.
  5. Сервис настроек клиента-сервера и ряд других мелких служб.

Из-за сервиса блокировок и нумерации менеджер — единая точка. Если он «тормозит», притормаживает вся работа кластера, сколько бы рабочих процессов вы ни добавили.

Как проходит сеанс: от запуска клиента до закрытия

Путь одного пользователя выглядит так:

  1. Клиент (тонкий, толстый или веб) обращается по адресу сервера и порту агента.
  2. ragent по имени базы находит нужный кластер и перенаправляет клиента к менеджеру.
  3. Менеджер создаёт сеанс, записывает его в реестр и выбирает рабочий процесс.
  4. Дальше клиент общается уже с rphost. Каждый вызов — открытие формы, запись, отчёт — выполняется там.
  5. При закрытии клиента сеанс завершается, а память освобождается.

Важная деталь: сеанс не привязан к рабочему процессу навсегда. Менеджер распределяет не сеансы целиком, а серверные вызовы. Один и тот же пользователь за день может отработать на разных 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. Откройте монитор ресурсов и проверьте загрузку процессора и память сервера. Если память упирается в потолок, лечить параметры бессмысленно.
  2. Определите, кто занят: рабочие процессы или СУБД. Если нагружена СУБД, ищите тяжёлые запросы, а не крутите кластер.
  3. Посмотрите в консоли сеансы и вызовы: нет ли одного сеанса с огромным временем вызова.
  4. Для разовой диагностики включите технологический журнал на короткое время и отфильтруйте события по длительности.

Технологический журнал быстро распухает. Пишите только нужные события и отключайте его после анализа, иначе диск закончится раньше, чем вы найдёте причину.

Перед тем как менять настройки кластера
Выполнено: 0 / 5

Лицензии: что считает сервер и где упирается

Сервер 1С выдаёт доступ только тем, у кого есть свободная лицензия. Различают два слоя:

  • Серверная лицензия — разрешает запуск сервера 1С. Привязана к аппаратному ключу либо программной лицензии и определяет, на какое число процессоров и ядер он рассчитан в вашей редакции.
  • Клиентские лицензии — на число одновременно работающих пользователей. Бывают на 5, 10, 20, 50 и более мест, их можно складывать.

Лицензии сервер получает при подключении клиента. Если мест не осталось, новый пользователь увидит сообщение о нехватке лицензий, даже когда серверу есть чем считать.

Типовые упоры

  • Не хватает клиентских мест: закройте зависшие сеансы в консоли, прежде чем покупать новые.
  • Сервер не видит ключ: проверьте драйвер защиты, службу и то, что ключ вставлен в нужную машину.
  • Виртуальная машина: аппаратный ключ в неё пробрасывают отдельно, а программные лицензии привязаны к параметрам машины, поэтому клон виртуалки может потерять лицензию.

Лицензионные соглашения читайте у официального поставщика. Эта часть меняется, и по ценам и условиям ориентируйтесь на текущие предложения партнёров.

Типичные проблемы сервера и как их разбирать

Многие сбои повторяются от компании к компании. Вот самые частые симптомы и первые действия.

Диагностика: выберите симптом

Службы и права

Служба агента запускается от отдельной учётной записи. У неё должны быть права на каталог srvinfo и на каталоги, куда пишутся журналы. Если права урезали после аудита безопасности, сервер может молча перестать стартовать, а ошибку придётся искать в журнале операционной системы.

Перезапуск сервера без хаоса

Остановка службы агента обрывает все сеансы. Порядок действий:

  1. Предупредите пользователей и запретите новые подключения к базе.
  2. Дождитесь завершения регламентных заданий и фоновых процессов.
  3. Остановите службу, выполните нужные работы, запустите службу.
  4. Проверьте, что рабочие процессы подняты, и снимите запрет подключений.

Не убивайте процесс rphost в диспетчере задач посреди проведения документов. Транзакции откатятся, но часть данных в кэше пропадёт, а пользователи получат ошибки в случайных местах.

Как не получить проблем: правила эксплуатации

Эти привычки экономят нервы больше, чем любая тонкая настройка.

  • 🛡 Держите резервную копию srvinfo и баз СУБД отдельно, на другом носителе.
  • 📊 Собирайте метрики: память процессов, число сеансов, длительность вызовов. Без истории не понять, что изменилось.
  • 🔄 Обновляйте платформу на тестовом сервере раньше, чем на рабочем.
  • 🧹 Раз в период чистите журналы регистрации и технологические журналы.
  • 📝 Фиксируйте любые изменения в настройках кластера с датой и причиной.
Нужно ли выносить СУБД на отдельный сервер?

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

Сколько рабочих процессов нужно кластеру?
Начните с одного-двух на сервер и наблюдайте за памятью. Когда процессы часто упираются в лимит или вызовы стоят в очереди, добавляйте ещё. Универсального числа нет.
Чем отличается сервер 1С от файлового режима?
В файловом режиме база лежит файлом, а клиент сам читает и пишет его. В клиент-серверном режиме код исполняет сервер и обращается к СУБД, что лучше для многих пользователей и больших объёмов.
Можно ли поставить сервер 1С на Linux?
Да, платформа поддерживает Linux. Обычно в связке с PostgreSQL. Следите за совместимостью версий платформы и СУБД.
Зачем нужен ras и можно ли без него?
ras — сервер администрирования, через него работают консоль и утилита rac. Для рабочей эксплуатации кластера он не обязателен, но управлять без него неудобно.
Что хранится в srvinfo и можно ли его удалять?
Там реестр кластера, настройки, сведения о сеансах. Удалять нельзя: базы придётся регистрировать заново, а настройки потеряются.