Как увеличить JMeter для обработки 50000 потоков для распределенного тестирования на виртуальных машинах Linux? - PullRequest
0 голосов
/ 25 июня 2018

Система:

У меня есть следующие настройки JMeter для распределенного тестирования без графического интерфейса пользователя: 1 главная виртуальная машина, 2 подчиненных.Все 3 виртуальные машины Azure: Ubuntu 16.04, 4 vcpus, 16 ГБ ОЗУ

Я следовал этому руководству по настройке JMeter и не вижу улучшенных результатов: https://www.blazemeter.com/blog/9-easy-solutions-jmeter-load-test-%E2%80%9Cout-memory%E2%80%9D-failure

Я также настроил все 3 системысогласно руководству по настройке EMQ: http://emqtt.io/docs/v2/tune.html

Проблема: Я все еще не могу установить 50000 соединений в течение 5000 с (1 ч 23 м) с двумя подчиненными виртуальными машинами.

СогласноВ документации JMeter я могу запустить 1000 потоков за x раз на одну виртуальную машину:

25.5 Ограничения , 3. Один клиент JMeter, работающий на процессоре 2-3 ГГц (последние CPU) может обрабатывать 1000-2000 потоков в зависимости от типа теста.

https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

Я могу проверить это на практике.Я также могу убедиться, что я могу достичь максимум 12 000 потоков за 600 с.(12500 потоков в любое время приводят к исключению OV JVM)

Поскольку целевые серверы являются виртуальными машинами, на которых выполняются экземпляры EMQ, отмечу, что в официальных документах по нагрузочному тестированию EMQ агент тестирования описывается как 1 VM 30000 VU (2докеры * 15000 VU. (http://emq -xmeter-benchmark-en.readthedocs.io / en / latest / connection.html # ssl-аутентификация )

Вопрос: Мне интересно, существует ли известная реализация JMeter (+ Virtual Machines + VirtualBox или Docker или какой-либо другой сервис), которая допускает больше потоков. Или, если есть известная оптимизация для JMeter, к которой я не обратился?

1 Ответ

0 голосов
/ 26 июня 2018

Количество виртуальных пользователей, которые JMeter может запустить, зависит от характера вашего теста , а именно:

Поэтому не верьте утверждению о том, что один экземпляр JMeter может имитировать 1000 потоков.Также не верьте утверждению, что он может обрабатывать 15000 потоков.Это просто потому, что они не запускают ваш тест в ваших аппаратных и программных условиях.Вы можете получить> 100 000 пользователей, если в вашем плане тестирования будет один фиктивный пробоотборник с нулевым временем соединения, задержкой и временем отклика, но этот тест не является репрезентативным.

  1. Настройте мониторинг базовых показателей работоспособности ОС на машинах, где работают подчиненные JMeter, для этого вы можете использовать, например, JMeter PerfMon Plugin .
  2. Запустите тест и постепенно увеличьте нагрузку, в то же время следите за использованием ЦП, ОЗУ, сети и диска в PerfMon
  3. При любом из отслеживаемыхПоказатели превышают, т. е. 90% от общей доступной емкости остановят ваш тест и измерят, сколько виртуальных пользователей были активны в это время - это то, сколько вы сможете смоделировать на конкретной машине для конкретного типа теста.
  4. Если число, умноженное на количество подчиненных машин, равно или превышает общее количество пользователей, которое вам нужно смоделировать, - все готово.Если нет - вам понадобится еще один рабский аппарат.

Что касается ваших настроек, я могу думать только о запуске 3-го метра подчиненного двигателя на той же машине, где у вас есть master в качестве главного двигателя JMeter в основномничего не делает, кроме отправки скрипта .jmx рабам и сбора результатов.И если у вашего мастера те же аппаратные характеристики, что и у ведомых - вы можете использовать оставшуюся емкость для увеличения нагрузки.

...