#jmeter
#jmeter
Вопрос:
Я использую Jmeter версии 5.2.1. У меня есть сценарий для имитации 400 параллельных входов в систему, и внутри плана тестирования я буду выполнять тестовые выборки 20 раз, используя контроллер цикла для каждого пользователя (потоков).
Следовательно, для ускорения я выполнил его при удаленном выполнении теста. Обычно 200 потоков с количеством циклов 10 занимают максимум 25 минут. При увеличении количества циклов до 20 одно из соединений подчиненного узла закрылось, и сборка Дженкинса перешла в мертвый цикл.
Я использую AWS M5.xLarge тип экземпляра. 4 процессора / 16 ГБ оперативной памяти. Ниже приведена команда запуска, которую я использую для Jmeter
JVM_ARGS="-Xms2g -Xmx4g -XX:MaxMetaspaceSize=256m" amp;amp; export JVM_ARGS amp;amp; ./jmeter -n -t /home/jenkins/workspace/performance-test-staging-pipeline/test_plans/fd_regression_delight.jmx -e -o /home/jenkins/workspace/fd-performance-test-staging-pipeline/Performance-Report -l /home/jenkins/workspace/fd-performance-test-staging-pipeline/JTL-RPT-986.jtl -R xx.xx.xx.xxx,yy.yy.yy.yyy -Jserver.rmi.ssl.disable=true -Dclient.tries=3 -Gthreads=200
Ниже приведен журнал сборки, который я вижу в консоли сборки Jenkins.
summary 2700 in 00:00:59 = 45.4/s Avg: 3259 Min: 98 Max: 32684 Err: 0 (0.00%) Active: 400 Started: 400 Finished: 0
summary = 52102 in 00:25:38 = 33.9/s Avg: 6542 Min: 81 Max: 139355 Err: 0 (0.00%)
Ниже приведен журнал, который я вижу в jenkins-server.log
Connection to xx.x.x.xxx closed by remote host.
Connection to xx.x.x.xxx closed.
Ответ №1:
Просматривая эту строку:
summary = 52102 in 00:25:38
кажется, что JMeter выполнил 52102 запроса за 25 минут. Я не знаю, сколько запросов имеет ваш план тестирования, однако я ожидал бы чего-то вроде:
- для 1 запроса: 400 потоков * 20 циклов * 1 запрос = 8000
- для 2 запросов: 400 потоков * 20 циклов * 2 запроса = 16000
- для 3 запросов: 24000 результатов
- и т.д.
Поэтому убедитесь, что вы указали правильное количество циклов или ограничили продолжительность теста либо на уровне группы потоков, либо с помощью контроллера среды выполнения
Также, когда дело доходит до распределенного тестирования, каждый подчиненный выполняет план тестирования, как есть, если у вас 200 пользователей, установленных в плане тестирования, и есть 1 подчиненный — у вас будет 200 пользователей, для 2 подчиненных у вас будет 400 пользователей, для 3 подчиненных — 600 пользователей и т. Д. Так что, если вам нужноВсего 200 пользователей, которые вы можете захотеть установить -Gthreads=100
, учитывая, что у вас есть 2 подчиненных компьютера
Также обратите внимание на время отклика, кажется, что для некоторых сэмплеров оно превышает 2 минуты, 2 минуты * 20 циклов дают 40 минут общего выполнения
Комментарии:
1. Я вижу, что клиент Jmeter все еще активен даже после завершения. Ниже приведены последние 3 строки в jmeter.log
2020-11-30 10:05:30,138 INFO o.a.j.r.Summariser: summary 15800 in 00:00:29 = 553.8/s Avg: 208 Min: 4 Max: 18558 Err: 13375 (84.65%) Active: 250 Started: 250 Finished: 0 2020-11-30 10:05:30,139 INFO o.a.j.r.Summariser: summary = 66827 in 00:25:45 = 43.2/s Avg: 3204 Min: 4 Max: 130746 Err: 13378 (20.02%) 2020-11-30 10:05:35,875 INFO o.a.j.JMeter: Finished remote host: 10.0.3.245 (1606730735875)
Как остановить jmeter после завершения выполнения?2. Если вы хотите остановить удаленное подчиненное устройство после теста, вы можете определить следующее свойство:
jmeterengine.remote.system.exit=true
либо в файлах user.properties , либо передав его через-J
аргумент командной строки . Дополнительная информация: Руководство по настройке свойств Apache JMeter3. Все еще возникает та же проблема. Ниже приведена команда запуска клиента Jmeter «JVM_ARGS=»-Xms10g -Xmx10g» ./jmeter -n -t /home/jenkins/workspace/release-performance-test-staging-pipeline/test_plans/ delights/regression.jmx -e -o /home/jenkins/workspace/release-performance-test-staging-конвейер / Отчет о производительности -l /home/jenkins/workspace/release-performance-test-staging-конвейер / JTL-FD-1002.jtl -R xx.x.x.xxx,yy.y.y.yyy -Jserver.rmi.ssl.disable=true -Dclient.tries=3 -Gthreads= 125 -Jjmeterengine.remote.system.exit=true -X «
4. Дмитрий, я вижу, что подчиненная машина отключилась в середине выполнения. Мы используем экземпляр Spot. « Соединение с xx.x.x.xxx закрыто удаленным хостом. Соединение с yy.yy.yyy закрыто. « В чем может быть причина?
Ответ №2:
Мы используем экземпляр spot для запуска наших тестов. Как только я увеличу время ожидания слива группы безопасности, моя проблема будет решена.