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

24.11.25

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

Продолжаем цикл статей по совместному докладу Алены Генераловой и Александра Симонова на INFOSTART TECH EVENT 2025 и во второй части рассмотрим запуск теста и сбор артефактов, а также поговорим про архитектуру кластера 1С и настройку свойств СУБД

Продолжаем цикл статей по совместному докладу Алены Генераловой и Александра Симонова «Как мы провели этим летом нагрузочный тест на 30 тысяч пользователей». В первой части рассказали, как ускорить подготовку теста и настроить шаблон для 180 виртуальных машин (ВМ) с помощью Ansible. В этом материале рассмотрим запуск теста и сбор артефактов, а также поговорим про архитектуру кластера 1С и настройку свойств СУБД.

 

 

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

  1. Восстановить настройки СУБД 
  2. Остановить сервисы и службы: 1С, atop, iostat, ras, собственные службы и сборщики, если они есть 
  3. Удалить Журнал регистрации 1С (ЖР 1С, ЖР) 
  4. Остановить все серверные процессы: rphost, rmngr, ragent, если к этому моменту они не завершились 
  5. Остановить все клиентские процессы 1cv8c на нагрузчиках 
  6. Удалить Технологический журнал 1С (ТЖ 1С, ТЖ), дампы, сеансовые данные, данные atop и iostat, логи наших сборщиков 
  7. Выполнить бенчмарки fio и SysBench 
  8. Скопировать шаблон настройки ТЖ 1С на все сервера приложений и на терминальные сервера 
  9.  Запустить сервисы: 1С, iostat, ras, собственные службы и сборщики 
  10. Запустить xrdp 

Итак, агенты запущены, стенд готов к очередному нагрузочному тестированию. 

* * * 

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

  1. Сбор данных о размере сеансовых данных, копирование к себе реестра кластера 1CV8Clst.lst 
  2. Выполнение бэкапа всех собранных логов на серверах приложений и терминалах 
  3. Выполнение бэкапа данных ЖР 1С 
  4. Выполнение бэкапа данных atop, iostat 
  5. Закрытие всех сессий RDP 
  6. Выгрузку к себе замеров времени 
  7. Выгрузку к себе отчета об APDEX

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

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

Как это выглядело – на слайде ниже.

 

 

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

Поэтому в требованиях назначения функциональности (ТНФ) для сервиса сеансовых данных настроили распределение следующим образом:

  • не назначать (запретить) размещение на центральном сервере
  • разрешить размещение сервисам сеансовых данных на рабочих серверах Это позволило добиться оптимального распределения нагрузки в кластере 1С

 

 

Переходим к настройке свойств базы данных.

В данном кейсе включили свойство резервирования рабочих процессов – это важно при одновременном запуске 30000 виртуальных рабочих мест (ВРМ). Когда в активном рабочем процессе заканчиваются доступные соединения, требуется создать новый рабочий процесс – соединения будут ждать, когда он запустится, и тратить время на это. А так как у системы ERP большой контекст, то его полная загрузка требовала значительного времени. 

Поэтому для обеспечения бесперебойной работы всегда использовали резервный рабочий процесс. Как только в активном процессе заканчивался лимит подключений, резервный процесс немедленно становился активными и начинал принимать новые соединения. Параллельно с этим запускался очередной резервный процесс. Благодаря такому подходу открытие всех 30 000 ВРМ занимало всего порядка 50 минут

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

Ключевые параметры подсвечены на слайде ниже:

 

 

Следующий этап – подготовка базы 1С к тестированию; он включает несколько шагов: 

  1. Создание виртуальных пользователей. Лайфхак: запускайте тест без агентов тестирования (подробнее – ниже)
  2. Расчет прав доступа: обязательно проводите после генерации виртуальных пользователей
  3. Проверка справочников «Виртуальные пользователи» и «Агенты»
  4. Настройка клиента для Linux. Команда запуска: /opt/1cv8/x86_64/8.3.27.1529/1cv8c /UseHwLicenses /DisableStartupMessages
  5. Создание бэкапа настроенной базы! 

* * * 

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

Наиболее длительный этап – само выполнение теста. При этом в общем процессе НТ есть этап, где можно существенно сократить время – это подготовка, в процессе которой открывались все виртуальные рабочие места. При этом, каждое из 30 тысяч ВРМ работает под уникальным пользователем, что требует создания 30 тысяч элементов в одноименном справочнике! 

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

Поэтому настоятельно рекомендуем: для проведения НТ с большим количеством пользователей 1С заранее заполните справочник «Пользователи» и рассчитайте права доступа. Это избавит систему от лишней нагрузки во время самого теста и обеспечит точность результатов. На картинке – ускоренный в 50 раз процесс запуска 30 000 ВРМ:

 

 

Но и это еще не все: перед каждым тестом нужно убедиться, что справочники «Виртуальные пользователи» и «Агенты» полностью очищены. Так как из-за «агентов-призраков» тест может попросту не запуститься. 

Напоминаем: важно правильно настроить клиентов в справочнике тест-центра и в обязательном порядке:

  • указать путь к бинарным файлам
  • установить параметр, запрещающий использование аппаратных лицензий
  • отключить стартовые сообщения 

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

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

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

INFOSTART TECH EVENT 2025 highload erp tantor linux. astra postgre postgres субд ос нагрузочное тестирование высокая нагрузка

См. также

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

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

10.11.2025    6331    ivanov660    48    

52

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

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

18.02.2025    8806    ivanov660    39    

61

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

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

24.06.2024    11237    ivanov660    13    

64

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

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

06.06.2024    17430    Evg-Lylyk    73    

46

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

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    8586    spyke    29    

54

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

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    11950    vasilev2015    22    

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