Чёрный пояс 1С. Дата акселератор на выделенном сервере: изоляция нагрузки | infolimp.ru

Чёрный пояс 1С. Дата акселератор на выделенном сервере: как изолировать аналитику от проведения документов

7 августа 2026 · infolimp.ru · Практическое занятие 1 из 5

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

Легенда практического занятия

Центральный офис холдинга держит кластер серверов «1С» на трёх машинах — назовём их SRV1, SRV2, SRV3. Требуется: (1) кластер должен пережить отказ любого одного сервера без остановки пользователей, (2) тяжёлая аналитика не должна тормозить проведение документов, и для неё нужен Дата акселератор на выделенной машине, (3) копия базы на PostgreSQL должна реплицироваться быстро, но без риска потерять консистентность при аппаратном сбое.

Задание

  1. Спроектируйте схему отказоустойчивости кластера. Приведите формулу расчёта минимального количества центральных серверов и точные параметры отслеживания разрыва соединений.
  2. Настройте требования назначения функциональности (ТНФ) так, чтобы SRV3 обслуживал только Дата акселератор и фоновые задания построения отчётов, а SRV1/SRV2 эти задачи выполнять не могли.
  3. Настройте репликацию изменений (Версия 2) на PostgreSQL 15 и предложите параметры СУБД для максимальной скорости записи без потери консистентности при сбое.
  4. Напишите BSL-код, который программно добавляет справочник Номенклатура в состав копии базы TestCopy, используя только реквизит Артикул.

1. Формула отказоустойчивости

Правило, которое обязан знать любой архитектор кластера «1С»:

Количество центральных серверов = Уровень отказоустойчивости + 1. При уровне отказоустойчивости 1 в кластере нужно минимум два центральных сервера — в нашем случае SRV1 и SRV2.

Параметры отслеживания разрыва соединений между процессами кластера и с клиентскими приложениями настраиваются периодом проверки не менее 1000 мс (на практике — 1000 мс период, 5000 мс таймаут: таймаут в 3–10 раз больше периода). Критично: эти параметры должны быть идентичны на всех серверах кластера — расхождение приводит к ложным срабатываниям failover.

2. ТНФ: запираем Дата акселератор на SRV3

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

Для SRV1 и SRV2 — зеркальное запрещающее правило: Сервис Дата акселератора, тип Не назначать. Без этого второго шага платформа может запустить акселератор там же, где сидят операторы, и вся изоляция окажется фиктивной.

3. Репликация PostgreSQL: скорость без потери консистентности

Для стандартной репликации Версии 2 на PostgreSQL 10+ обязателен параметр wal_level = logical в postgresql.conf — без него логическое декодирование изменений просто не запустится.

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

Архитектурное решение: кеширующие RAID-контроллеры с энергонезависимой кеш-памятью (battery-backed или flash-backed write cache) плюс UPS на серверах СУБД. Это позволяет безопасно отключить fsync для реплики и получить кратное ускорение записи, не теряя гарантии при аппаратном сбое — контроллер сам досбросит кеш при восстановлении питания.

Отдельная строка в плане эксплуатации: регулярный REINDEX (или VACUUM) для таблиц реплики — при интенсивном обновлении/удалении данных индексы и MVCC-мусор деградируют быстрее, чем на основной базе.

4. Программная настройка состава копии

// Получение настроек состава и запись изменений
Копия = КопииБазыДанных.Найти("TestCopy");
ЭлементКопии = Копия.Состав.Добавить(Метаданные.Справочники.Номенклатура);

// Явное указание использования только реквизита "Артикул"
ПолеКопии = ЭлементКопии.Поля.Найти("Артикул");
ПолеКопии.Использование = ИспользованиеПоляЭлементаСоставаКопииБазыДанных.Использовать;

Копия.Записать();
КопииБазыДанных.Обновить(Копия, Ложь); // Инициализация обновления состава

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

Что проверить у себя на проекте

Чёрный пояс 1С · Практическое занятие 1 из 5 · Далее: управляемые блокировки на складе

Проверьте свой уровень на платформе токенов infolimp.ru — анонимно, без резюме. Архитектурные кейсы уровня Чёрного пояса засчитываются в историю токена.

Создать токен →