Linux下Jmeter分布式部署
一.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