Нагрузка на 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).

Деплой, используемый для теста

entaxy deploy

Конфигурация стенда, на котором проводилась нагрузка:

NAME

HDD (GB)

DATAS

RAM(GB)

CPU

postgres

120

7TB

8

8

krf1

40

3TB

16

4

krf2

40

3TB

16

4

krf3

40

3TB

16

4

amq1

40

3TB

16

4

amq2

40

3TB

16

4

ngnix

40

3TB

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.

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

    throught thread 3nodes630

    В ходе теста система показала:

    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.

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

    average thread 3nodes630

    В ходе теста система показала:

    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

Сравнение результатов

Сравнение пропускной способности

Пропускная способность (запросов/в секунду) по сравнению с одновременно работающими пользователями и размером сообщений.

throught 7b630
throught 1kb630
throught 10kb630
throught 100kb630

Загрузка процессоров на хостах Entaxy, Nginx, JMeter

Загрузка процессора на хосте Nginx

CPU nginx

В ходе теста система показала: Загрузка процессора на хосте с Nginx - низкая. Наблюдается постепенное увеличение загрузки процессора Nginx при увеличении нагрузки и количества пользователей.

Загрузка процессора на платформе Entaxy-1

CPU entaxy 1

В ходе теста система показала: Загрузка процессора на платформе Entaxy 1 - средняя. Наблюдается постепенное увеличение загрузки процессора при увеличении нагрузки и количества пользователей.

Загрузка процессора на платформе Entaxy-2

CPU entaxy 2

В ходе теста система показала: Загрузка процессора на платформе Entaxy 2 - средняя. Наблюдается постепенное увеличение загрузки процессора при увеличении нагрузки и количества пользователей.

Загрузка процессора на платформе Entaxy-3

CPU entaxy 3

В ходе теста система показала: Загрузка процессора на платформе Entaxy 3 - высокая. Наблюдается постепенное увеличение загрузки процессора при увеличении нагрузки и количества пользователей.

Загрузка процессора на платформе JMeter

CPU jmeter

В ходе теста система показала: Загрузка процессора на хостах JMeter - низкая. Наблюдается постепенное увеличение загрузки процессоров хостов JMeter входящих в систему, при увеличении нагрузки.

Использование памяти на хостах Entaxy, Nginx

RAM hosts

В ходе теста система показала: Использование памяти низкое и практически не зависит от количества виртуальных пользователей и размера пакета.

Использование дисковой подсистемы на хостах Entaxy, Nginx

FS hosts

В ходе теста система показала: Использование дисковой подсистемы практически не зависит от количества виртуальных пользователей и размера пакета.

Нагрузка на сеть на хостах Entaxy, Nginx, JMeter

network hosts

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

Тест Надежности (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

Выводы

  1. Достигнуты максимальные значения пропускной способности системы при размерах пакетов в 7b, 1kb, 10kb, 100kb и соотношении к количеству виртуальных пользователей:

    • Максимальная пропускная способность при размере пакета в 7b и 1kb составляет 8000 запросов в секунду (rps) при нагрузке в 1000 виртуальных пользователей.

    • Максимальная пропускная способность при размере пакета в 10kb составляет 7000 запросов в секунду (rps) при нагрузке в 1000 виртуальных пользователей.

    • Максимальная пропускная способность при размере пакета в 100kb составляет 2600 запросов в секунду (rps) при нагрузке в 100 виртуальных пользователей.

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

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