在分布式安装程序中安装JMeter插件

在分布式安装程序中安装JMeter插件,jmeter,jmeter-plugins,jmeter-5.0,jmeter-4.0,Jmeter,Jmeter Plugins,Jmeter 5.0,Jmeter 4.0,我们有一个分布式JMeter设置,有1个客户端和3个服务器。当向客户端提交测试计划时,即使用任何JMeter插件,例如Arrival Thread Group,由于未安装插件,测试失败 我们使用JMeter plugin manager cmd从测试计划(jmx)安装插件: jmx的pluginmanagercmd安装 但这会在客户端安装插件,而在执行测试时,我们会从所有服务器收到以下错误(因为插件未安装在服务器上)- rconfigure()方法java.rmi.ServerExceptio

我们有一个分布式JMeter设置,有1个客户端和3个服务器。当向客户端提交测试计划时,即使用任何JMeter插件,例如Arrival Thread Group,由于未安装插件,测试失败

我们使用JMeter plugin manager cmd从测试计划(jmx)安装插件:

jmx的pluginmanagercmd安装 但这会在客户端安装插件,而在执行测试时,我们会从所有服务器收到以下错误(因为插件未安装在服务器上)-

rconfigure()方法java.rmi.ServerException中出错:服务器线程中发生RemoteException;嵌套异常是: java.rmi.UnmarshalException:错误解组参数;嵌套异常是: java.lang.ClassNotFoundException:com.blazemeter.jmeter.threads.arrivals.ArrivalsThreadGroup(无安全管理器:禁用RMI类装入器)

问题:

  • 如何从测试计划以自动化的方式(从cmd,类似于jmeter客户端)在服务器上安装插件

  • 我们能否在客户端节点获得测试计划所需的插件列表,并将该列表传递给服务器,以便在服务器端进行安装


  • 也许我的食谱会对你有所帮助。我使用并行、rsync和最小的awc实例作为名为performance1-10和performancemaster的负载生成器。需要对所有节点进行无密码ssh访问。替换你的名字

    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
    
    aws ec2描述实例--输出文本--过滤器'Name=tag:Name,Values=performance*''Name=instance state Name,Values=running'--query'保留[*].实例[*.{Name:Tags[?Key==`Name`].[0].值,PublicIpAddress:PublicIpAddress}排序依据(@,&[0].名称)[*][*].PublicIpAddress>ips
    head-n-1ips>ipswoomaster#检查!
    cat-ips | parallel-j20-ssh-keyscan-H{}>~/.ssh/known_主机
    parallel-j20--tag--nonall--slf-ips正常运行时间
    #第一次:parallel-j20--tag--nonall--slf-ips-sudo-mkdir/opt/perf_测试
    parallel-j20--tag--nonall--slf ips sudo chown-R yourname:yourname/opt/perf_test
    cat ips并行-j20 rsync-arvzu/opt/perf_test/{}:/opt/perf_test
    parallel-j20--tag--nonall--slf ipswomester“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”
    #在主节点上
    screen-R你的名字
    cd/opt/perf_测试
    STROJE=“”;而read-rl;do STROJE=“$STROJE$l:1099,”;已完成
    感谢@lojza提供的有用见解。可能正如您所提到的,这意味着我们必须自己通过一些脚本来处理它,而到目前为止,这并不是JMeter所隐含的。
    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