1С под нагрузкой: как предсказать пики и избежать коллапса системы

12.05.26

Разработка - Тестирование QA

Нагрузочное тестирование 1С нельзя строить на средних значениях и одном «идеальном» сценарии: такой подход скрывает пики, блокировки, фоновые задания и реальные риски для производительности. Показываем, как собрать данные из технологического журнала, журнала регистрации и поведения пользователей, чтобы построить сценарий, близкий к работе системы в продуктиве. Разбираемся, как вариация, корреляционный анализ и APDEX помогают увидеть неравномерную нагрузку, уточнить модель и понять, какие данные влияют на производительность. А также объясняем, как корректное моделирование помогает заранее выявить проблемы, подобрать железо под реальные пики и снизить риск коллапса системы после запуска.

Зачем нужно нагрузочное тестирование перед внедрением

 

Тема статьи – нагрузочное тестирование, точнее, математическое моделирование для нагрузочного тестирования. Будем предсказывать пики, на проекте будем заранее понимать, какие у нас возможны проблемы с производительностью, как правильно это донести до заказчика и как корректно все рассчитать.

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

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

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

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

Чаще всего вам нужно объединить несколько систем: четыре УПП, пять УТ, несколько Бухгалтерий и еще пару старых решений, написанных, например, на Delphi, – все это перевести в одну 1С:ERP УХ. И в этот момент возникает главный вопрос: а выдержит ли система? Настанет момент, когда зайдет, условно, тысяча пользователей. И нельзя услышать от заказчика: «Знаете, на ста пользователях все работало нормально, а когда зашла тысяча – все упало». Такие ситуации нужно предотвращать заранее. Для этого и требуется нагрузочное тестирование.

 

Сбор данных для нагрузочного тестирования

 

Чтобы провести нагрузочное тестирование, сначала нужно собрать данные. В первую очередь – технические: запросы, работа пользователей, обработка серверов. Это так называемый технологический лог. В 1С он называется технологическим журналом – это важно запомнить. Если система не на 1С, данные все равно нужны – это могут быть, например, запросы к СУБД.

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

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

И еще один важный блок – первичные данные. Нужно понимать, какие данные уже есть в базе: статистика, структура, распределение. Это критично, потому что в нагрузочном тестировании мы должны воспроизводить поведение, близкое к реальному.

Например, если в системе есть 10 складов, из них 4 основных, по которым проходит основной поток документов, и в каждом документе в среднем 10–12 строк, – в тестировании нужно воспроизвести это распределение. Нельзя моделировать документы с одной строкой, если в реальности их больше. Такие детали сильно влияют на результат.

 

Анализ данных и формирование сценария

 

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

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

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

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

 

Ошибки при упрощенном подходе к сценариям

 

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

Частая ошибка – это слишком «плавное» распределение нагрузки. Мы говорим: «У нас пользователи вводят тысячу накладных в час, значит, распределим их равномерно: каждые 10 минут по 180». Бухгалтер загружает проводки, банк – платежки, и мы тоже равномерно размазываем их по часу. Но вопрос – а в реальности так бывает? С вероятностью 90–99% – нет. В реальных системах нет плавного распределения.

Еще один момент – сценарии работы. Особенно если у вас система работает круглосуточно. Не ограничивайтесь одним сценарием: почти всегда есть минимум два – дневной и ночной. Причем ночные часы могут быть даже более нагруженными. Пользователей меньше, но идут обмены, загрузки с сайтов, интеграции – и нагрузка может быть колоссальной. В итоге проблемы ловят не 1500 пользователей, а, например, 300–400, но это тоже критично. Парализовать работу нельзя ни днем, ни ночью, поэтому сценариев должно быть несколько.

Средние значения почти всегда вводят в заблуждение. Когда вы делите час на маленькие промежутки времени, вы увидите, что нагрузка распределяется неравномерно. Это не ровная линия – это график с подъемами и падениями, иногда очень резкими.

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

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

Если этого не сделать, последствия могут быть серьезными. На одном проекте загрузка сообщений в определенный момент занимала до 97% процессорного времени. При этом тайм-аутов не было, все выглядело «нормально», но ресурсов просто не хватало. Пришлось экстренно добавлять сервер 1С, включать его в кластер и стабилизировать систему. Ситуацию решили, но цена – нервы и лишние риски.

 

Валидация модели и обратная проверка

 

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

 

 

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

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

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

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

 

Математический аппарат

 

Итак, математический аппарат. У нас есть вариация данных, корреляция данных и проверка на парадокс Симпсона.

 

Вариация данных

 

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

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

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

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

 

Корреляция

 

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

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

Корреляционный анализ – это метод обработки статистических данных, с помощью которого измеряется теснота связи между двумя или более переменными. Корреляционный анализ тесно связан с регрессионным анализом (также часто встречается термин «корреляционно-регрессионный анализ», который является более общим статистическим понятием), с его помощью определяют необходимость включения тех или иных факторов в уравнение множественной регрессии, а также оценивают полученное уравнение регрессии на соответствие выявленным связям (используя коэффициент детерминации).

Теперь на практике. У нас есть несколько групп показателей – условно, векторы.

Первый – вектор производительности железа: процессор, память, дисковая подсистема.

Второй – вектор базы данных: количество транзакций, отказов, чтений, записей, объем данных, тайм-ауты.

Третий – вектор бизнеса: количество проведенных РТУ, их «вес» и так далее.

И все это в конкретный момент времени соотносится с одним показателем – например, с APDEX, метрикой производительности.

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

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

Кроме того, с его помощью можно анализировать и бизнес-данные. Например, взаимосвязи внутри вектора «склад – номенклатура – организация»: как распределяются документы, как они соотносятся друг с другом. Это позволяет корректно воспроизвести структуру данных в нагрузочном тестировании и сделать модель максимально приближенной к реальности.

 

Номенклатура во времени

 

 

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

На практике поток либо имеет выраженные пики, либо просадки, либо и то и другое. Теоретически можно представить «идеальную» форму, но в реальных системах данные ведут себя иначе. Чаще всего это график с резкими подъемами – когда нагрузка концентрируется в определенные моменты.

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

 

Интерпретация результатов распределения во времени

 

 

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

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

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

 

 

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

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

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

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

 

Дополнительные технические рекомендации для экспериментов

 

 

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

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

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

Если при изменении данных у вас показатель APDEX в течение часа сильно не меняется – значит, все сделано правильно, система стабильна. А вот если при разных наборах данных, как на изображении, вы видите, что значения расходятся, дельта становится большой, – это повод разбираться.

 

 

В этом случае можно условно построить зависимость: A – это набор данных для теста, B – это APDEX. И посмотреть, как меняется B при изменении A.

Если кривая начинает сильно «разъезжаться», расхождения становятся заметными, значит, данные напрямую влияют на производительность. И тогда уже нужно исследовать, какие именно данные дают такой эффект и почему. Когда эта зависимость будет выявлена, вам будет легче предвидеть внеочередные проблемы.

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции Анализ & Управление в ИТ-проектах.

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

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

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

См. также

Тестирование QA DevOps и автоматизация разработки Программист Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.190.11.

5368 руб.

20.01.2022    11664    48    1    

21

DevOps и автоматизация разработки Тестирование QA Программист Пользователь 1С:Предприятие 8 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Зарплата и Управление Персоналом 3 и версии КОРП: 3.1.35.48.

5000 руб.

05.08.2024    5955    36    1    

20

Тестирование QA DevOps и автоматизация разработки Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.22.145.

5000 руб.

04.07.2022    13918    50    6    

39

Тестирование QA Программист Бесплатно (free)

Переход на Linux и PostgreSQL – серьезный этап для любой компании. Нагрузочное тестирование помогает пройти его без критических сбоев: заранее выявить узкие места, оценить поведение системы под реальной нагрузкой и снизить риск откатов после запуска. В статье разберем, почему миграция с Microsoft SQL Server и Windows на новую инфраструктуру требует отдельной проверки производительности, какие сценарии стоит включать в тест, как настраивать контур и мониторинг, как оценивать результаты и сколько времени реально занимает такой проект.

29.04.2026    616    kulmaksim    0    

3

Тестирование QA Программист Бесплатно (free)

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

20.04.2026    501    dankrav4    0    

2

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

Внешняя обработка позволяет генерировать автотесты.

1 стартмани

16.04.2026    543    1    Triplexx    0    

3

Тестирование QA Программист 1С 8.3 1С:Управление торговлей 10 1С:Управление производственным предприятием Абонемент ($m)

Сценарный анализ и тестирование документов "SmokeLab" (обычные формы): автоподбор документов, сценарное тестирование, анализ изменений, проверка форм и проведение, поддержка COM и JSON-логирование.

1 стартмани

10.04.2026    636    1    kiba    2    

8

Тестирование QA Программист Бесплатно (free)

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

10.04.2026    938    batsy66    0    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. vladimir_korshun 97 12.05.26 17:39 Сейчас в теме
В итоге проблемы ловят не 1500 пользователей, а, например, 300–400, но это тоже критично. Парализовать работу нельзя ни днем, ни ночью, поэтому сценариев должно быть несколько.

Наверно вы думаете, что 1500 пользователей в одной программе - это хорошо.

Идите на обед все, я обновляю программу.
2. gabrielyants 54 12.05.26 20:18 Сейчас в теме
Сейчас есть фоновые обновления, они хорошо сокращают время обновления. 1500 это не хорошо и не плохо - это данность
3. ktb 698 12.05.26 23:37 Сейчас в теме
1500 - это норм, 15000 - веселее.
4. paulwist 13.05.26 13:02 Сейчас в теме
И еще один важный блок – первичные данные. Нужно понимать, какие данные уже есть в базе: статистика, структура, распределение. Это критично, потому что в нагрузочном тестировании мы должны воспроизводить поведение, близкое к реальному.


Поясните, с помощью какова средства выясняется "какие данные уже есть в базе: статистика, структура, распределение." и в каких метриках/"попугаях" выражаются ??
5. vkovall 17 14.05.26 15:18 Сейчас в теме
Добрый день!
Из статьи я понимаю, что надо подтянуть математику в части корреляций и всего, что с этим связано. Получается уходим матанализ? Или есть какие-то инструменты, которые облегчают "жизнь сотрудника" в моменты поиска проблемных мест?

Второй вопрос, который возник, как бизнесу объяснить необходимость вложений ресурсов в НИОКР при подготовке нагрузочного тестирования? Где бизнес получит долгосрочный результат на выходе? Зачастую бизнес видит только краткосрочные перспективы, а нагрузочное тестирование, как я понимаю начинает работать на длительной дистанции проекта 3-5 лет к примеру.

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

Четвертый вопрос, если вендор или кто-то ещё не публикует такие методики (может их не существует в природе, кроме APDEX), то какой литературой можно воспользоваться для формирования обоснований бизнесу из долгосрочных перспектив при работе с нагрузочным тестированием?

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