Нагрузка на Entaxy
Настоящее тестирование представляло собой исследование пропускных способностей Entaxy c применением для нагрузочного тестирования системы Apache JMeter.
Цель тестирования:
Целью проведения нагрузочного тестирования является установление реальных пропускных способностей low-code платформы Entaxy, запущенной на данной инфраструктуре. Оценка производительности и определение рекомендуемого значения предельно допустимых нагрузок на компоненты.
Производительность Entaxy измерялась с использованием следующих API:
-
Echo - возвращает любой полученный запрос обратно
-
Log - предназначен для логирования информационных сообщений. Результаты (API: Echo/Log)
-
Fast Template Library (FTL) - обеспечивает ускоренную генерацию шаблонов
-
XSLT - предназначен для обработки и трансформации XML-данных в соответствии с правилами XSLT
-
Saxon - специализируется на обработке и трансформации XML-данных с использованием библиотеки Saxon, известной своей высокой производительностью и богатым функционалом для работы с XSLT и XQuery
Результаты (API: FTL/XSLT/Saxon)
Тесты проводились с использованием 50, 100, 200, 300, 500 и 1000 одновременно эмулируемых пользователей.
Одновременные пользователи означают, что JMeter создает нескольких пользователей, которые одновременно обращаются к шлюзу API.
Используемые размеры сообщений: 7B, 1KB, 10KB, 100KB.
Для измерения производительности каждого теста использовались две ключевые метрики производительности:
- Пропускная способность (Throughput) : измеряет количество вызовов API, которые сервер шлюза API обрабатывал в течение определенного интервала времени (например, в секунду).
- Время отклика (Average response time): измеряет среднее время обработки операции (вызов API).
Деплой, используемый для теста
Конфигурация стенда, на котором проводилась нагрузка:
NAME |
HDD (GB) |
RAM(GB) |
CPU |
postgres |
120 |
8 |
8 |
krf1 |
40 |
16 |
4 |
krf2 |
40 |
16 |
4 |
krf3 |
40 |
16 |
4 |
amq1 |
40 |
16 |
4 |
amq2 |
40 |
16 |
4 |
ngnix |
40 |
16 |
4 |
-
Entaxy 1.8.2 • Java 11 Liberica • Ubuntu 20.04
Результаты (API: Echo)
Далее представлены результаты тестирования API: Echo.
Чтобы ознакомиться с результатами тестов, использующими другие API, перейдите по ссылкам ниже:
Параметры проведения тестов:
Duration – длительность.
Данная настройка указывает, в течение какого промежутка времени будет выполняться тест (sec).
Number of threads – количество эмулируемых пользователей, одновременно обращающихся к шлюзу API (sum).
Message size – размер тела передаваемого запроса.
Duration (sec) |
600 |
600 |
600 |
600 |
Number of threads (sum) |
50/100/200 300/500/1000 |
50/100/200 300/500/1000 |
50/100/200 300/500/1000 |
50/100/200 300/500/1000 |
Message size |
7b |
1kb |
10kb |
100kb |
Пропускная способность
-
Throughput (Requests per second) vs Threads.
На следующем графике отражены изменения пропускной способности в зависимости от количества одновременно работающих пользователей и размера сообщения.
В ходе теста система показала:
Number of threads (sum)
Message size
Throughput (rps)
До 50
7b, 1kb
6300
10kb
5800
100kb
2200
До 100
7b, 1kb
7000
10kb
6500
100kb
2600
До 200
7b, 1kb
7400
10kb
6800
100kb
2500
До 300
7b, 1kb
7500
10kb
7000
100kb
2300
До 500
7b
7700
1kb
8500
10kb
7000
100kb
2200
До 1000
7b, 1kb
8000
10kb
7000
100kb
1800
Время отклика
-
Average response time (ms) vs Threads.
На следующем графике показаны изменения времени отклика в зависимости от количества одновременно работающих пользователей и размера сообщения.
В ходе теста система показала:
Number of threads (sum)
Message size
Average response time (ms)
До 50
7b, 1kb, 10kb
< 8
100kb
< 20
До 100
7b, 1kb, 10kb
< 14
100kb
< 40
До 200
7b, 1kb, 10kb
< 25
100kb
< 80
До 300
7b, 1kb, 10kb
< 40
100kb
< 130
До 500
7b, 1kb, 10kb
< 70
100kb
< 220
До 1000
7b, 1kb, 10kb
< 150
100kb
< 530
Сравнение результатов
Сравнение пропускной способности
Пропускная способность (запросов/в секунду) по сравнению с одновременно работающими пользователями и размером сообщений.
Загрузка процессоров на хостах Entaxy, Nginx, JMeter
Загрузка процессора на хосте Nginx
В ходе теста система показала: Загрузка процессора на хосте с Nginx - низкая. Наблюдается постепенное увеличение загрузки процессора Nginx при увеличении нагрузки и количества пользователей.
Загрузка процессора на платформе Entaxy-1
В ходе теста система показала: Загрузка процессора на платформе Entaxy 1 - средняя. Наблюдается постепенное увеличение загрузки процессора при увеличении нагрузки и количества пользователей.
Загрузка процессора на платформе Entaxy-2
В ходе теста система показала: Загрузка процессора на платформе Entaxy 2 - средняя. Наблюдается постепенное увеличение загрузки процессора при увеличении нагрузки и количества пользователей.
Загрузка процессора на платформе Entaxy-3
В ходе теста система показала: Загрузка процессора на платформе Entaxy 3 - высокая. Наблюдается постепенное увеличение загрузки процессора при увеличении нагрузки и количества пользователей.
Загрузка процессора на платформе JMeter
В ходе теста система показала: Загрузка процессора на хостах JMeter - низкая. Наблюдается постепенное увеличение загрузки процессоров хостов JMeter входящих в систему, при увеличении нагрузки.
Использование памяти на хостах Entaxy, Nginx
В ходе теста система показала: Использование памяти низкое и практически не зависит от количества виртуальных пользователей и размера пакета.
Использование дисковой подсистемы на хостах Entaxy, Nginx
В ходе теста система показала: Использование дисковой подсистемы практически не зависит от количества виртуальных пользователей и размера пакета.
Нагрузка на сеть на хостах Entaxy, Nginx, JMeter
В ходе теста система показала: Нагрузка на сеть постепенно увеличивается с увеличением размера пакета.
Тест Надежности (12-часовой)
Нагрузка в 150 виртуальных пользователей при размере пакета 100kb (80% нагрузка от пиковой) и 12-часовая продолжительность теста было условием для тестируемой системы.
Параметр |
Значение |
Duration (sec) |
43200 |
Number of threads (sum) |
150 |
Message size |
100kb |
В ходе теста система показала:
Average response time (ms) |
Error per seconds, % |
Throughput (rps) |
Threads |
Message size |
64 |
0,00 |
2300 |
150 |
100kb |
Параметр |
Jmeter-main |
Jmeter-server |
Jmeter-server |
Processor Time |
40 |
60 |
60 |
RAM |
80 |
60 |
60 |
DiskTime |
0,1 |
0,1 |
0,1 |
Network traffic |
1,8 Gbps |
1,5 Gbps |
1,5 Gbps |
Параметр |
Entaxy-1 |
Entaxy-2 |
Entaxy-3 |
Nginx |
CPU |
65 |
90 |
99 |
80 |
RAM |
32 |
15 |
15 |
5 |
Disk |
75 |
70 |
70 |
60 |
Network traffic |
80 MB/s |
80 MB/s |
80 MB/s |
480 MB/s |
Выводы
-
Достигнуты максимальные значения пропускной способности системы при размерах пакетов в 7b, 1kb, 10kb, 100kb и соотношении к количеству виртуальных пользователей:
-
Максимальная пропускная способность при размере пакета в 7b и 1kb составляет 8000 запросов в секунду (rps) при нагрузке в 1000 виртуальных пользователей.
-
Максимальная пропускная способность при размере пакета в 10kb составляет 7000 запросов в секунду (rps) при нагрузке в 1000 виртуальных пользователей.
-
Максимальная пропускная способность при размере пакета в 100kb составляет 2600 запросов в секунду (rps) при нагрузке в 100 виртуальных пользователей.
-
-
В ходе проведения группы тестов система работала стабильно, критических ошибок не было. Пропускная способность и время отклика находятся в пределах ожидаемых пороговых значений.
-
На основании проведенных тестов можно сделать вывод, что платформа Entaxy соответствует требованиям по надежности и производительности и может быть эффективно использована для создания и запуска сложных интеграционных маршрутов.