首页 > 技术文章 > Linux下Jmeter分布式部署

jiangger 2020-12-16 18:59 原文

一.JDK安装和环境变量配置

1.准备JDk包,或者直接通过wget安装

  wget --no-check-certificate --no-cookies --header “Cookie: oraclelicense=accept- securebackup-cookie” https://download.oracle.com/otn/java/jdk/8u221-b11/230deb18db3e4014bb8e3e8324f81b43/jdk-8u221-linux-x64.tar.gz

    如果没有wget,先安装wget:  yum install wget

2.解压配置环境变量

vim  /etc/profile , 按i 键进入编辑模式,在文件末尾加上以下代码:
export JAVA_HOME=/usr/java/jdk1.8.0_211(JDK解压路径对应的路径)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
注:如果服务器已经配置了jdk,只需要配置jre环境即可;

3.检验结果:

输入:java -version,若出现版本号即成功

 

 二、jmeter环境配置

vim  /etc/profile , 按i 键进入编辑模式,在文件末尾加上以下代码:
export JMETER_HOME=/iflytek/jmeter/apache-jmeter-5.0 (jmter解压路径对应的路径)
export PATH=$JMETER_HOME/bin:$PATH 
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:
                                    $JMETER_HOME/lib/jorphan.jar:$CLASSPATH

注:修改完配置文件后更新生效文件     source  /etc/profile

检验:任意路径下输入 jmeter --version ,出现以下弹框说明成功:

 

 三、单节点执行

1.在windows环境,打开JMeter,配置好相应的请求参数,将脚本复制到Linux jmeter安装目录下
2.执行脚本命令:jmeter -n -t test.jmx -l result.jtl
参数说明:
-n 在非GUI模式(减少系统资源的消耗)下运行JMeter   
-t  要运行的JMeter测试脚本文件(test.jmx需要执行的脚本)
-l  记录结果的文件(result.jtl生成结果的文件)
3.执行结束后jmeter目录下会生成result.jtl,将result.jtl复制到windows系统,打开任意监听器,选取文件路径,即可查看结果

注:若脚本中含有参数化相关文件,需要将参数化文件拷贝到每个执行机,放到对应脚本目录下,脚本里配置当前路径即可

 

 四、多节点执行

1.修改执行机:
bin/jmeter.properties:server_port=1099;并启动bin/jmeter-server, 启动指令:./jmeter-server

server.rmi.ssl.disable=true(关闭SSL传输)

2.修改调度机:
bin/jmeter.properties:remote_hosts=172.31.7.37:1099, 172.31.7.36:1099;(执行机的IP, 多个执行机用逗号隔开)
server.rmi.ssl.disable=true(关闭SSL传输)

3.调度机执行:
指定IP执行:jmeter -n -t test.jmx -R 172.31.7.37,172.31.7.36 -l result1.jtl
启动所有执行机本: jmeter -n -t test.jmx -r -l result1.jtl  


4.检查结果:

 

 

五、 分布式部署注意事项

            a.我们注意到master机器启动后会拷贝jmx文件到slave机器,所以我们不需要在每台slave机器上也上传一份jmx,只需要在master机器上上传一份jmx脚本即可。

            b.参数化文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的,建议可以将参数文件设置为当前目录,需要将参数化文件拷贝到jmeter-server启动时目录

            c.调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为master。

           d.保证每台机器的jmeter版本和插件版本相同,避免造成一些意外问题。

            e.分布式测试总样本数 = 线程数 * 循环次数 * 执行机总数, 样本计数逻辑为:执行机slave执行的测试脚本是由调度机master分发的,故每台执行机执行的测试脚本都是相同的,故而性能测试总样本数 = 测试脚本样本数 * 执行机总数,而测试脚本样本数为线程数 * 循环次数,从并发线程数说:例如需要100路并发,两台压力机执行,则需要设置脚本并发数为50 总压力等于 50*2=100

推荐阅读