Установите плагины JMeter в распределенной установке - PullRequest
0 голосов
/ 06 августа 2020

У нас есть распределенная установка JMeter с 1 клиентом и 3 серверами. При отправке плана тестирования клиенту используется любой плагин JMeter, например. Arrival Thread Group, это не удается из-за того, что плагины не установлены.

Мы использовали диспетчер плагинов JMeter cmd для установки плагинов из плана тестирования (jmx):

 PluginsManagerCMD install-for-jmx <test-plan> 

Но это устанавливает плагины на клиенте, пока при выполнении теста мы получаем следующую ошибку со всех серверов (поскольку на них не установлен плагин) -

Ошибка в методе rconfigure () java .rmi.ServerException: RemoteException в серверном потоке; вложенное исключение: java .rmi.UnmarshalException: ошибка демаршалинга аргументов; вложенное исключение: java .lang.ClassNotFoundException: com.blazemeter.jmeter.threads.arrivals.ArrivalsThreadGroup (без диспетчера безопасности: загрузчик классов RMI отключен)

Вопросы:

  1. Как установить плагины на серверы из тест-плана в автоматическом режиме (из cmd, аналогично jmeter client)?

  2. Можно ли получить список плагины, необходимые для плана тестирования на клиентском узле, и передать этот список серверам для установки на их конце?

1 Ответ

1 голос
/ 06 августа 2020

Может быть, моя поваренная книга тебе поможет. Я использую экземпляры parallel, rsyn c и наименьшие aw c в качестве генераторов нагрузки с именами performance1-10 и performance-master. Беспарольный s sh доступ ко всем необходимым узлам. Замени свое имя

aws ec2 describe-instances --output text --filters 'Name=tag:Name,Values=performance*' 'Name=instance-state-name,Values=running' --query 'Reservations[*].Instances[*].{Name:Tags[?Key==`Name`]|[0].Value,PublicIpAddress:PublicIpAddress} | sort_by(@, &[0].Name) | [*][*].PublicIpAddress'  > ips
head -n -1 ips > ipswomaster #check!
cat ips | parallel -j20 ssh-keyscan -H {} >> ~/.ssh/known_hosts
parallel -j20 --tag --nonall --slf ips uptime
# for first time: parallel -j20 --tag --nonall --slf ips sudo mkdir /opt/perf_test
parallel -j20 --tag --nonall --slf ips sudo chown -R yourname:yourname /opt/perf_test
cat ips | parallel -j20 rsync -arvzu /opt/perf_test/ {}:/opt/perf_test
parallel -j20 --tag --nonall --slf ipswomaster "screen -dmS yourname bash -c 'cd /opt/perf_test; rm *.log; JVM_ARGS=\"-Xms512m -Xmx512m\" /opt/perf_test/apache-jmeter/bin/jmeter-server; exec bash'"

# on master node
screen -R yourname
cd /opt/perf_test
STROJE="";while read -r l; do STROJE="$STROJE$l:1099,"; done < ipswomaster;rm *.log; JVM_ARGS="-Xms512m -Xmx512m" /opt/perf_test/apache-jmeter/bin/jmeter -R"${STROJE::-1}" -n -t test.jmx

# stop test on master node
ctrl+a ctrl+c #create new screen tab
cd /opt/perf_test/apache-jmeter/bin/
./stoptest.sh

# java update (if needed)
parallel -j20 --tag --nonall --slf ips java -version
parallel -j20 --tag --nonall --slf ips sudo apt install -y openjdk-8-jdk-headless
parallel -j20 --tag --nonall --slf ips update-java-alternatives --list | sort
parallel -j20 --tag --nonall --slf ips sudo update-java-alternatives --set /usr/lib/jvm/java-1.8.0-openjdk-amd64
parallel -j20 --tag --nonall --slf ips java -version | sort
...