Как подготовить 1С к большому количеству пользователей

 

 

 

 

СТРАТЕГИЯ // ENTERPRISE_SCALABILITY

архитектура, расчёт нагрузки и стратегия масштабирования

Рост числа пользователей — не самостоятельная техническая проблема. Проблема возникает, когда архитектура информационной системы перестаёт соответствовать интенсивности бизнес-операций, требованиям к времени отклика и условиям эксплуатации предприятия.

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

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

[ INFRASTRUCTURE_CHECK ]
LOAD_CHARACTER: CHANGED
PEAK_LOADS: REGULAR
RESOURCE_REDUNDANCY: EXHAUSTED

Подготовка 1С к росту требует другого подхода: сначала определить профиль будущей нагрузки, затем установить ограничения действующей архитектуры, сравнить варианты масштабирования и подтвердить выбранное решение испытаниями.

В этой статье рассматривается полный цикл такой работы — от модели бизнес-операций до критериев приёмки промышленной системы. Материал предназначен для руководителей предприятий, ИТ-директоров, архитекторов корпоративных систем и специалистов, отвечающих за эксплуатацию 1С.

 

 

АНАЛИЗ НАГРУЗКИ // CAPACITY_PLANNING

Главный вопрос масштабирования: что именно должно вырасти?

Предположим, предприятие использует 1С для управления производством, складом, закупками и финансами. Сейчас системой пользуются 250 сотрудников. Через год планируется увеличить штат до 400 человек, открыть дополнительный склад и организовать вторую производственную смену.

На первый взгляд задача очевидна: нужно подготовить инфраструктуру к увеличению числа пользователей на 60%.

// METRIC_MISMATCH_ALERT //
Прогноз: рост штата +60% (до 400 человек)
Критический фактор: количество сотрудников не отражает профиль нагрузки

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

Рассмотрим два сценарию.

USER_GROWTH_INPUT
 
 
 
[ СЦЕНАРИЙ 1 ]
Просмотр справочников
 
Проверка статусов
 
Низкая стоимость
[ СЦЕНАРИЙ 2 ]
Регистрация операций
 
Складские движения
 
Высокая конкуренция

В первом случае новые сотрудники преимущественно просматривают справочники, проверяют статусы документов и формируют небольшое количество отчётов.

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

Число пользователей одинаково, но профиль нагрузки различается.

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

Именно поэтому инфраструктуру нельзя корректно спроектировать исключительно по количеству лицензий, сеансов или зарегистрированных сотрудников.

 

 

МЕТРИКИ // LOAD_COMPONENTS

Четыре разных показателя, которые нельзя смешивать

[ METRIC_01 ]
Зарегистрированные пользователи
— сотрудники, которым предоставлен доступ к системе.
[ METRIC_02 ]
Одновременные сеансы
— подключения, существующие в определённый момент времени.
[ METRIC_03 // CRITICAL ]
Активные пользователи
— пользователи, которые действительно выполняют действия в рассматриваемом интервале.
[ METRIC_04 // ENGINE_LOAD ]
Интенсивность операций
— количество и характер действий, которые система должна обработать за единицу времени.

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

ВИЗУАЛ // КАК БИЗНЕС-ПЛАН ПРЕВРАЩАЕТСЯ В ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ
Рост предприятияНовые пользователи и процессыИнтенсивность и состав операцийОдновременность + объём данныхТребования к производительностиАрхитектура и ресурсы

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

 

 

ПРОЕКТИРОВАНИЕ // LOAD_MODELING

Как построить модель нагрузки, пригодную для расчётов

Модель нагрузки должна описывать не абстрактные 400 пользователей, а конкретные операции, которые они выполняют.

Для каждой критичной операции фиксируются:

  • количество выполнений за определённый период;
  • интенсивность выполнения в пиковые интервалы;
  • типичные параметры операции и объём обрабатываемых данных;
  • время выполнения;
  • влияние на процессор, память, СУБД и подсистему хранения;
  • вероятность одновременного выполнения с другими операциями;
  • допустимая задержка с точки зрения бизнеса.
[ TRANSACTION_PROFILE ]
ANALYTICS: SYSTEM_CRITICAL
PEAK_INTERVALS: ACCOUNTED
BACKGROUND_THREADS: TRUE

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

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

 

 

МАТЕМАТИКА НАГРУЗКИ // INTENSITY_CALCULATION

Расчёт интенсивности операций

Для предварительной оценки можно использовать простую модель.

Пусть:

  • N — количество пользователей;
  • a — доля пользователей, активных в рассматриваемый интервал;
  • fi — средняя частота выполнения операции i одним активным пользователем;
  • λi — интенсивность выполнения этой операции.
[ INTENSITY_MODEL ]

Тогда предварительная оценка интенсивности:

λi = N · a · fi

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

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

КЕЙС // USE_CASE_SIMULATION

Учебный пример

Предположим, сейчас в системе зарегистрировано 250 пользователей, из которых в среднем 60% активны в рассматриваемый период.

[ CURRENT_STATE // BASELINE ]
Текущий объем активных пользователей:
250 · 0,60
150 активных
[ TARGET_STATE // SCALING ]
Ожидаемый пиковый интервал при росте:
400 · 0,65
260 активных

В этом учебном сценарии число активных пользователей увеличивается с 150 до 260, то есть примерно на 73%.

Это уже показывает, почему прирост нагрузки может отличаться от прироста общего числа сотрудников. Но даже 73% — не готовый коэффициент увеличения мощности серверов.

Для перехода от интенсивности операций к требованиям к инфраструктуре необходимо знать стоимость конкретных сценариев, их взаимодействие и поведение системы при параллельной работе.

Принципиальное ограничение: нельзя считать, что увеличение интенсивности операций на 73% автоматически требует увеличить CPU, память или производительность дисков на те же 73%. Такая экстраполяция допустима лишь как предварительная гипотеза в условиях, где линейность подтверждена измерениями.

 

 

АРХИТЕКТУРА // MULTI_TIER_LIMITS

Архитектура 1С: где проходят границы масштабирования

В клиент-серверном варианте 1С взаимодействуют клиентское приложение, кластер серверов 1С и сервер системы управления базами данных.

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

Визуал: три основных уровня

Клиентские приложенияКластер серверов 1ССУБД и информационная базаПодсистема хранения
[ COMPONENT_DEPENDENCY ]
NETWORK_LAYER: INCLUDED
OS_RESOURCES: SHARED
BACKUP_SYSTEMS: ACTIVE

В реальной инфраструктуре присутствуют также сеть, операционная система, средства резервного копирования, мониторинг, терминальные серверы и интеграционные компоненты. Их роль зависит от конкретной конфигурации.

Главная особенность этой архитектуры — взаимозависимость уровней.

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

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

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

 

 

МАСШТАБИРОВАНИЕ КЛАСТЕРА // CLUSTER_SCALING

Кластер 1С: масштабируется не только количеством серверов

У кластера есть несколько механизмов масштабирования:

  • увеличение вычислительных ресурсов рабочего сервера;
  • изменение количества рабочих процессов;
  • добавление рабочих серверов;
  • распределение поддерживаемых сервисов между менеджерами кластера в соответствующих конфигурациях.
[ CLUSTER_FEATURES ]
RESOURCES: VERTICAL
PROCESSES: HORIZONTAL
MANAGEMENT_SERVICES: BALANCED

Эти возможности описаны в официальной документации 1С.

При этом необходимо различать наличие механизма и его фактическую пользу для конкретной системы.

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

// CONFIGURATION_WARNING //
Правило выбора: число рабочих процессов != "чем больше, тем быстрее"
Критерий: измерение памяти, загрузки и влияния на СУБД

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

Конкретные возможности распределения нагрузки зависят от версии платформы, редакции и лицензирования. До проектирования необходимо сверить планируемую конфигурацию с документацией используемого релиза.

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

 

 

ДИАГНОСТИКА // SYSTEM_BOTTLENECK

Как определить реальное ограничение системы

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

Для этого рассматриваются четыре группы ограничений.

[ GROUP_01 // COMPUTE_LIMIT ]
Вычислительные ресурсы
Высокая загрузка CPU может указывать на недостаток вычислительной мощности, но также может быть следствием избыточных вычислений, неэффективного алгоритма или слишком большого количества параллельно выполняемых задач.
ЧТО ИССЛЕДОВАТЬ: Необходимо установить, какие процессы потребляют CPU, как это связано с временем выполнения операций и что происходит при увеличении нагрузки.
[ GROUP_02 // MEMORY_POOL ]
Память и рабочие процессы
Недостаток доступной памяти может приводить к ухудшению работы процессов, дополнительным обращениям к памяти и другим системным последствиям. При этом нельзя оценивать память только по объёму, установленному на сервере.
КРИТЕРИЙ: Важно учитывать фактическое потребление процессов 1С, СУБД и операционной системы, а также характер пиков.
[ GROUP_03 // DBMS_IO_BOUND ]
СУБД и ввод-вывод
СУБД может ограничивать систему по CPU, памяти, операциям чтения и записи, обработке журнала транзакций или конкуренции между запросами. В SQL Server для анализа используются, в частности, Query Store, планы выполнения и статистика ожиданий.
ИНСТРУМЕНТ: Query Store помогает сопоставлять производительность запросов и планы выполнения во времени, а также исследовать связанные с запросами ожидания. Подробнее: Microsoft Learn — Query Store.

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

 

 

КОНКУРЕНТНАЯ НАГРУЗКА // CONCURRENT_BOTTLENECKS

Прикладные ограничения и конкуренция

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

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

МАТРИЦА // HYPOTHESIS_MAPPING
[ OBS_01 // CPU_PRESSURE ]
CPU длительно загружен, а время отклика ухудшается
ЧТО ПРОВЕРЯТЬ: Потребление CPU конкретными процессами, интенсивность операций, возможность оптимизации
[ OBS_02 // MEM_PRESSURE ]
Память быстро растёт в пиковый период
ЧТО ПРОВЕРЯТЬ: Потребление процессов, доступность памяти, признаки системного давления
[ OBS_03 // QUERY_STRESS ]
Время запросов увеличивается при росте нагрузки
ЧТО ПРОВЕРЯТЬ: Планы выполнения, статистику запросов, ожидания, объём данных
[ OBS_04 // WRITE_LOCKS ]
Резко ухудшаются операции записи
ЧТО ПРОВЕРЯТЬ: Конкуренцию транзакций, блокировки, журнал транзакций, интенсивность записи
[ OBS_05 // INTERFERENCE ]
Пользовательские операции замедляются во время обменов
ЧТО ПРОВЕРЯТЬ: Временное совпадение нагрузки, ресурсы и расписание фоновых процессов
[ OBS_06 // SCALE_FAIL ]
Добавление узлов не даёт ожидаемого ускорения
ЧТО ПРОВЕРЯТЬ: Общие ограничения СУБД, прикладные зависимости и стоимость координации

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

 

 

КЕЙС // CAPACITY_PROJECT_MOCK

Скводной расчётный пример: предприятие готовится к росту с 250 до 400 пользователей

Рассмотрим учебный проект. Все цифры в этом разделе иллюстративны и не относятся к реальному внедрению LOG-AI. Они нужны для демонстрации метода принятия решений.

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

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

ШАГ 01 // CRITERIA_SETTING

Шаг 1. Зафиксировать критерии

[ TARGET_01 // LATENCY_P95 ]
Время отклика критичных операций, p95
Не более 2 секунд
[ TARGET_02 // LATENCY_P99 ]
Время отклика критичных операций, p99
Не более 4 секунд
[ TARGET_03 // SUCCESS_RATE ]
Успешно завершённые операции
Не менее 99,9% в соглас. интервале
[ TARGET_04 // BACKGROUND_JOB ]
Выполнение фонового расчёта
До установленного бизнесом срока
[ TARGET_05 // PROFILE_TYPE ]
Профиль испытания
Прогнозируемая пиковая нагрузка

Эти значения не являются нормативами платформы 1С. В реальном проекте они определяются совместно с заказчиком исходя из критичности операций, производственного цикла и требований пользователей.

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

 

 

ШАГ 02 // TARGET_PROFILING

Шаг 2. Определить базовую и целевую нагрузку

Предположим, нагрузочное испытание текущей системы показало, что при 150 активных пользователях она обрабатывает 20 условных бизнес-операций в секунду в выбранном тестовом сценарии.

После расширения требуется обеспечить 35 операций в секунду.

Отношение целевой нагрузки к базовой:

K = 35 / 20 = 1,75

То есть целевая интенсивность составляет 175% базовой, или на 75% выше.

[ COEFFICIENT_VAL // SHIFT ]
Важно: 1,75 — коэффициент роста интенсивности данного тестового профиля, а не коэффициент увеличения серверов. Он ничего не говорит о необходимом количестве ядер, памяти или узлов без дополнительных измерений.
ШАГ 03 // BASELINE_HARDENING

Шаг 3. Проверить базовую конфигурацию под целевой нагрузкой

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

Допустим, тест выявил следующую картину:

[ STATUS_01 ]
кластер 1С сохраняет запас CPU;
[ OVERLIMIT_02 ]
p95 отдельных операций записи превышает целевой порог;
[ WAITS_03 ]
одновременно увеличиваются ожидания, связанные с конкуренцией транзакций в СУБД;
[ OPTIM_04 ]
перенос части фоновых заданий за пределы пикового периода улучшает время отклика.

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

 

 

ШАГ 04 // ARCHITECTURE_OPTIONS

Шаг 4. Сравнить варианты

Для примера рассмотрим три архитектурных варианта.

[ OPTION_A // VERTICAL_SCALE ]
A. Увеличить ресурсы существующих серверов
ГИПОТЕЗА:Недостаточная мощность узлов ограничивает производительность
ЧТО ДОЛЖНО ПОДТВЕРДИТЬ: Снижение задержек при целевом профиле и отсутствие переноса ограничения
[ OPTION_B // HORIZONTAL_SCALE ]
B. Добавить рабочие серверы 1С
ГИПОТЕЗА:Кластеру не хватает вычислительных ресурсов для распределяемой нагрузки
ЧТО ДОЛЖНО ПОДТВЕРДИТЬ: Рост пропускной способности без ухудшения показателей СУБД
[ OPTION_C // CODE_OPTIMIZATION ]
C. Изменить расписание фоновых процессов и устранить подтверждённые прикладные ограничения
ГИПОТЕЗА:Пиковая конкуренция увеличивает время операций
ЧТО ДОЛЖНО ПОДТВЕРДИТЬ: Снижение задержек при сохранении корректности данных и сроков обработки

Для каждого варианта выполняются одинаковые тестовые сценарии, а результаты сравниваются при сопоставимых условиях.

ШАГ 05 // DECISION_MAKING

Шаг 5. Принять решение по измерениям

Допустим, вариант A снижает загрузку CPU, но почти не меняет p95 операций записи. Вариант B увеличивает количество обрабатываемых операций, но не устраняет нарушение требований к отдельным транзакциям. Вариант C улучшает время отклика, однако требует дополнительных изменений прикладной логики.

В таком случае рациональным решением может оказаться сочетание вариантов B и C — если тесты подтвердят, что они обеспечивают необходимые показатели и экономически оправданны.

Но это не универсальная рекомендация. В реальном проекте иной результат измерений приведёт к иному решению.

 

 

ВИЗУАЛ // SELECTION_LOGIC

Визуал: логика архитектурного выбора

Целевой профиль нагрузкиИспытание текущей конфигурацииИзмерение ограниченийНесколько вариантов решенияСопоставимые испытанияСтоимость + риски + SLAОбоснованная архитектура

Ценность модели не в том, что она заранее указывает правильный сервер. Она позволяет проверить, какое изменение действительно обеспечивает целевые показатели.

Обоснованный выбор архитектуры исключает траты на избыточную, но неэффективную инфраструктуру.

 

 

ИСПЫТАНИЯ // HIGH_LOAD_STRESS

Нагрузочное тестирование: почему одного успешного прогона недостаточно

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

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

Что необходимо воспроизвести

  • Реалистичную интенсивность. Частота действий соответствует прогнозируемому рабочему режиму.
  • Состав операций. Соотношение чтения, записи, проведения документов, отчётов и фоновых задач близко к ожидаемому.
  • Репрезентативные данные. Объём и структура базы позволяют выявить проблемы, которые не проявляются на небольшом тестовом наборе.
  • Конкурентность. Операции выполняются параллельно и взаимодействуют с общими данными так, как это происходит на предприятии.
  • Продолжительность. Тест длится достаточно долго, чтобы проявились устойчивые ограничения и влияние фоновых процессов.
  • Повторяемость. Сопоставимые испытания дают объяснимые результаты.
[ REPLICATION_CRITERIA ]
STRESS_TEST: HIGH_FIDELITY
CONCURRENT_HIT: TRUE
ISOLATED_ENV: REQUIRED

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

Полноценный профиль испытаний — единственный способ гарантировать стабильность системы после ввода в промышленную эксплуатацию.

 

 

АНАЛИЗ МЕТРИК // METRIC_CRITERIA

Какие метрики действительно важны

[ METRIC_01 // MEDIAN ]
p50
КАК ИНТЕРПРЕТИРОВАТЬ: Типичное время выполнения операции
[ METRIC_02 // PERCENTILE_95 ]
p95
КАК ИНТЕРПРЕТИРОВАТЬ: Задержки, которые превышают время отклика у 5% наблюдений
[ METRIC_03 // TAIL_DISTRIBUTION ]
p99
КАК ИНТЕРПРЕТИРОВАТЬ: Хвост распределения, в котором могут проявляться редкие, но значимые задержки
[ METRIC_04 // THROUGHPUT ]
Пропускная способность
КАК ИНТЕРПРЕТИРОВАТЬ: Количество успешно завершённых операций за единицу времени
[ METRIC_05 // ERROR_RATE ]
Частота ошибок
КАК ИНТЕРПРЕТИРОВАТЬ: Доля неуспешных операций с учётом определения ошибки
[ METRIC_06 // HARDWARE_TELEMETRY ]
CPU и память
КАК ИНТЕРПРЕТИРОВАТЬ: Фактическое использование ресурсов в контексте нагрузки
[ METRIC_07 // DBMS_WAITS ]
Ожидания СУБД
КАК ИНТЕРПРЕТИРОВАТЬ: Ресурсы и механизмы, на которых задерживаются запросы
[ METRIC_08 // TRANSACTION_LOCKS ]
Блокировки
КАК ИНТЕРПРЕТИРОВАТЬ: Конкуренция за данные и влияние транзакций друг на друга
[ METRIC_09 // CRON_JOBS ]
Время фоновых заданий
КАК ИНТЕРПРЕТИРОВАТЬ: Соблюдение сроков выполнения регламентных процессов

Среднее время отклика недостаточно: оно может скрывать редкие длительные операции, которые критичны для производственного процесса.

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

КРИТЕРИИ УСПЕХА // SUCCESS_DEFINITIONS

Что считать успешным результатом

Система готова к целевой нагрузке не тогда, когда тест завершился без аварии, а когда одновременно выполнены согласованные требования к:

  • времени отклика критичных операций;
  • пропускной способности;
  • допустимому уровню ошибок;
  • срокам фоновой обработки;
  • устойчивости при прогнозируемом пике;
  • поведению после отказа, если это входит в критерии проекта.
[ SLA_VALIDATION // READY ]
TEST_RUN: NON_CRASH_ONLY_FAIL
METRICS_CONCURRENCY: ENFORCED
INVESTMENT_GROUND: FACT_BASED

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

 

 

ИЗОЛЯЦИЯ // TRANSACTION_CONCURRENCY

СУБД и транзакционная конкуренция: ограничения, которые не устраняются добавлением серверов

В корпоративной 1С важно учитывать не только количество запросов, но и то, как операции взаимодействуют с данными.

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

// CONCURRENCY_DANGER_ALERT //
Эффект параллелизма: рост интенсивности -> увеличение конкуренции за общие ресурсы
Граница: инфраструктурное расширение не устраняет логические ожидания
ЛИМИТЫ СЕРИАЛИЗАЦИИ // PARALLEL_vs_SERIAL

Почему больше параллельных операций не всегда означает больше производительности

Предположим, sistema выполняет 100 независимых операций в секунду. Если добавить вычислительные ресурсы и сохранить независимость операций, пропускная способность может увеличиться.

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

Дополнительная параллельность может даже увеличить число одновременно ожидающих операций.

Поэтому нужно различать:

  • производительность отдельной операции — сколько времени она занимает;
  • пропускную способность системы — сколько операций завершается за единицу времени;
  • конкурентность — сколько операций выполняется одновременно и как они взаимодействуют;
  • ожидания — сколько времени операции не могут продолжить работу из-за ограничений ресурсов или зависимостей.
[ SYSTEM_METRICS_PROFILE ]
LATENCY: LOCAL_METRIC
THROUGHPUT: GLOBAL_METRIC
CONCURRENCY: COSTEFFECT
WAIT_TIME: CONTESTED_INDICATOR

Эти показатели связаны, но описывают разные свойства системы.

 

 

СУБД // SQL_SERVER_DIAGNOSTICS

Что исследовать в SQL Server

Если информационная база использует Microsoft SQL Server, для анализа могут применяться:

  • Query Store для истории запросов, планов выполнения и статистики;
  • сведения о времени выполнения, CPU, чтении и записи;
  • статистика ожиданий;
  • анализ блокировок и длительности транзакций;
  • сопоставление поведения запросов с временными интервалами пользовательской нагрузки.
[ QUERY_STORE // ACTIVE ]
EXECUTION_PLANS: TELEMETRY
WAIT_STATS: COLLECTING
REGRESSION_TRACK: ON

Документация: Microsoft Learn — мониторинг производительности через Query Store.

Конкретный набор инструментов зависит от СУБД и её версии. Для других поддерживаемых систем применяются соответствующие средства диагностики.

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

МАСШТАБИРОВАНИЕ // SCALE_STRATEGY

Вертикальное и горизонтальное масштабирование: сравнивать нужно не серверы, а результаты

Вертикальное масштабирование означает увеличение ресурсов существующего узла. Горизонтальное — добавление узлов и распределение нагрузки между ними там, где это допускает архитектура.

ПАТТЕРН // VERTICAL_SCALE

Вертикальное масштабирование

Текущий узелУвеличение ресурсовИспытание целевой нагрузки

Этот вариант логичен, если измерения показывают, что производительность ограничена ресурсом конкретного сервера.

Однако у него есть предел: дальнейшее увеличение мощности может становиться всё дороже, а ограничения других компонентов сохраняются.

 

 

ПАТТЕРН // HORIZONTAL_SCALE

Горизонтальное масштабирование

Клиенты
 
Кластер 1С
 
 
 
 
Узел 1
Узел 2
Узел 3
 
 
 
 
СУБД

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

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

МАТРИЦА СРАВНЕНИЯ // ARCHITECTURE_DECISION

Как выбрать вариант

[ CRITERION_01 // ARCHITECTURE_CHANGE ]
Изменение архитектуры
ВЕРТИКАЛЬНОЕ: Обычно меньше
ГОРИЗОНТАЛЬНОЕ: Обычно больше
[ CRITERION_02 // ADDITIONAL_NODES ]
Дополнительные узлы
ВЕРТИКАЛЬНОЕ: Не обязательны
ГОРИЗОНТАЛЬНОЕ: Требуются
[ CRITERION_03 // LOAD_BALANCING ]
Распределение вычислительной нагрузки
ВЕРТИКАЛЬНОЕ: Ограничено ресурсами узла
ГОРИЗОНТАЛЬНОЕ: Возможно между узлами
[ CRITERION_04 // DBMS_LIMITATION ]
Ограничение общей СУБД
ВЕРТИКАЛЬНОЕ: Не устраняется автоматически
ГОРИЗОНТАЛЬНОЕ: Не устраняется автоматически
[ CRITERION_05 // INFRA_COMPLEXITY ]
Сложность эксплуатации
ВЕРТИКАЛЬНОЕ: Зависит от текущей архитектуры
ГОРИЗОНТАЛЬНОЕ: Может увеличиваться
[ CRITERION_06 // PERFORMANCE_PROOF ]
Доказательство эффективности
ВЕРТИКАЛЬНОЕ: Сравнение до и после увеличения ресурсов
ГОРИЗОНТАЛЬНОЕ: Сравнение до и после распределения нагрузки

Выбирать нужно по результатам испытаний, стоимости владения и требованиям к доступности. Более сложная архитектура оправданна только тогда, когда она обеспечивает необходимый эффект.

Итоговое решение должно базироваться исключительно на верифицируемых телеметрических данных.

 

 

НАДЕЖНОСТЬ // HA_ARCHITECTURE

Отказоустойчивость: производительность должна сохраняться и при аварийном сценарии

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

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

При этом важно разделять три разных требования.

[ FAILOVER_METRIC_01 ]
Доступность:
может ли сервис продолжать работу после отказа?
[ FAILOVER_METRIC_02 // PERFORMANCE ]
Производительность при отказе:
достаточно ли оставшихся ресурсов для обслуживания необходимой нагрузки?
[ FAILOVER_METRIC_03 // DISASTER_RECOVERY ]
Восстановление:
сколько времени потребуется на возвращение системы к согласованному рабочему состоянию и какая потеря данных допустима?

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

Работа под целевой нагрузкойКонтролируемый отказ узлаПроверка доступностиПроверка времени откликаПроверка восстановления

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

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

 

 

ФИНАНСОВЫЙ АНАЛИЗ // FINANCIAL_SCALING_COST

Экономика масштабирования: сколько стоит готовность к росту

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

Для каждого варианта следует учитывать:

  • оборудование или вычислительные ресурсы;
  • лицензии и программное обеспечение;
  • проектирование, внедрение и настройку;
  • мониторинг и сопровождение;
  • резервное копирование и восстановление;
  • будущие этапы модернизации;
  • риски простоя и нарушения критичных бизнес-процессов.
[ COST_HORIZON_CONTROL ]
INVESTMENT_CYCLE: 3_YEARS
PROVEN_ECONOMY: TRUE
AVAILABILITY_VAL: INSURANCE_TYPE
ВИЗУАЛ // СРАВНЕНИЕ ИНВЕСТИЦИОННЫХ СЦЕНАРИЕВ
Вариант A: ресурсы узловСтоимость + измеренный эффектВариант B: новые узлыСтоимость + измеренный эффектВариант C: изменение приложенияРазработка + эффект + риски

Варианты должны сравниваться на одинаковом горизонте планирования, например трёхлетнем, если он соответствует инвестиционному циклу предприятия.

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

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

Экономический расчет на трехлетнем горизонте защищает ИТ-бюджет от неэффективного освоения.

 

 

ТРИГГЕРЫ // CAPACITY_ALERTS

Когда пора масштабировать систему

Решение о расширении не должно приниматься исключительно после жалоб пользователей.

Более зрелый подход — определить заранее наблюдаемые условия, при которых необходим повторный архитектурный анализ.

Например:

  • фактическая интенсивность операций приближается к проверенному пределу;
  • p95 критичных операций систематически превышает установленный порог;
  • запас CPU, памяти или производительности хранения сокращается в пиковые периоды;
  • сроки фоновой обработки перестают укладываться в бизнес-окна;
  • планируемое расширение добавляет сценарии, которых не было в предыдущей модели нагрузки.
[ SCALING_TRIGGERS ]
INTENSITY_LIMIT: APPROACHING
P95_LATENCY: MONITORING
BACKGROUND_WINDOWS: OVERLAPPING
UNIVERSAL_PERCENTAGE: FALSE

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

Превентивный мониторинг метрик — единственная альтернатива реактивному устранению инцидентов.

 

 

ПЛАНИРОВАНИЕ // ARCHITECTURE_HORIZON

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

Долгосрочная подготовка должна учитывать не только текущие ресурсы, но и возможные изменения бизнес-процессов.

Для этого формируются три сценария:

[ SCENARIO_01 // BASELINE ]
Базовый сценарий
отражает утверждённый план развития предприятия.
[ SCENARIO_02 // ACCELERATED ]
Ускоренный сценарий
учитывает более быстрое увеличение интенсивности операций, количества подразделений или объёма данных.
[ SCENARIO_03 // PEAK_STRESS ]
Пиковый сценарий
описывает максимальную ожидаемую нагрузку при совпадении критичных процессов.

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

ВИЗУАЛ // АРХИТЕКТУРА КАК УПРАВЛЯЕМЫЙ ПРОЦЕСС
Текущая архитектураИзмерение нагрузкиПрогноз развитияПроверка сценариевПлан модернизацииМониторинг и пересмотрНовая оценка

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

Повторная оценка необходима при расширении производства, изменении конфигурации, переходе на новую версию платформы или СУБД, добавлении интеграций и изменении требований к доступности.

 

 

ЧЕК-ЛИСТ // PROD_READY_CHECKLIST

Критерии готовности 1С к масштабированию

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

[ AUDIT_01 // WORKLOAD_MODEL ]
Модель нагрузки
  • Описаны критичные бизнес-сценарии.
  • Измерена интенсивность основных операций.
  • Учтены фоновые процессы и интеграции.
  • Определены прогнозируемые пики.
  • Зафиксированы требования к времени отклика и пропускной способности.
[ AUDIT_02 // SYSTEM_ARCH ]
Архитектура
  • Проверены ресурсы кластера 1С.
  • Оценены возможности масштабирования рабочих серверов и процессов.
  • Проверенна производительность СУБД.
  • Учтены ограничения хранения и сетевого взаимодействия.
  • Определены общие ресурсы и потенциальные точки отказа.
[ AUDIT_03 // STRESS_BENCHMARK ]
Нагрузочные испытания
  • Используются реалистичные сценарии и данные.
  • Проверена прогнозируемая интенсивность операций.
  • Проведено испытание пикового профиля.
  • Измерены p95, p99, пропускная способность и ошибки.
  • Проверены гипотезы об ограничениях.
  • Результаты подтверждены повторным испытанием.
[ AUDIT_04 // RESILIENCE_PLAN ]
Надёжность
  • Определены требования к доступности.
  • Проверено поведение при отказе критичных компонентов.
  • Оценена производительность после отказа.
  • Проверено восстановление из резервной копии.
  • Согласованы допустимое время восстановления и потеря данных.
[ AUDIT_05 // TCO_OPERATIONS ]
Экономика и эксплуатация
  • Сравнены варианты масштабирования.
  • Учтена стоимость владения.
  • Настроен мониторинг ключевых показателей.
  • Определены условия следующего расширения.
  • Назначены ответственные за повторную оценку архитектуры.

Чек-лист не заменяет нагрузочные испытания. Его задача — обеспечить полноту проектной работы и не допустить, чтобы критичные риски остались за пределами оценки.

Готовность ИС проверяется системным выполнением каждого шага модели, а не субъективным ощущением стабильности.

 

 

ИТОГИ // FINAL_VERDICT

Заключение

Подготовить 1С к большому количеству пользователей — значит обеспечить соответствие архитектуры будущему характеру работы предприятия.

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

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

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

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

[ FINAL_SCABILITY_CHECK ]
TARGET_LATENCY: ESTIMATED
LIMIT_MEASURED: TRUE
GROWTH_SCENARIOS: VERIFIED
ROI_JUSTIFIED: ENFORCED

Сильная архитектура 1С — это не система с максимальным количеством серверов. Это система, для которой заранее определены целевые показатели, измерены пределы, проверены сценарии роста и обоснована стоимость следующего шага масштабирования.

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

 

 

НАВИГАЦИЯ // SUGGESTED_READING
 
[ Модуль // ИНТЕГРАЦИИ ]

API, Webhook или очередь сообщений?

 
[ Модуль // ИНТЕГРАЦИИ ]

Когда API есть, а интеграция всё равно не работает

 
[ Модуль // АВТОМАТИЗАЦИЯ ]

Как соединить производство и корпоративные системы

 
[ EXPERTISE JOURNAL ]

Все инженерные материалы и экспертные статьи

 
[ CORE GLOSSARY ]

Полный алфавитный справочник ИТ-терминов

 

[ DIRECT EMAIL LINE ]
info@log-ai.ru

 

🔒 Данные и доступ к системам заказчика обрабатываются в соответствии с согласованными требованиями к безопасности и конфиденциальности. Условия доступа, хранения и обработки данных определяются архитектурой проекта и договором.

Сайт носит исключительно информационный характер и не является публичной офертой в соответствии со статьёй 437 Гражданского кодекса РФ. Цены, состав и условия предоставления услуг уточняются при проектировании решения и фиксируются в договоре. Условия технического сопровождения и уровень сервиса могут дополнительно определяться отдельным соглашением (SLA).

© 2026 Log-AI Москва
Автоматизация бизнеса и ИИ-решения под ключ
Самозанятый Скопец Антон Викторович ИНН 741709260870
Политика конфиденциальности Пользовательское соглашение
AI Ассистент
×