一、背景
使用jmeter做接口性能测试的时候,经常是直接在windows机器上,打开jmeter,然后编写执行脚本,设置好并量等数据后,往接口进行压测请求,一旦并发量上来了,自己的windows机器可能支撑不了太大的数据,所以想到使用jmeter分布式请求。
所以准备搭建jmeter分布式部署。
机器:1台master, 5台slave
二、遇到的问题
官网上介绍了,使用window机器作为master,其余使用linux机器作为slavle,但是由于我的测试环境与master主机不在一个网段,出现了refused connect的报错。
按照网上的一些方法:
- 关闭master, slave防火墙,关闭windows中的anti-virus
- 关闭iptables
- 修改jmeter.properties中remote_hosts地址
- 修改jmeter.properties中server.rmi.ssl.disable=true
- vi /etc/hosts中地址映射
仍然无法解决问题,最后我怀疑是网段的问题,使用了2台相同网段的机器,同时抛弃使用windows作为master,直接使用linux作为master,然后就可以运行了。
三、jmeter分布式环境搭建
上传文件
上传jmeter-5.1.1.zip到linux机器中/usr/local/software
解压zip文件
unzip jmeter-5.1.1.zip
修改权限
cd /usr/local/software/jmeter-5.1.1/bin/
chmod 755 jmeter jmeter-server jmeter.sh
修改配置
所有的机器都修改以下配置
vi jmeter.properties
jmeter.properties中server.rmi.ssl.disable=true
master机器还需修改remote_hosts,这里的主控机既做master也做slave
vi jmeter.properties
remote_hosts=192.168.0.1:1099,192.168.0.2:1099,192.168.0.3:1099,192.168.0.4:1099,192.168.0.5:1099
测试
实现在本地创建好jmeter测试脚本,上传到master机器
启动master,slave每一台的jmeter-server,后台运行程序
cd /usr/local/software/jmeter-5.1.1/bin
nohup ./jmeter-server > nohup.out &
然后在master机器中,如下操作,运行测试脚本:
cd /usr/local/software/jmeter-5.1.1/bin
./jmeter -n -t znjy0805.jmx -R 192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4,192.168.0.5 -l report.jtl
如果返回的信息没有报错,说明成功了,也可以到slave机器中,查看nohup.out日志,如果有类似以下信息,说明成功运行了。
Starting the test on host 192.168.0.5 @ Mon Aug 10 15:16:49 CST 2020 (1597043809154)
Finished the test on host 192.168.0.5 @ Mon Aug 10 15:16:50 CST 2020 (1597043810439)