Как мы провели этим летом нагрузочный тест на 30 тысяч пользователей

27.11.25

База данных - Администрирование СУБД

Завершаем цикл статей по совместному докладу Алены Генераловой и Александра Симонова на INFOSTART TECH EVENT 2025 о нагрузочном тестировании (НТ) на 30 000 АРМ на машине баз данных Tantor XData. В заключительной части расскажем о том, что нас ждало при запусках теста, и какие доработки СУБД Tantor Postgres были сделаны, чтобы его пройти с высоким результатом.

В первой части рассказали, как ускорить подготовку теста и настроить шаблон для 180 виртуальных машин (ВМ) с помощью Ansible. Во второй рассмотрели запуск теста и сбор артефактов, поговорили про архитектуру кластера 1С и настройку свойств СУБД. В заключительной части расскажем о том, что нас ждало при запусках теста, и какие доработки СУБД Tantor Postgres были сделаны, чтобы его пройти с высоким результатом.

 

 

Немного о тесте

Данный нагрузочный тест разработан фирмой 1С на конфигурации ERP 2.5.17.117, размер базы 1250 Гб. Сценарий нагрузочного тестирования эмулирует полноценный рабочий день 30 тысяч пользователей и длится 11 часов. Немного больше информации о характеристиках базы можно посмотреть на сайте 1С по ссылке.

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

 

Первые результаты и проблемы

Запустили 20 тысяч, полный прогон занимает около 14 часов. Первый час уходил у Алены на подготовку запуска, затем после запуска почти 2 часа уходило на запуск пользователей и инициализацию и сам тест идет 11 часов.

И первый наш запуск закончился успешно, т.е. отработал 11 часов без ошибок и мы получили отчет APDEX по его результатам. Мы подумали, хм, как просто, но при следующем запуске на 25 тысяч у нас начались проблемы - сервер СУБД уходил в себя спустя примерно 40 минут после начала нагрузки. Мы делали запуск на 25 тысяч несколько раз и проблема стабильно повторялась.

На графиках отображено, как выглядит проблема: процессор не уходил в утилизацию на 100%, но количество активных сессий на СУБД резко росло до нескольких тысяч пока не упиралось в max_connections. Запросы вместо миллисекунд начинались выполняться секунды, конечно с таким поведением тест успешно не завершишь.

 

Мы экспериментировали с настройками Tantor Postgres, но это не помогало. 

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

 

Верхняя таблица отображает количество соединений в разрезе состояний (active, idle, idle in transaction), а нижняя дополнительно в разрезе типа и события ожиданий. 

Сначала мы видим что у нас около тысячи соединений большая часть из которых в режиме ожидания команды (idle), и немного активных. Но вдруг количество активных начинает резко расти, как вы видели на графике выше с количеством сессий.

И мы видим что эти активные соединения имеют тип ожидания LWLock с именем события LockManager, т.н. легковесные блокировки (lightweight locks), используемые Tantor Postgres для синхронизации доступа к разделяемым структурам данных в памяти. И через несколько секунд количество активных соединений возрастает до тысячи и более. Так начинается наша проблема (и по сути заканчивается тест).

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

 

Профилирование. Проблема инвалидационных сообщений

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

  1. У нас есть 3 сеанса на стороне СУБД, которые начинают свою работу. При начале работы они читают метаданные таблиц из системного каталога себе в локальный кэш, чтобы понимать какие таблицы/индексы есть в базе данных и с чем они могут работать при выполнении запросов.
  2. В рамках сеанса 1 происходит изменение метаданных таблицы путем добавления в нее нового поля.
  3. Сеансы 2 и 3 не знают ничего о том, что в какую-то таблицу было добавлено новое поле. Для того, чтобы эти сеансы могли узнать о том, что изменились метаданные и существует очередь инвалидации. Сеанс 1 добавляет в эту очередь сообщение о том, что изменились метаданные таблицы, в которую он добавил новое поле.
  4. Сеанс 2 выполняет запрос к базе данных, в котором участвует таблица, в которую сеанс 1 добавил новое поле. Но сеанс 2 до сих пор ничего не знает об этом новом поле.
  5. Сеанс 2 делает запрос в очередь инвалидации по списку таблиц, которые он использует, чтобы запросить информацию по этим таблицам. И получает из этой очереди сообщение, что добавилось новое поле в таблицу, и обновляет у себя в локальном кэше данную информацию. Теперь он может выполнить запрос к базе данных и не получить ошибку, что данная колонка не существует.

 

Хорошо, а причем тут наш тест, ведь во время работы 30 тысяч пользователей никто не будет менять метаданные таблиц? 1С постоянно создает временные таблицы и индексы к ним, а это тоже есть изменение метаданных:

  1. Большое количество сеансов создают временные таблицы и отправляют информацию об этом в очередь инвалидации. Данная очередь имеет ограничение и может хранить только 16384 сообщений.
  2. Место в очереди начинает заканчиваться, и тут Tantor Postgres начинается процесс массовой инвалидации сообщений. Суть его состоит в том, чтобы все сеансы массово очищают локальный кэш метаданных, чтобы загрузить его заново актуальным. После этого они обращаются к очереди инвалидации, чтобы отметиться, что они "догнали" очередь. Взаимодействие с очередью инвалидации требует наложения блокировок LWLock. Это и есть причина нашей первой проблемы.

 

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

Мы доработали Tantor Postgres, запустили снова тест, но уже сразу на 30 тысяч пользователей. Тест завершился успешно: получили APDEX 0.635. Ну как успешно, вот вы видите графики нагрузки по CPU и активным сессиям на СУБД. Резкие всплески роста активных сессий все также были следствием LWLock'ов, которых стало меньше, но они все же были.

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

 

Профилирование. Проблема долгого удаления индексов

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

  • pg_class - хранит информацию об идентификаторе индекса
  • pg_type - хранит информацию о типах полей, используемых в колонках индекса
  • pg_depend - хранит зависимости между объектами БД для операций CASCADE
  • pg_attribute - хранит информацию о списке колонок, используемых в индексе
  • и др.

Визуально схему удаления индекса можно представить следующим образом:

 

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

То же самое и с удалением индекса в Tantor Postgres. Но любой код можно оптимизировать, в том числе исходный код нашей СУБД, что мы и сделали. После этого мы запустили нагрузочный тест на 30 тысяч пользователей и получили APDEX 0.849. Это значительно лучше, чем было раньше, но результат нас не устроил. Мы сделали еще одну доработку Tantor Postgres и изменили его настройки с учетом опыта прошлых запусков.

 

Оптимизация дизъюнктивных подзапросов

Во время теста следующий запрос выполняется около 8000 раз с длительностью 4-15 секунд в зависимости от таблицы, к которой он обращается:

 

Из текста запроса видно, что по одному полю накладывается отбор через условие OR. При этом индекс по этому полю есть, почему он не используется?
Наличие подзапроса является блокирующим фактором. Он бы мог использовать индекс, если бы это было простое условие ИЛИ в сравнении с константами - планировщик мог бы трансформировать их в ANY, но с подзапросом такое сделать нельзя и пришлось бы сканировать индекс целиком, поэтому он выбирает последовательное сканирование как более дешевый вариант с точки зрения стоимости:

 

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

По условиям теста мы не могли дорабатывать код 1С, поэтому нам нужно было научить нашу СУБД Tantor Postgres при планировании запроса автоматически переписывать текст запроса перед исполнением, если он подходит под указанный шаблон. Что мы собственно и сделали, в результате запрос вместо 5 секунд выполнился за 1 мс, т.е. ускорение в 5 тысяч раз:

Такая же технология реализована в оптимизаторе запросов MS SQL Server и Oracle Database. Теперь и в Tantor Postgres.

 

Настройки Tantor Postgres

Рассмотрим, как был настроен инстанс СУБД.

 

Общие настройки:

  • Work_mem, temp_buffers, hash_mem_multiplier - мы постепенно увеличивали данные параметры, анализируя данные прошлых прогонов, чтобы уменьшить количество создаваемых временных файлов.
  • Автовакуум был настроен агрессивно, т.к. нам было важно, чтобы была актуальная статистика для качественного планирования запросов.
  • Huge_pages включены - с ними некоторые отчеты формировались быстрее.
  • Enable_temp_memory_catalog - ключевая настройка для победы над раздутием системного каталога Tantor Postgres.

Настройки планировщика:

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

  • enable_convert_exists_as_lateral_join - оптимизация запросов с 1Сными РЛС
  • enable_filter_predicates_reordering - оптимизация фильтрации в узлах плана запроса index scan, sec scan, join filter.
  • enable_index_path_selectivity - оптимизация, позволяющая преимущественно использовать покрывающие индексы при наличии нескольких подходящих под условия запроса.
  • enable_join_pushdown - оптимизация запросов к виртуальным таблицам 1С.

Разнесение нагрузки:

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

 

Итоговый результат APDEX

Наш самый успешный прогон показал результат APDEX 0.859:

 

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

Давайте посмотрим на графики оборудования. 

Платформа 1С хорошо справлялась с 30 тысячами пользователей и нагрузка по CPU была в среднем 30% на всех серверах приложений:

 

На сервере СУБД нагрузка на CPU была примерно такой же:

 

Дисковая подсистема также имела огромный запас прочности:

 

 

А вот несколько внутренних графиков Tantor Postgres:

  

(среднее количество idle-сессий во время теста держалось в диапазоне 600-700)

 

Сервер СУБД

Но не только тюнинг настроек и доработка Tantor Postgres помогли нам достигнуть такого результата. Огромною роль играло и само оборудование, на котором работал сервер СУБД. В его качестве был наш собственный ПАК Tantor XData 2Y в минимальной комплектации, в которую входило 3 вычислительных сервера с характеристиками как на слайде:

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

Внутри одного из вычислительных серверов был развернут контейнер (по сути виртуальная машина) с 112 виртуальными CPU и 1,5 Тб RAM, внутри которого и работал инстанс СУБД Tantor Postgres.

 

Точки развития

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

Долгое планирование запросов с большим количеством таблиц JOIN/FROM.

По итогам анализа ТЖ у нас были в топе было много запросов, которые выполнялись 300-500 мс. При этом план запроса показывал, что сам запрос выполнялся за миллисекунды, а 99% времени занимало планирование запроса, т.е. перебор различных вариантов его исполнения. Понижение *_collapse_limit'ов ускоряло планирование этих запросов, но все равно оно занимало 50 мс, и таких запросов были тысячи. Механизм перебора вариантов соединения таблиц имеет потенциал оптимизации, и мы планируем в следующих релизах ускорить время планирования таких запросов.

Тип bytea.

В базе ERP 160 тысяч полей и примерно половина из них имеют тип bytea. Он используется для ссылочных полей и хранилищ значения. При этом сам этот тип переменной длины, хотя большинство полей которые его используют фиксированной длины (тип поля, тип ссылки и сама ссылка).  В MSSQL Server  для этих полей используется тип binary размерностью 1, 4 и 16. Использование bytea вместо фиксированных типов данных создает дополнительные издержки, потому что база данных вынуждена хранить служебную информацию о длине каждого значения и выполнять дополнительные операции десериализации при чтении. Кроме того, переменная длина препятствует эффективному использованию прямой адресации в памяти и на диске, что замедляет как доступ к данным, так и их кэширование, а также увеличивает фрагментацию хранилища и требует больше операций при распаковке кортежей из дисковых блоков. Если написать типы bytea фиксированной длины и научить платформу 1С создавать поля с этими типами вместо bytea, то по нашим предварительным расчетам это может ускорить работу связки 1С + Tantor Postgres на 10 и более процентов.

Параллелизм и временные таблицы.

Сейчас наличие временной таблицы в запросе является блокирующим фактором для использования параллелизма, при этом в данном нагрузочном тесте было много ключевых операций по отчетам, которые выполнялись более 20 секунд и наш анализ показал, что параллелизм мог бы ускорить выполнение таких ключевых операций в несколько раз. В рамках релиза Tantor Postgres 17.6 мы уже сняли часть ограничений на использование параллелизма в таких запросах, и в 18 версии снимем оставшиеся ограничения.

 

Спойлер

Мы в своем импортозамещении решили пойти дальше и запускали данный нагрузочный тест на машине баз данных XData 2B на процессорах Baikal-S. Правда ядер этот процессор имеет всего 48, что позволило нам успешно пройти нагрузочный тест на 20 тысяч пользователей. 

 

Детали теста

Специалисты АНО «Национальный центр компетенций по информационным системам управления холдингом» совместно с «ИТ-Экспертиза» успешно повторили нагрузочный тест Фирмы 1С с имитацией одновременной работы 30 тысяч пользователей системы «1С:ERP. Управление предприятием» на машине баз данных (МБД) Tantor XData 2Y, использующей СУБД Tantor Postgres. Испытания подтвердили готовность отечественного технологического стека к промышленной эксплуатации на уровне крупнейших российских предприятий.

 

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

Совместная проектная команда АНО «НЦК ИСУ», «Тантор Лабс», «ИксДата» (производителя МБД Tantor XData), YADRO и «ИТ-Экспертиза» обеспечила бесперебойную работу и устойчивость системы, исключив технологические сбои. В результате тестирования получена интегральная оценка производительности по международной методике APDEX 0,859, что соответствует уровню «Хорошо» и по отдельным параметрам превышает результат, ранее достигнутый фирмой «1С» при аналогичном тесте без использования МБД.

Кластер тестирования «1С:Предприятие» был развернут на машине баз данных Tantor XData 2Y, построенной с использованием серверов VEGMAN R220 G2. Нагрузку моделировали восемнадцать серверов VEGMAN S220 в связке с сетевыми коммутаторами KORNFELD.

Также со стороны АНО «НЦК ИСУ» было инициировано проведение тестирования по собственной разработанной методологии со сценариями работы крупного предприятия в различных часовых поясах. Нагрузочное тестирование выполнялось с помощью инструмента «1С:Тест-Центр» и имитировало процессы полноценного рабочего дня для основных ролей ERP-системы — диспетчеров производства, менеджеров по продажам и закупкам, сотрудников склада и бухгалтерии с общей численностью 15 000 одновременно работающих пользователей. APDEX составил 0,950, что соответствует уровню «Отлично».

В ходе выполнения теста средняя загрузка процессора на сервере СУБД не превышала 30–40%, на серверах приложений оставалась ниже 40%. Дисковая подсистема показала время отклика при чтении порядка одной–двух миллисекунд, при записи - около пяти миллисекунд. Длительность теста составила 11 часов непрерывной работы, и за это время не было зафиксировано падений процессов, критических ошибок или блокировок.

Технологическим партнером масштабного нагрузочного тестирования «1С:ERP» на российском стеке выступила команда интегратора «ИТ-Экспертиза», обеспечившая экспертную поддержку на всех этапах, включая анализ результатов.

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

Об условиях тестирования и оборудовании

 

Условия тестирования

 

Показатель

Значение

Дата проведения

11.08.2025

Версия конфигурации

1С:ERP Управление предприятием (версия 2.5.17.117)

Версия платформы

8.5.2, спец. сборка 8.3.27

Версия СУБД

Tantor Special Edition 1C 17.5

Сценарий

ERP. 30 000 одновременно активных пользователей

Объем базы

~ 1,25Тб

Структура базы

организация, имеющая в своей структуре 54 филиала, выделенных на отдельные балансы (55 позиций в справочнике организаций), 1800 подразделений, 3500 складов, 80 тыс. номенклатурных позиций, 700 тыс. сотрудников, 90 тыс. партнеров, 2.5 млн контрагентов, 25 млн договоров, 1 млн основных средств

 

Технические характеристики оборудования для проведения тестирования

 

Назначение

Кол-во серверов

Ядер CPU

ОЗУ (Гб)

Диски (Тб)

Примечание

Центральный сервер

1

96

768

2,4

Платформа 1С:Предприятие

Рабочий сервер

3

96

768

2,4

Платформа 1С:Предприятие

Сервер лицензирования

1

8

32

2,4

Платформа 1С:Предприятие

Сервер баз данных

1

112

1536

33,0

Tantor Special Edition 1C 17.5

Нагрузчики

18

112

755

3

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

 

 

Сервер лицензирования:

  • Intel Xeon Scalable v2 Silver 4215

  • Память 32 Гб DDR4-3200 ECC RDIMM

  • 2 x Накопитель SSD NVMe Gen3 1.6 ТБ 7300MAX

Кластер тестирования «1С:Предприятие» был развернут на машине баз данных Tantor XData 2Y, построенной с использованием серверов VEGMAN R220 G2. Нагрузку моделировали восемнадцать серверов VEGMAN S220 в связке с сетевыми коммутаторами KORNFELD.

 

Сервер СУБД — машина баз данных Tantor XData 2Y:

  • Минимальная комплектация (3 вычислительных сервера)

  • 2x Intel Xeon Platinum 8362, 3600 MHz 128 vCPU

  • RAM 2 Тб DDR4-3200

  • Программно-аппаратный рейд XData

  • Сеть 25 Гбит/с

  • Внутри вычислительного сервера поднят контейнер для инстанса СУБД Tantor Postgres: 112 vCPU, 1,5 Тб RAM

  • ОС AstraLinux 1.7.6, ядро 6.1.50-1-generic

Нагрузчик:

  • Intel Xeon Scalable v2 Gold 6230R

  • DDR4-3200 RDIMM ECC 2Rx4

  • 2 x Накопитель SSD 3.84 Tb SATA 2.5" PM893

  • Сеть: 10 Гбит/с.

 

База наполнена данными за 2 месяца работы крупного предприятия — около 10 млн. документов. СУБД, кластер серверов и нагрузчики с тонкими клиентами платформы «1С:Предприятие» были развернуты на ОС Astra Linux 1.8. Выбранный сценарий моделировал реальную нагрузку на систему и воспроизводил повседневную работу основных пользователей ERP:

  • главный диспетчер производства;

  • локальный диспетчер производства;

  • менеджер по закупкам;

  • менеджер по продажам;

  • кладовщик;

  • внутреннее потребление товаров;

  • планирование производства;

  • бюджетирование;

  • бухгалтер по внеоборотным активам;

  • бухгалтер по взаиморасчетам;

  • бухгалтер.

 

Все действия пользователей выполнялись с учетом ограничений прав на уровне записей (RLS).

Результаты тестирования

 

Наименование показателя

Значение

Время работы теста

11 часов

Количество выполненных ключевых операций

859 392

Общий APDEX по всем ключевым операциям (APDEX — стандарт для измерения производительности приложений)

0,859

 

 

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

Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART TECH EVENT 2025

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

Tantor Postgres нагрузочный тест 30 тысяч пользователей ERP планировщик lwlock XData

См. также

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

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

18.02.2025    8806    ivanov660    39    

61

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

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

24.06.2024    11237    ivanov660    13    

64

Администрирование СУБД 1С:Предприятие 8 1C:Бухгалтерия Россия Бесплатно (free)

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

23.05.2024    17993    human_new    22    

60

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

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

13.03.2024    8585    spyke    29    

54

HighLoad оптимизация Инструменты администратора БД Системный администратор Программист 1С:Предприятие 8 Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих запросов на sql, ожиданий, конвертация запроса в 1С и рекомендации, где может тормозить.

5 стартмани

15.02.2024    20337    356    ZAOSTG    104    

125

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

Казалось бы, базовое знание: «индексы надо обслуживать, чтобы запросы выполнялись быстро». Но обслуживание индексов выполняется долго и может мешать работе пользователей. Кроме того, в последнее время популярны разговоры о том, что индексы можно вообще не обслуживать – насколько это оправданно? Рассмотрим: на что влияет обслуживание индексов, когда надо и когда не надо его выполнять, и если надо – как это сделать так, чтобы никому не помешать?

16.01.2024    27708    Филин    17    

59
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. it-expertise 449 27.11.25 13:59 Сейчас в теме
Коллеги, спасибо за финальную часть статьи по нашему общему докладу!
2. it-expertise 449 27.11.25 14:45 Сейчас в теме
Про "спойлер" можно добавить, что информация о тестировании на Байкалах уже есть в сети - можно ознакомиться подробнее
gzharkoj; +1 Ответить
3. PerlAmutor 161 29.11.25 17:11 Сейчас в теме
Вот бы какое-нибудь предприятие предоставило базу с накопленными данными за 10 лет для тестирования. 2 месяца маловато будет. Ну и отчеты - отдельная песня когда множество сеансов формируют отчеты и не закрывает сутки. При таком сценарии падение рабочих процессов должно быть гарантировано по превышению памяти.
Gilev.Vyacheslav; +1 Ответить
4. YA_573983960 01.12.25 10:34 Сейчас в теме
(3) такие тестирования это уже внутренние дела компании и вряд ли кто-то их будет публиковать.

Тем более что 30.000 пользователей 1С: это очень сильно с запасом и не так много компаний в России могут похвастаться таким ландшафтом.

Так что будем считать что МБД "в целом тащит и масштабируемая"
5. YA_573983960 01.12.25 10:45 Сейчас в теме
По мне так весьма криво описана сама конфигурация тестового стенда - сервер СУБД одна штука, при этом потом по тексту мы должны догадаться, что сервер СУБД = машина баз данных Tantor XData 2Y

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

Далее указано что сервер машина баз данных Tantor XData 2Y содержит три (3) физических сервера по 128 vCPU и на каждом из серверов создан контейнер на 112 vCPU, то есть грамотный читатель умножит 3 х 112 и получит 336 vCPU.

Но в таблице указана конфигурация сервера СУБД как 112 внимание (!) CPU, что при архитектуре Intel SMT2 даёт нам 224 vCPU. Где в итоге правда ?

Как работает кластер Тантор на МБД ? Получается две ноды активные и одна в горячем/холодном резерве или все три в режиме обработки запросов Active - Active ?

Вывод от меня - про саму базу написано много и хорошо, а про инфраструктуру мало и плохо.
6. Tantor 175 01.12.25 17:14 Сейчас в теме
(5) Мы фокусировались в статье на доработках и настройке самой СУБД. Что касается платформы - архитектура из трёх серверов и ресурсы (112 vCPU) указаны верно, см. здесь. Для теста использовалась готовая МБД Tantor XData 2Y в стартовой комплектации (детальнее о ней - на странице продукта ). МБД автоматически разворачивает трехузловой отказоустойчивый кластер (primary-sync-async), узлы кластера работают как отдельные контейнеры с разделяемыми ресурсами, что и объясняет архитектуру из трёх серверов. 112 vCPU - ресурсы, выделенные на вычислительном сервере для проведения конкретного тестирования.
16. YA_573983960 03.12.25 07:49 Сейчас в теме
(6) принимается, но в любом случае если уж фишкой данного тестирования было использование МБД в качестве сервера баз данных, то было бы интересно почитать и про него более подробно )))
18. Tantor 175 03.12.25 10:48 Сейчас в теме
(16) Что именно интересует про МБД? Напишите, я передам коллегам.
Также у нас есть страница по МБД, где собрана базовая информация - https://tantorlabs.ru/products/xdata
7. Gilev.Vyacheslav 1921 01.12.25 18:02 Сейчас в теме
30 000 пользователей это база должна весить 60 тб
и потом на этом объеме закройте месяц в ерп
17. YA_573983960 03.12.25 07:52 Сейчас в теме
(7) Предположу, что закрытием в холдинге на таком количестве пользователей и объемах данных занимаются от силы пара тысяч человек с фризом на остальные тяжёлые операции в системе, да и объемы данных при закрытии обычно последний срез терабайт на 5-10

По личному опыту работы в ЦКК SAP
19. Gilev.Vyacheslav 1921 03.12.25 19:30 Сейчас в теме
(17) SAP сюда не применим
8. Gilev.Vyacheslav 1921 01.12.25 18:11 Сейчас в теме
ERP. 30 000 одновременно активных пользователей - это значит что они ОДНОВРЕМЕННО способны записать в базу документ со скростью не сильно хуже чем при монопольном варианте
а из описания теста одновременностью там и не пахнет
если не обсчитался, из ваших цифр получается 21 операция в секунду, не 30 000 операций в секунду и даже на 1000 операций в секунду
21 операцию хороший ноутбук с nvme записать сможет при небольшом объеме
starik-2005; +1 Ответить
9. Tantor 175 01.12.25 20:07 Сейчас в теме
(8) Допустим, у нас 112 ядер на сервере СУБД. 112 пользователей запустили одновременно отчеты и на СУБД каждый из этих сеансов выполняет запрос длительностью одну минуту. Смогут ли оставшиеся 29888 пользователей нормально работать в течении этой минуты?
10. Gilev.Vyacheslav 1921 02.12.25 09:38 Сейчас в теме
(9) ну если вы их обозвали активными, сами как думаете? если они не смогут работать, какие же они активные...
если не смогут, то у вас всего 112 пользователей активных


"запуска почти 2 часа уходило на запуск пользователей"
в реальной жизни если работа компании к примеру начинается в 10.00, то пользователи в пределах 5-10 минут должны зайти все 30 000 , а не за 2 часа
11. Tantor 175 02.12.25 11:08 Сейчас в теме
(10)
ну если вы их обозвали активными, сами как думаете?

Я считаю, что 30 тысяч пользователей в 1С работало. Одновременно ли они все выполняли операции? Нет, тут вы правы.
(10)
в реальной жизни если работа компании к примеру начинается в 10.00, то пользователи в пределах 5-10 минут должны зайти все 30 000 , а не за 2 часа

У таких больших компаний, как правило сотрудники работают в нескольких часовых поясах и в базу заходят постепенно с началом их рабочего дня.
12. ivanov660 4956 02.12.25 13:46 Сейчас в теме
(11) Вы замеряли сколько пользователей одновременно обращались в 1Ску или СУБД? Есть такие параметры как "ЗахваченоСУБД" и "ВремяВызоваТекущее", я в своем нагрузочном тесте именно их считал и определял количество одновременно работающих пользователей.
Получается что 30 000 пользователей онлайн и ? активно работающих одновременно?

В типовой ЕРП допустим что 4-6% от общего числа пользователей одновременно нажимают кнопки или что-то получают от системы итого должно примерно получиться в диапазоне 1 200 - 1 800.
У меня на машине в 40 ядер 300-350 что-то делающих пользователей заваливали систему, если прикинуть исходя из этого то ваш сервер наверное мог бы выдержать не более 900.

Ну, на счет одновременного входа. Пример из практики, менеджер 1С упал и всех пользователей выкинуло, а потом все пытаются одномоментно зайти. Так что подобные ситуации вполне реальные.
Gilev.Vyacheslav; +1 Ответить
14. Tantor 175 02.12.25 15:07 Сейчас в теме
(12) Со стороны 1С показатели собирали коллеги из ит-экспертизы, у меня данных нет.
Со стороны СУБД я могу оперировать данными графика sessions, который приведен в статье. Количество сессий active было 20-40, idle - 600-700.
Во время эксплуатации продуктивной базы, в которой было онлайн 4000 пользователей, никогда не задавался вопросом, сколько же из них одновременно выполняют действия в базе. Мы смотрели на другие показатели. А одновременный вход пользователей после падения менеджера или из-за других обстоятельств - да с таким сталкивались.
13. Gilev.Vyacheslav 1921 02.12.25 14:57 Сейчас в теме
(11) 1. Вашу версию PG я нахожу лучшей на текущий момент, особенно оболочку если в ней все расширения включить
2. Статья эта очень интересная
3. Но вот про 30 тысяч - если бы вы оказались пользователем этой системы в такой компании, риторику вы бы поменяли моментально
Прекрасно понимаю что к коду теста вы отношения не имеете.
НО! 112 ядер это где то про тысячу пользователей, ну хорошо , пусть две. Давате даже Если сильно урезать интерфейсные интересности, отключить поиск по неполному совпадению, все кастироровать - будет 3000 пользователей. Я это знаю из реальных проектов, а не из нагрузочного тестирования, хотя и такое делал.
Про совать 30 тыщ в монолитную базу это интересно слышать не техническим руководителям, а технари понимают что это грубейшие ошибки в проектировании структуры хранения данных. Посадить можно и сто тыщ, но только не вот так нелепо. Конечно вы можете сказать что у вас 30 тыщ в базе балду гоняют и чай пьют на самом деле, но будет рестарт сервера 1с или еще что, и они всё равно встанут колом. Систему параллизует. У Вас одно ядро на 267 человек приходится. Самим то не смешно.


Про 30 тыщ в монолите: Духовность русской жизни означает, что главным производимым и потребляемым в России являются не материальные блага, а понты. Бездуховность - это неумение кидать понты надлежащим образом. Умение приходит с опытом и деньгами, поэтому нет ничего бездуховнее младшего менеджера. Empire V Виктор Пелевин
androidT1C; user1964854; MissionOnly; ivanov660; Tantor; +5 Ответить
22. MissionOnly 16 08.12.25 13:46 Сейчас в теме
(13) Не смог удержаться. Очень понравился отзыв, от начала до конца. Спасибо...
27. starik-2005 3211 09.12.25 17:33 Сейчас в теме
(22)
Очень
Слава тоже спец по понтам. И, наверное, имеет право )))
ЗЫ: У него сервер без оптана - не сервер.
15. YA_573983960 03.12.25 07:47 Сейчас в теме
(9) На уровне ОС и на уровне СУБД существуют ресурс менеджеры, планировщики и ещё куча других сервисов, которые как раз исключают такую ситуацию, когда несколько тяжёлых и медленных запросов забирают себе абсолютно все ресурсы. То есть гипотетически на тестовом стенде такую ситуацию создать можно, но в реальности запросы скорее всего ведут вытеснены в фон для приоритета обслуживания онлайн пользователей. Но тут как говорится огромное поле для оптимизации со стороны ДБА
20. Gilev.Vyacheslav 1921 03.12.25 19:36 Сейчас в теме
(15) надежды юношей питают...

30 тыщ это тупой маркетинг для гуманитариев

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

какая там может быть оптимизация когда вы рядом запросов вообще не управляете, они делаются от платформы самостоятельно
один такой системный промах и directed by robert b weide
21. MissionOnly 16 08.12.25 13:38 Сейчас в теме
Очень качественно сделанная реклама оборудования. Жаль, что реально эти грандиозные мощности не смогут выполнить заявленные цели. Т.к. это не реальный тест работы пользователей. И чтобы все это имело хоть кукую-то ценность желательно было бы расписать: 1) % сколько пользователей выполняло внесение данных; 2) % сколько пользователей формировало отчеты; 3) % сколько пользователей выполняло вход в базу данных; 4) % сколько пользователей выполняло просмотр справочников и документов; 5) % сколько пользователей одномоментно присутствовало в базе (реально под своими логинами и паролями).
it-expertise; Gilev.Vyacheslav; +2 Ответить
23. Gilev.Vyacheslav 1921 09.12.25 01:11 Сейчас в теме
(21) добавлю:
- сколько закрывали месяц
- сколько было обменов
- сколько загружали данные с сайта
- закрывали смену (Z-отчет)
- перепроводили документы за месяца
- задачи, дергающие пачку документов по цепочке
- фоновых процедур типа расчета себестоимости и т.п.
- отражение зарплаты в бухгалтерском учете
- расчет зарплаты
- трансляция из бу и мсфо

обязательно с поштучным учетом и выгрузками типа ЕГАИС

время реакции/скорсть входа на рестарте процессов кластера

обмен через шину данных

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

и т.п. и т.д.
it-expertise; +1 Ответить
25. it-expertise 449 09.12.25 16:22 Сейчас в теме
(23) Вячеслав, приветствуем!

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

2. Для тестирования обменов и загрузок необходим совершенно другой контур и другая постановка задачи. Обмены у всех разные, и редкая ERP в КОРП-сегменте обменивается с сайтом. Тут сложно найти универсальное решение.

3. Закрытие смены – это розница, в нашем моделируемом предприятии её нет.

4. Перепроведение не выполняется в тесте по разным причинам. Во-первых, это не кажется сценарием именно нагрузочного теста. Во-вторых, не очень понятно, зачем его выполнять в 1С:ERP. Мы, конечно, не «функциональщики», но кажется, что это что-то из мира бухгалтерии и последовательностей, которых уже нет.

5. Зарплата в корпоративном сегменте не считается внутри ЕРП по соображениям безопасности. Отражение зарплаты в учете – это интеграция с ЗУП, которая не эмулировалась, но честно говоря никогда не была узким местом.

6. Обмены с системами учета вроде ЕГАИС, Честный знак и т.д не эмулируются, т.к. это довольно трудоемко – качественно эмулировать обмен с внешней системой

7. Перед каждым запуском теста мы всегда рестартовали процессы кластера. Обычно секунды 2-3 открывается сеанс. Только у того, кто первый входит после перезагрузки секунд 30 открывалось, когда контекст базы данных еще не был загружен ни в один рабочий процесс.

8. Про реструктуризацию не совсем поняли. Она к нагрузочному тесту точно не имеет отношения.

Вообще еще раз подчеркнем, что методология данного теста разрабатывалась не нами. Он спроектирован и реализован фирмой 1С. Альтернативный взгляд на характер нагрузки мы совместно с коллегами также реализовали, результаты такого теста опишем в отдельной статье.
28. Gilev.Vyacheslav 1921 09.12.25 22:12 Сейчас в теме
(25) ну почему нет на надо объяснять, 100500 отмазок придумать теперь даже ИИ в помощь
понятно, если сделать настоящий тест, то вся красивость в цифрах пропадет

я всё таки за правду:

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


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

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

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

2. Для тестирования обменов и загрузок необходим совершенно другой контур и другая постановка задачи. Обмены у всех разные, и редкая ERP в КОРП-сегменте обменивается с сайтом. Тут сложно найти универсальное решение.


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

3. Закрытие смены – это розница, в нашем моделируемом предприятии её нет.

А в куче предпрятий есть. И главное так что угодно можно отмазывать "а у нас нет". А если нет, тогда зачем этот пафос громкий. Вы же хотели внимания? Хотели! А как доходит до деталей - так сразу "это другое".

4. Перепроведение не выполняется в тесте по разным причинам. Во-первых, это не кажется сценарием именно нагрузочного теста. Во-вторых, не очень понятно, зачем его выполнять в 1С:ERP. Мы, конечно, не «функциональщики», но кажется, что это что-то из мира бухгалтерии и последовательностей, которых уже нет.


толпа бухгалтеров не согласится с вами, их любимое "а в друг там будут ошибки"...

5. Зарплата в корпоративном сегменте не считается внутри ЕРП по соображениям безопасности. Отражение зарплаты в учете – это интеграция с ЗУП, которая не эмулировалась, но честно говоря никогда не была узким местом.

Я правильно понимаю что RLS это ОБМАН и ни какой безопасности нет в ЕРП ?! Бугага

6. Обмены с системами учета вроде ЕГАИС, Честный знак и т.д не эмулируются, т.к. это довольно трудоемко – качественно эмулировать обмен с внешней системой
Зачем, вы хотя бы поштучный учет попробуйте вести. Тогда поймете как некоторые таблицы на само деле могут распухать, а не этот детсад про несколько месяцев.

8. Про реструктуризацию не совсем поняли. Она к нагрузочному тесту точно не имеет отношения.
Конечно не поняли, потому что изначально подход к имитации бурной деятельности.
Посчитайте хотя бы за два года сколько в реальных базах объем, разделите на количество пользователей в этих базах а потом эту цифру умножьте на ваши 30 000 .
Затем добавьте в конфигураторе реквизит на топовой таблице и убедитесь что реструкторизация за ночь не пройдет.
Чего дурочка то включать.

Смысл делать тест который ублажает только взор начальства и гуманитариев и не отражает реальных вызовов, с которыми сталкиваются в реальной работе люди.
24. it-expertise 449 09.12.25 16:19 Сейчас в теме
(21) Добрый день.

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

По вопросам:

П.1 и 4. Внесение данных производят почти все пользователи, за исключением около 650. Соответственно они постоянно открывают документы и справочники.

П.2. Практически все сценарии тестирования включают в себя формирование нескольких отчетов. Где-то 27 тысяч пользователей формируют отчеты, каждый формирует свои отчеты в зависимости от сценария, который он выполняет. Например, бухгалтер по НДС формирует регламентированные отчеты, кладовщик – отчеты по складу и т.д.

П.3 и 5. Подсистема Тест-центр устроена таким образом, что перед запуском выполнения сценариев все виртуальные рабочие места запускаются, создается сеанс, каждый под своим отдельным пользователем из справочника «Пользователи». И эти сеансы будут открыты до окончания теста. Т.е. клиентских сеансов было открыто именно 30 тысяч на протяжении всего теста.
26. MissionOnly 16 09.12.25 16:42 Сейчас в теме
(24) Вы точно про ERP говорите? Т.к. у большинства пользователей совсем другие данные. Если бы вы сказали, что тестировали 3000 польз., то и тогда возникли сомнения. Но хотя бы ваши комментарии были бы уместны.
Gilev.Vyacheslav; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация