Size: a a a

QA — Load & Performance

2021 June 17

VG

Viktor Ganeles in QA — Load & Performance
Для запуска где угодно.

Запись в инфлакс, работает по модели предложенной Славой Смирновым: телеграф запускает сторонний скрипт через input.exec

Сам скрипт, запускаемый телеграфом - это powershell для windows и bash для nix

Хорош тем, что игнорирует те самые «рандомные» порты, с которых устанавливается коннект.


То есть он собирает данные только по тем портам (или диапазонам портов), что указаны в конфиге + по тем портам, которые встречаются более одного раза (на одном ip)

Собирает информацию по:
- Ip, port (источника и назначения)
- состояние коннекта (established, time-wait, fin и пррчие)
- pid
- processName
- commandline
источник

AA

Artem Astaxov in QA — Load & Performance
звучит круто👍🏻
источник

СФ

Степа Фомичев... in QA — Load & Performance
Ребята, всем привет!

Кто-то пользовался grpc sampler в JMeter?
https://github.com/zalopay-oss/jmeter-grpc-request
Он норм, весь grpc покрывает?
источник

АЧ

Антон Чертков... in QA — Load & Performance
Всем привет. Помогите, пожалуйста, по распределенному тестированию с jmeter.

Клиент и сервер, имеют одинаковые версии java и jmeter, находятся в разных подсетях, соединение по ssh туннелю по данной схеме:
ssh -L 24000:127.0.0.1:24000 \
-R 25000:127.0.0.1:25000 \
-L 26000:127.0.0.1:26000 -N -f <username>@<server>

В сетях, портах, тоннелях вообще не силен да и в jmeter новичок, действовал, руководствуясь: seleniumtests.com/2015/12/distributed-testing-with-jmeter-when.html по другим схемам тест вообще не запускался.

Тест запускается и в гуи, и нон гуи режиме, но результаты до клиента не доходят.

Запуск сервера: ./jmeter-server -Djava.rmi.server.hostname=127.0.0.1
Запуск клиента: ./jmeter -n -t test.jmx -l test_log.csv -R 127.0.0.1:24000 -Djava.rmi.server.hostname=127.0.0.1

При запуске теста на сервере отображается:
Using local port: 26000
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[127.0.0.1:26000](local),objID:[-14c037d4:17a194c938b:-7fff, -7956282061330307852]]]
Starting the test on host 127.0.0.1:24000 @ Thu Jun 17 07:25:11 UTC 2021 (1623914711188)
Finished the test on host 127.0.0.1:24000 @ Thu Jun 17 07:25:33 UTC 2021 (1623914733333)

При запуске теста нон гуи на клиенте отображается:
WARNING: package sun.awt.X11 not in java.desktop
Creating summariser <summary>
Created the tree successfully using test.jmx
Configuring remote engine: 127.0.0.1:24000
Starting distributed test with remote engines: [127.0.0.1:24000] @ Thu Jun 17 13:25:50 SAMT 2021 (1623921950887)
Remote engines have been started:[127.0.0.1:24000]
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445

После выполнения команды echo -n "StopTestNow" | nc -u localhost 4445, на клиенте отображается: Command: StopTestNow received from /0:0:0:0:0:0:0:1, но дальше ничего не происходит.

Подскажите, пожалуйста, в чем может быть проблема? В какую сторону копать?
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Попробуйте опции JVM

-Djava.net.preferIPv4Stack=true
-Djava.net.preferIPv6Addresses=false

Чтобы сделать активным только ipv4 подключения
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
А также будет нужна опция
-Djava.rmi.server.hostname=127.0.0.1

Тут сейчас не утверждаю, что именно с таким значением. Но сначала попробуйте с таким.
Подробнее о протоколе RMI и как у него по умолчанию выбирается hostnamе можно тут прочитать:

https://bell-sw.com/announcements/2020/10/28/JVM-in-Linux-containers-surviving-the-isolation/
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
У вас не контейнеры, как в статье, а ssh-тунели, но в текущем контексте схожая ситуация
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Если так не задать, то агент запускается на сервере agent-xxx-1,
мастер jmeter видит его через ssh-тунель как на localhost, но при первом подключении агент говорит мастеру, - команды для меня отправляй на
agent-xxx-1:{RMI port}
А для мастера JMeter этот адрес может быть недоступен

А если задать опцию при запуске агента
-Djava.rmi.server.hostname=127.0.0.1
то он скажет мастеру, что команды он принимает так:
127.0.0.1:{RMI port}

И если вы сделали форвард этого порта на мастер, то мастер его там успешно найдет. Тунель его успешно пробросит и агент команды получит
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Только сейчас прочел. что все ОК и rmi настроен верно. Проверяйте дальше логи jmeter. Сейчас я не понял, что ожидается - что тест будет идти, а он завершается?
Может быть дело в том, что путь к CSV-файлу задан неверно и в non-gui он не найден или что-то такое и тест завершается. А в GUI все срабатывает.

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

VG

Viktor Ganeles in QA — Load & Performance
У Максима @Mikstyraspb была проблема, что через vpn работало, но тупило и работало не стабильно.

Когда он запустил всё без vpn, в одной локалке - всё заработало нормально.

Попробуйте избавиться от туннелей.
источник

NM

NoEndOutcry💡🔋🚓 Mikst... in QA — Load & Performance
Все так
источник

NM

NoEndOutcry💡🔋🚓 Mikst... in QA — Load & Performance
все машины в одну подсеть
источник

VG

Viktor Ganeles in QA — Load & Performance
Вроде у Максима проблемы были очень похожие: вроде распределённый тест стартует, но работает не «всё как надо», а «как попало»
источник

АЧ

Антон Чертков... in QA — Load & Performance
Ожидается, что на клиенте будет отображаться процесс выполнения теста: «summary +      3 in     6s =    0.5/s Avg:   139 Min:    58 Max:   191 Err:     0 (0.00%) Active: 1 Started: 2 Finished: 1» и в итоге «... end of run». А по факту тест завершается, но процесс висит. По таймстемпам на сервере тест проходит за тоже время, как и при запуске на локальной машине, поэтому сделал вывод, что тест на сервере всё-таки запускается.
В тесте нет импорта CSV.
jks - это ключи ssl? У меня выставлено server.rmi.ssl.disable=true. Или не надо так?
источник

АЧ

Антон Чертков... in QA — Load & Performance
т.е. обязательно нужен сервер внутри подсети, в которой находится клиент?
источник

АЧ

Антон Чертков... in QA — Load & Performance
без туннеля тест вроде запускался, но с большой задержкой, в итоге завершался по тайм ауту сервера
источник

jj

jagga jagga in QA — Load & Performance
никаких других файлов не используется в тесте?
источник

jj

jagga jagga in QA — Load & Performance
нет ssl - нет проблем с ключами)
источник

АЧ

Антон Чертков... in QA — Load & Performance
Нет, из файла только сам тест, который на клиенте
источник

NM

NoEndOutcry💡🔋🚓 Mikst... in QA — Load & Performance
В одной подсети должны находиться тачка с которой тест запускается, и зависимые от нее тачки
источник