#jmeter #performance-testing
#jmeter #тестирование производительности
Вопрос:
У меня есть единственный API для тестирования, и я хочу достичь 30 тыс. TPS с помощью этого API. Может ли кто-нибудь полностью объяснить мне, как протестировать это с помощью Jmeter? Это может быть с 20, 40 или 60 пользователями, но я хочу достичь этого, используя режим пользовательского интерфейса Jmeter?
Ответ №1:
Ваш вопрос слишком широкий.
В любом случае, простой и прямой ответ заключается в том, что вы, возможно, не сможете достичь этого в режиме пользовательского интерфейса, и вам может потребоваться несколько подчиненных устройств. Если ваш API имеет SLA в 1 секунду, выполнение одного потока с частотой 1 секунда приведет к 3600 транзакциям за час (1 TPS). Итак, вам потребуется 30 000 потоков в JMeter для достижения 30 000 TPS.
Ответ №2:
Графический интерфейс JMeter предназначен не для нагрузочного тестирования, а только для отладки плана тестирования. Графический интерфейс очень ресурсоемкий и потребляет много памяти. Лучше и настоятельно рекомендуется выполнять нагрузочное тестирование в режиме, отличном от GUI.
Когда вы запустите свой JMeter в режиме GUI, вы увидите это:
Поскольку 30K TPS слишком высоки, и для тестирования этого вы должны предоставить достаточное количество потоков. Чтобы рассчитать, сколько потоков вам нужно для этого теста, вам также нужно знать максимальное время отклика API.
Вот формула для вычисления номера потока:
TPS * максимальное время отклика в секунду
Например, если у вас есть время отклика 1 second
, то для генерации 30K TPS
вам нужно 30K threads
. Если время отклика API равно 500ms
, то вам нужно как минимум 15K threads
.
Чтобы генерировать такую высокую нагрузку, вам также необходимо перейти на распределенное тестирование, потому что вы не сможете генерировать такую высокую нагрузку с одной машины. Чтобы определить, сколько потоков вы можете сгенерировать с одной машины, вам также нужно протестировать это самостоятельно. Попробуйте постепенно увеличивать количество потоков и следить за состоянием машины. Если это потребляет 70-80%
работоспособность вашего компьютера (процессор, память, диск), то остановите тест и отметьте количество потоков. Теперь вы можете предположить, сколько машин вам нужно для тестирования этого сценария.
Наконец, я предлагаю вам перепроверить ваши требования к тестированию, потому что 30 Тыс. TPS ( 108000000
запросов в час) — это слишком много!
Подробнее смотрите Лучшие практики Apache JMeter.