Настройка кластера 1С: два диалога консоли и служба RAS

28.08.26

База данных - HighLoad оптимизация

Поставил RAS, а кластер отвечает "различаются версии клиента и сервера". Открыл свойства сервера, а поля интервала перезапуска там больше нет. Разбор двух диалогов консоли: что вписывать в каждое поле и от чего это защищает.

Кластер 1С настраивают один раз при установке, а дальше открывают консоль в тот день, когда что-то упало. К этому моменту половина полей остаётся в состоянии "как поставилось", и понять по ним, что именно грозит вашей базе, довольно трудно: консоль показывает числа, а не последствия.

Это вторая часть разбора. В первой я снимал настройки кода и показывал, чем оборачиваются дефолты, - "Кластер 1С работает на настройках по умолчанию". Здесь практика: как поднять сервер администрирования, если его нет, что вписывать в поля двух диалогов консоли и почему одно из них перестало быть числом. Всё снято на своём стенде, без имён баз и заказчиков.

 

Сначала RAS, иначе смотреть нечем

Всё, что ниже, читается и правится через сервер администрирования (RAS). Это отдельная служба, и установка платформы её не запускает: сервер 1С прекрасно живёт без неё годами, пока кто-нибудь не попробует подключиться консолью или кодом. Тогда приходит отказ соединения, и это не поломка, а просто отсутствующая служба.

Поднимается она одной командой на сервере 1С, от администратора:

sc.exe create "1C RAS 1545" binPath= "\"C:\Program Filescv8\8.3.27.1606in
as.exe\" cluster --service --port=1545 localhost:1540" start= auto
sc.exe start "1C RAS 1545"

Три вещи, на которых тут спотыкаются, и все три я собрал лично.

Первое: rac не заменяет RAS. Частый вопрос "зачем мне служба, у меня же есть rac.exe" построен на путанице. rac это консольный клиент, который сам ходит в RAS; без запущенной службы он так же бесполезен, как и код на встроенном языке.

Второе: версия RAS обязана совпадать с версией кластера. На сервере разработчика платформ обычно несколько. Если поднять RAS от самой свежей, служба стартует, порт слушает, в списке служб всё зелёное - а на первом обращении кластер отвечает "Различаются версии клиента и сервера" и называет обе. У меня на стенде стояло пять версий, RAS поднялся от 8.3.27.2325 при кластере на 8.3.27.1606, и полчаса выглядело так, будто виноват инструмент. Надёжный способ не промахнуться: брать ras.exe из того каталога, где лежит ragent.exe работающей службы агента, а не из "самой новой" папки.

Третье: путь в кавычках. Путь к платформе содержит пробелы, и без кавычек внутри binPath= служба заводится с незакавыченным путём. Работать она будет, но это давно известная дыра: подсунутый в корень диска исполняемый файл запустится вместо неё с правами системы. Аудиторы такие службы отмечают отдельной строкой.

После старта проверьте, что порт слушается: netstat -an | findstr 1545 должен показать LISTENING. И держите в голове, что "localhost" в настройках подключения означает сервер приложений, а не машину администратора: код выполняется на сервере.

 

Подъём службы RAS: распаковка комплекта, запуск .bat, служба появилась в списке

 

Проверка, которой нет в консоли: процесс против настройки

Здесь всплывает главный признак, ради которого стоит смотреть на живые процессы, а не только на настройки. У кластера есть настройка "период перезапуска рабочих процессов": через сколько секунд процесс будет заменён на свежий, чтобы накопленная им память освободилась. У рабочего процесса, в свою очередь, есть время запуска. Сопоставим одно с другим.

Одна оговорка, без которой этот замер устареет прямо у вас на глазах. В консоли кластера на 8.3.27 численного поля "интервал перезапуска" больше нет: и у кластера, и у рабочего сервера вместо него "Расписание перезапуска". Само число никуда не делось, его по-прежнему видно и в объекте платформы, и в rac cluster list как lifetime-limit, просто задать его теперь можно не из этого диалога, а расписанием или через rac. Отсюда ловушка для любого инструмента, который читает только число: на кластере с настроенным расписанием он объявит, что процессы не перезапускаются никогда, и это будет ровно то же правдоподобное враньё, что и в первом замере. Проверять надо оба признака.

На стенде я выставил период перезапуска в тридцать минут и посмотрел на живые процессы. Один из них к этому моменту работал уже вторые сутки:

ЖизньПроцесса = ТекущаяДата() - Процесс.ВремяЗапуска;
// период перезапуска настроен: 1800 секунд (30 минут)
// процесс живёт: 200 000 секунд (2 суток 7 часов)

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

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

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

 

Два диалога, в которых всё это и заполняется

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

 

Свойства кластера в консоли администрирования

 

Расписание перезапуска. Главное поле этого диалога и единственный способ включить перезапуск процессов из консоли на 8.3.27. Пустое поле означает, что процессы не перезапускаются никогда: накопленная ими память не освобождается, пока сервер не упрётся в потолок. Ставить окно минимальной нагрузки, обычно ночь. Раз в сутки достаточно, чаще часа вредно: выключенный процесс дообслуживает старые соединения, и при частых перезапусках такие процессы плодятся быстрее, чем умирают, а память съедают именно они.

И отдельно про то, что в это поле вписывать, потому что подсказки нет ни в консоли, ни в справке rac. Расписание задаётся не привычной строкой платформы, а в стиле cron: пять полей "минуты часы день месяц день_недели". Ежедневный перезапуск в три ночи это 0 3 * * *. Привычное для 1С "каждый день; с 03:00:00" кластер не принимает и отвечает "Неправильно задано расписание перезапуска. Неверное число, в позиции 0" - я на это напоролся и подобрал формат перебором. Записанное значение кластер потом отдаёт обратно в кавычках: restart-schedule : "0 3 * * *". И ещё одна тонкость: поле есть в обоих диалогах, но принимает его именно рабочий сервер, а rac у кластера менять расписание вообще не умеет.

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

Принудительно завершать проблемные процессы. Галка, которой кластер разрешают самому убивать процессы, переставшие отвечать. Если у консоли никто не дежурит круглосуточно, она должна стоять: иначе зависший rphost висит до тех пор, пока его не убьют руками. Работает в паре с допустимым отклонением количества ошибок: пока то нулевое, кластер вообще не помечает процессы проблемными по ошибкам.

Уровень отказоустойчивости. Число серверов, потерю которых кластер переживёт без обрыва сеансов. На одном рабочем сервере поднимать его некуда и незачем, ноль тут честное значение. А вот ноль при двух и более серверах означает, что железо под резерв куплено, а страховки нет. Обратная крайность тоже вредна: значение выше, чем серверов минус один, физически недостижимо, кластер просто держит лишние копии сервисов.

Режим распределения нагрузки. "Приоритет по производительности" - умолчание и обычно правильный выбор. Переключать на память есть смысл только при её реальном дефиците: тогда соединения поедут на процесс с наименьшей занятой памятью, а не на самый быстрый.

Записывать дамп при завершении по превышению памяти. Имеет смысл ровно тогда, когда лимиты памяти заданы. Без дампа процесс, убитый за память, не оставит после себя ничего, и разбираться, кто её съел, будет не по чему. Цена - место на диске: дамп весит столько же, сколько сам процесс.

 

Свойства рабочего сервера в консоли администрирования

 

Второй диалог отвечает за память, и тут у полей есть неочевидная общая логика: ноль означает "считать автоматически", а минус один - "не ограничивать вовсе". Ноль почти везде и есть правильный ответ, а минус один - редкая осознанная настройка, которая чаще попадает в кластер по ошибке.

Безопасный расход памяти за один вызов. Ноль означает автоматическое значение - пять процентов от максимального объёма памяти рабочих процессов. Минус один здесь опаснее всего: при достигнутом лимите памяти любой вызов считается опасным и прерывается, и пользователи начинают ловить обрывы на ровном месте. Если сомневаетесь, ставьте ноль.

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

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

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

Количество ИБ на процесс. Восемь - умолчание платформы. Единица даёт полную изоляцию: каждой базе свой rphost, базы не мешают друг другу, но и процессов будет столько же, сколько активных баз, и память надо считать. Значение, при котором все базы помещаются в один процесс, плохо тем, что одна тяжёлая база утащит за собой соседей и по памяти, и при аварии.

Количество соединений на процесс. Потолок, при достижении которого кластер поднимает следующий процесс. Умолчание платформы - 128.

Обработка из этой статьи проходит ровно по этим полям и по каждому пишет не значение, а последствие, поэтому её вывод можно читать рядом с открытым диалогом: строка "чинить" указывает, какое поле открыть, а колонка "что делать" - что в нём поставить.

 

Как убедиться, что правка доехала

Отдельная беда любой настройки кластера в том, что она применяется не сразу и не ко всему. Значение записано, консоль его показывает, а живые процессы работают по старому - потому что перезапуска ещё не было. Поэтому после каждой правки полезно смотреть не только настройку, но и факт.

Прочитать записанное можно и без консоли:

rac cluster info --cluster=<uuid>
rac server info --cluster=<uuid> --server=<uuid>

В выводе видно и lifetime-limit (тот самый период в секундах, которого больше нет в диалоге), и restart-schedule строкой в кавычках. Забавная деталь: расписание rac отдаёт на чтение, а вот менять его умеет только у рабочего сервера - у кластера такого параметра в rac cluster update нет вовсе.

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

 

Что стоит проверить у себя сегодня

Короткий список, по которому проходит любой чек-ап кластера, и который можно пройти руками за десять минут:

  • расписание перезапуска у рабочего сервера: пусто означает "процессы не перезапускаются никогда";
  • время принудительного завершения: ноль при включённом перезапуске оставляет старые процессы жить вечно;
  • поля памяти рабочего сервера: ноль это авто, минус один это "не ограничивать", и минус один почти всегда ошибка;
  • интервал превышения допустимого объёма памяти: без него порог памяти задан, а реакции на него нет;
  • количество ИБ на процесс: одна тяжёлая база не должна жить в одном процессе со всеми остальными.

Проверки из обеих частей собраны в отдельную обработку "Чек-ап сервера 1С: настройки кластера и рабочих процессов": она читает настройки штатным объектом платформы и по каждой печатает не значение, а последствие. Про расписание она знает, поэтому на 8.3.27 не объявляет ваш кластер ненастроенным. Лежит в Чек-ап сервера 1С: настройки кластера и рабочих процессов, менять в кластере ничего не умеет принципиально.

 

Вопрос к тем, кто дочитал

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

Вступайте в нашу телеграмм-группу Инфостарт

RAS кластер серверов расписание перезапуска rphost рабочий сервер администрирование

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Сервера Системный администратор Программист 1С 8.3 Абонемент ($m)

Два калькулятора расчета железа (процессоры, память, диск) в зависимости от количества пользователей и размера базы для разделенных и совмещенных серверов 1С и СУБД, а также расчета терминального сервера. Описаны формулы расчета и обоснования выбора.

1 стартмани

16.02.2026    8577    116    sapervodichka    31    

93

HighLoad оптимизация Программист 1С 8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Использование оператора «В» для полей или данных составного типа (например, Регистратор) может приводить к неочевидным проблемам.

10.11.2025    14088    ivanov660    48    

57

Администрирование веб-серверов Сервера Нейросети Программист Платные (руб)

Сервер поиска по метаданным и поиска по коду, Сервер экспорта и поиска по документации, Сервер синтаксической проверки кода

17.06.2025    17039    0    Infostart    20    

113

HighLoad оптимизация Программист 1С:Предприятие 8 1C:ERP Бесплатно (free)

Приведем примеры использования различных в динамических списках и посмотрим, почему это плохо.

18.02.2025    15094    ivanov660    39    

62

Сервера Системный администратор Бесплатно (free)

На первый взгляд, добавление второго сервера в кластер 1С не должно вызывать проблем – все просто должно работать. Но на практике дело обстоит иначе. Несмотря на то, что все действительно работает, многие при этом сталкиваются с трудностями. Расскажем, когда нужно задуматься о втором сервере 1С в кластере, какие особенности работы второго сервиса с файлами и сервисами, и какие настройки ТНФ можно сделать для лицензий ПРОФ и КОРП.

31.10.2024    35516    a.doroshkevich    23    

89

HighLoad оптимизация Технологический журнал Системный администратор Программист Бесплатно (free)

Обсудим поиск и разбор причин длительных серверных вызовов CALL, SCALL.

24.06.2024    17616    ivanov660    13    

64

HighLoad оптимизация Программист 1С:Предприятие 8 Бесплатно (free)

Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.

06.06.2024    23675    Evg-Lylyk    73    

46
Для отправки сообщения требуется регистрация/авторизация