Многопоточное нагрузочное тестирование Entaxy с использованием API: Echo
Настоящее тестирование представляло собой исследование пропускных способностей Entaxy c применением системы Apache JMeter.
Цель тестирования:
Целью данного нагрузочного тестирования является оценка производительности low-code платформы Entaxy, запущенной на текущей инфраструктуре.
В рамках теста были использованы несколько параллельных потоков с различными объемами данных для установления реальных пропускных способностей платформы и определения рекомендуемого значения предельно допустимых нагрузок на компоненты.
Производительность Entaxy измерялась с использованием API:Echo (возвращает сообщение Ok
в случае успешного получения запроса).
Параметры тестирования:
Тесты были проведены с использованием следующих размеров сообщений, количества потоков и сообщений в час:
Message size |
Number of threads |
Тест 1. Количество сообщений в час |
Тест 2. Количество сообщений в час |
Тест 3. Количество сообщений в час |
64kb |
20 |
10 000 |
100 000 |
1 000 000 |
128kb |
14 |
1 000 |
10 000 |
100 000 |
256kb |
10 |
500 |
5 000 |
50 000 |
512kb |
6 |
250 |
2 500 |
25 000 |
1024kb |
2 |
125 |
1 250 |
12 500 |
Сумма |
52 |
11 875 |
118 750 |
1 187 500 |
-
Длительность теста - тест продолжается в течение 1 часа или до момента передачи всех данных;
-
Внутри потока данные передаются последовательно - это означает, что если общее количество сообщений в час составляет 1 000 000, а количество потоков равно 20, то в каждом потоке будет обработано по 50 000 сообщений.
Для измерения производительности каждого теста использовались следующие ключевые метрики:
-
Пропускная способность (Throughput): количество вызовов API обрабатываемых в секунду.
-
Количество сообщений (Samples): общее количество выполненных запросов.
-
Длительность теста (Duration): общее время выполнения теста.
Деплой, используемый для теста:
Конфигурация стенда:
NAME | HDD (GB) | RAM(GB) | CPU |
---|---|---|---|
krf1 |
40 |
16 |
4 |
krf2 |
40 |
16 |
4 |
krf3 |
40 |
16 |
4 |
ngnix |
40 |
16 |
8 |
Entaxy 1.10 • Java 11 Liberica • Ubuntu 20.04
Результаты теста
Тест 1.
-
Duration (sec): 40
-
Average response time (ms): 23
-
Throughput (rps): 460
Размер сообщения
Ожидаемое количество сообщений в час
Результат
Throughput (rps)
Average (ms)
64 KB
10 000
10 000
391
13
128 KB
1 000
938
57
60
256 KB
500
500
30
83
512 KB
250
252
11
93
1024 KB
120
84
5
204
Сумма
11 875
11 774
Тест показывает, что система успешно обработала ожидаемую нагрузку за короткое время - 40 секунд.
Параметр |
Entaxy-1 |
Entaxy-2 |
Entaxy-3 |
Nginx |
CPU (%) |
4 |
4 |
4 |
7 |
RAM (%) |
50 |
50 |
50 |
4 |
Disk R/W Data |
800 KB/s |
800 KB/s |
800 KB/s |
40 KB/s |
Network traffic |
800 KB/s |
800 KB/s |
800 KB/s |
2 MB/s |
Тест 2.
-
Duration (min): 4
-
Average response time (ms): 35
-
Throughput (rps): 520
Размер сообщения Ожидаемое количество сообщений в час Результат Throughput (rps) Average (ms) 64 KB
100 000
100 000
442
7
128 KB
10 000
9 338
73
15
256 KB
5 000
5 000
42
18
512 KB
2 500
2 502
19
25
1024 KB
1 250
834
4
39
Сумма
118 750
117 674
Тест показывает, что система успешно обработала ожидаемую нагрузку за короткое время - 4 минуты.
Параметр |
Entaxy-1 |
Entaxy-2 |
Entaxy-3 |
Nginx |
CPU (%) |
8 |
8 |
8 |
10 |
RAM (%) |
50 |
50 |
50 |
4 |
Disk R/W Data |
10 MB/s |
10 MB/s |
10 MB/s |
80 KB/s |
Network traffic |
6 MB/s |
6 MB/s |
6 MB/s |
15 MB/s |
Тест 3.
-
Duration (min): 40
-
Average response time (ms): 41
-
Throughput (rps): 490
Размер сообщения Ожидаемое количество сообщений в час Результат Throughput (rps) Average (ms) 64 KB
1 000 000
1 000 000
416
7
128 KB
100 000
93 338
70
38
256 KB
50 000
50 000
37
42
512 KB
25 000
25 002
17
43
1024 KB
12 500
8 334
4
50
Тест показывает, что система успешно обработала ожидаемую нагрузку за относительно короткое время, с учетом объема передаваемых данных - 40 минут.
Параметр |
Entaxy-1 |
Entaxy-2 |
Entaxy-3 |
Nginx |
CPU (%) |
70 |
80 |
70 |
10 |
RAM (%) |
50 |
50 |
50 |
4 |
Disk R/W Data |
13 MB/s |
13 MB/s |
13 MB/s |
200 KB/s |
Network traffic |
15 MB/s |
15 MB/s |
15 MB/s |
50 MB/s |
Общие данные:
Message size | Number of threads | Тест 1. Samples (requests) Duration: 40 sec | Тест 1. Throughput (rps) | Тест 2. Samples (requests) Duration: 4 min | Тест 2. Throughput (rps) | Тест 3. Samples (requests) Duration: 40 min | Тест 3. Throughput (rps) |
---|---|---|---|---|---|---|---|
64 |
20 |
10 000 |
391 |
100 000 |
442 |
1 000 000 |
416 |
128 |
14 |
938 |
57 |
9 338 |
73 |
93 338 |
70 |
256 |
10 |
500 |
30 |
5 000 |
42 |
50 000 |
37 |
512 |
6 |
252 |
11 |
2 502 |
19 |
25 002 |
17 |
1024 |
2 |
84 |
5 |
834 |
4 |
8 334 |
4 |
Сумма |
52 |
11 774 |
117 674 |
1 176 674 |
Исходя из результатов трех проведенных тестов, можно сделать следующие общие выводы:
-
Пропускная способность: Система продемонстрировала высокую пропускную способность при различных объемах сообщений и временных интервалах тестирования. Время отклика оставалось стабильным и низким.
-
Обработка данных: Система эффективно обработала большие объемы данных за относительно короткие промежутки времени.
-
Стабильность и надежность: Результаты тестов подтверждают стабильность работы системы при различных условиях тестирования.
-
Влияние размера сообщений: Более крупные сообщения требуют больше времени на обработку, но система успешно справляется с различными размерами сообщений.