Тестирование производительности №2 Нагрузочное тестирование

  • 16.10.2014 19:09 | 
  • Статьи
  •  | 1850 Прочтений

Что мы хотели проверить

ВИКИПЕДИЯ: "Нагрузочное тестирование обычно проводится для того, чтобы оценить поведение приложения под заданной ожидаемой нагрузкой. Этой нагрузкой может быть, например, ожидаемое количество одновременно работающих пользователей приложения, совершающих заданное число транзакций за интервал времени. Такой тип тестирования обычно позволяет получить время отклика всех самых важных бизнес-транзакций."

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

Результаты

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


  Oremax® 6

Microsoft Dynamics®
AX 2012


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

сервер Оремакс

сервер бд ms

1 сервер

1 processor 4 core,
3.40GHz  Intel(R) Core(TM) i7-3770
8 GB RAM,
HDD SATAIII 1 TB

 

Windows 7 Профессиональная 64-bit (6.1, Build 7601) Service Pack 1

1 сервер

4 processor 12 core (48 cores),
2.2 GHz AMD Opteron,
256 Gb RAM, 
HP logical volume SCSI disk drive, RAID10

64-bit version of Windows Server 2008, Enterprise Edition


Сервер приложений  отсутствует

сервер приложений ms

10 серверов

8–12 cores, 16 GB of RAM

64-bit version of Microsoft Windows Server® 2008 R2 Enterprise Edition


СУБД  SAP SQL Anywhere 16.0.0.1915 (64-bit Windows) редакция Developer  64-bit version of Microsoft SQL Server® 2008 R2 (Build 10.50.1797)

Продолжительность измерения 1 час 1 час

Кол-во конкурентных пользователей 5000 5219

Количество операций 134 475 106 062

Количество строк спецификации документов 966 236 915 926

Максимальное время операции 1.38 сек  не известно

Максимальное время строки 0.14 сек  менее 1 сек

Создание заказа на продажу

10 строк

Среднее время 0.27 сек

Максимальное - 0.64 сек

5 строк

Среднее время 2.65 сек


Создание заказа на покупку

10 строк

Среднее время 0.22 сек

Максимальное - 0.86 сек

5 строк

Среднее время 3.15 сек


Описание результатов и методики тестирования Microsoft

Технические подробности

Методика

Для оценки производительности и устойчивости системы в условиях стресс-теста был специально разработан сценарий включающий в себя большинство основных бизнес операций системы «Оremax 6», а именно:

  • Создание заказа на продажу
  • Перевод заказа на продажу в состояние Действующий
  • Резервирование товара
  • Создание заявок на покупку
  • Создание заказа на покупку
  • Перевод заказа на покупку в состояние Действующий
  • Создание приходной накладной
  • Перевод приходной накладной в состояние Действующий
  • Создание заявки на отгрузку
  • Перевод заявки на отгрузку в состояние Действующий
  • Создание расходной накладной
  • Перевод расходной накладной в состояние Действующий
  • Создание счета на оплату
  • Перевод счета на оплату в состояние Действующий
  • Создание платёжного документа
  • Перевод платёжного документа в состояние Действующий
  • Отчет "История отношений с контрагентом"

 

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

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

Программное обеспечение

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

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

В нашем случае, приложение постепенно подключает к базе данных заданное количество пользователей (потоков), каждый из которых с заданным интервалом времени последовательно запускает операции из скрипта. Тест длится заданное количество времени. Замеры производительности производятся только после подключения к СУБД и началом выполнения сценария всеми пользователями. Причем, мы специально не стали делить пользователей по ролям на закупщиков или продавцов и пытаться таким образом искусственно регулировать плотность (интенсивность) тех или иных операций в угоду лучшей производительности. Таким образом мы максимально равномерно разнесли нагрузку по всей СУБД, т.к. в разных компаниях могут доминировать различные бизнес процессы и выделять какие-то из них в тесте на наш взгляд неправильно.

Аппаратное обеспечение

Два обычных, абсолютно одинаковых, компьютеров разработчиков:

Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz (8 CPUs), ~3.4GHz, 8192MB RAM, HDD SATA3 1TB
Windows 7 Профессиональная 64-bit (6.1, Build 7601) Service Pack 1

На одном развернули СУБД, а на другом запускали программу PerformanceTest, которая соединялась с базой данных по локальной сети (100 Мбит в секунду).

СУБД

SAP SQL Anywhere 16.0 (64-bit Windows) редакция Developer

Результаты

Поскольку не существует единой методики в оценке результатов производительности ERP систем и безусловно каждый разработчик пытается интерпретировать результаты в свою пользу, мы решили воспользоваться ДВУМЯ отличными методиками применяемыми нашими коллегами из 1С и  Microsoft Dynamics AX (Axapta).

По сути мы представляем Вам результаты двух тестов «Легкого» и «Тяжелого»

Легкий тест

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

Описание методики

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

Далее разбиваем, условно все выполненные операции на 3 категории:

N – общее количество произведенных операций
NS- количество итераций, которые выполнены за менее чем целевое время 0 – Т
NF – количество операция, которые выполнены за Т – 4Т (т.е. от целевого времени до целевого времени умноженного на 4)


 Индекс APDEX =  (NS + NF/2)/N.

Оценки индекса APDEX:

Значение Оценка APDEX
0.94 – 1.00 отлично
0.85 – 0.93 хорошо
0.70 – 0.84 удовлетворительно
0.50 – 0.69 плохо
0.00 – 0.49 неприемлемо

 

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

А дальше сплошные минусы…

Во-первых, вольная трактовка целевого времени Т, для кого-то это 15 секунд, для кого-то 5, некоторые не готовы ждать больше секунды. Причем для разных операций (в зависимости от их «тяжести») зачастую используется разное Т.

Во-вторых, этот индекс не раскрывает основных, на наш взгляд, результатов нагрузочного тестирования, а именно количество операций за определенное время, количество строк за время (надо понимать, что в одном заказе может быть 5 строк, а может 25), «пиковые просадки» (т.е. какое же время пришлось ждать тем «неудачникам», не попавшим даже в 4Т, ведь такое возможно даже при отличном результате и это время никак не ограничено) и прочих немаловажных параметров.


Параметры запуска теста

Конкурентных пользователей 1000
Интервал запуска операций каждым пользователем 60 секунд
Период замера результатов (при полной нагрузке) 60 мин
T – целевое время для всех бизнес-операций 1 секунда

 

Результаты по методике APDEX

Таблица 1

Операция APDEX
1 Создание заказа на продажу 0,97
2 Перевод заказа на продажу в состояние действующий 1
3 Резервирование товара 0,99
4 Создание заявок на покупку 0,96
5 Создание заказа на покупку 0,97
6 Перевод заказа на покупку в состояние действующий 1
7 Создание приходной накладной 0,99
8 Перевод приходной накладной в состояние действующий 0,97
9 Создание заявки на отгрузку 1
10 Перевод заявки на отгрузку в состояние действующий 0,99
11 Создание расходной накладной 0,99
12 Перевод расходной накладной в состояние действующий 0,96
13 Создание счета на оплату 0,99
14 Перевод счета на оплату в состояние действующий 1
15 Создание документа оплаты 0,99
16 Перевод документа оплаты в состояние действующий 0,99
17 Отчет "История отношений с контрагентом" 1

 

 

Согласитесь, что система Oremax демонстрирует потрясающие результаты, индекс APDEX по всем операциям на Отлично! Но к сожалению, этот тест совершенно не информативен. Он говорит лишь о том, что на данном оборудовании будет комфортно работать с системой. Поэтому в Таблице 2, мы все же покажем результаты более детально.

Таблица 2

Операция Количество операций
в час
Среднее время
выполнения операции,
сек
Количество строк создано
в час
Среднее время создания строки,
сек
1 Создание заказа на продажу 3177 0.33 31770 0.0326
2 Перевод заказа на продажу в состояние действующий 3206 0.04 32060 0.0043
3 Резервирование товара 3237 0.16 14347 0.0359
4 Создание заявок на покупку 3244 0.65 25777 0.0812
5 Создание заказа на покупку 3241 0.32 25856 0.0406
6 Перевод заказа на покупку в состояние действующий 3245 0.05 25962 0.0058
7 Создание приходной накладной 3240 0.18 25991 0.0221
8 Перевод приходной накладной в состояние действующий 3219 0.47 25930 0.0582
9 Создание заявки на отгрузку 3211 0.06 32110 0.0064
10 Перевод заявки на отгрузку в состояние действующий 3207 0.14 32070 0.0136
11 Создание расходной накладной 3219 0.16 32190 0.0159
12 Перевод расходной накладной в состояние действующий 3196 0.55 31960 0.0555
13 Создание счета на оплату 3185 0.1 31850 0.0105
14 Перевод счета на оплату в состояние действующий 3194 0.04 31940 0.0045
15 Создание документа оплаты 3163 0.07 3163 0.0732
16 Перевод документа оплаты в состояние действующий 3178 0.09 3178 0.0867
17 Отчет "История отношений с контрагентом" 3170 0.05 0 0
    54 532   406 154  

 

Тяжелый тест

Располагая лишь обычным компьютером, который выступал у нас в качестве сервера система «Oremax 6» показала потрясающие результаты! Возможно найдутся желающие их оспорить, но мы готовы воспроизвести этот результат ещё раз. Для достижения этой цели мы, в том числе, воспользовались предоставляемой SAP SQL Anywhere 16.0 технологией запуска СУБД в режиме «in-memory». Эта технология позволяет существенно ускорить производительность за счет хранения запущенной базы данных в памяти компьютера, а запись на жесткий диск осуществляется в режиме «checkpoint-only» (контрольных точек). Понятно, что данный режим можно включить при наличии оборудования обеспечивающего бесперебойную работу СУБД, в том числе управляющее корректным завершением работы в случае отключения электричества, в противном случае не исключена возможность потери несохраненных на диск данных.

Параметры запуска теста

Конкурентных пользователей 5000
Период замера результатов (при полной нагрузке) 60 мин

 

Обратите внимание, что количество пользователей 5000!!!

Таблица 3


Операция Количество операций в час Среднее время выполнения операции, сек Минимальное время выполнения операции, сек Максимальное время выполнения операции, сек Количество строк создано в час Среднее время создания строки, сек
1 Создание заказа на продажу 7184 0.25 0.078 0.515 71840 0.0252
2 Перевод заказа на продажу в состояние действующий 7360 0.02 0 0.125 73600 0.0017
3 Резервирование товара 7521 0.15 0.031 0.64 51044 0.022
4 Создание заявок на покупку 7658 0.45 0.015 1.388 52420 0.0664
5 Создание заказа на покупку 7811 0.2 0.015 0.702 53972 0.0292
6 Перевод заказа на покупку в состояние действующий 7932 0.02 0 0.156 55251 0.0028
7 Создание приходной накладной 8058 0.13 0.015 0.499 56549 0.0179
8 Перевод приходной накладной в состояние действующий 8175 0.29 0 0.843 57807 0.0405
9 Создание заявки на отгрузку 8285 0.04 0.015 0.141 82850 0.0038
10 Перевод заявки на отгрузку в состояние действующий 8290 0.16 0.062 0.905 82900 0.0163
11 Создание расходной накладной 8090 0.13 0.078 0.375 80900 0.0127
12 Перевод расходной накладной в состояние действующий 7904 0.47 0.281 1.326 79040 0.0472
13 Создание счета на оплату 7740 0.07 0.031 0.218 77400 0.0065
14 Перевод счета на оплату в состояние действующий 7593 0.02 0 0.078 75930 0.0016
15 Создание документа оплаты 7424 0.04 0.015 0.187 7424 0.0371
16 Перевод документа оплаты в состояние действующий 7309 0.04 0.015 0.14 7309 0.0436
17 Отчет "История отношений с контрагентом" 7141 0.06 0.015 0.948 0 0
    131 475       966 236 0.023

 

Из таблицы видно, при 5000 одновременно работающих пользователей, максимальное время выполнения операций не превышало 1,5 секунды. При этом за час было создано 131,475 документов с суммарной спецификацией почти в 1,000,000 строк.

Для сравнения ниже приведена таблица с результатами Microsoft Dynamics AX для 5219 пользователей.

Transaction Con-currency Transactions per hour per user Lines per hour per user Количество операций в час (расчёт) Количество строк создано в час (расчёт)
Sales orders 2820 16 90 45120 253800
Purchase requisitions 95 24 119 2280 11305
Purchase orders 95 25 101 2375 9595
Sales quotations 210 14 149 2940 31290
Item arrivals 410 21 121 8610 49610
Sales orders created through AIF 84 303 4774 25452 401016
Expense timecard entry 1095 9 56 9855 61320
Transfer orders 410 23 239 9430 97990
General ledger n/a 25000 n/a    
  5219     106062 915926

 

© 2008-2017 Oremax LLC.
+7 (812) 449-87-07, cont@oremax.ru
Создание сайта: Ji-Touch