1. jmeter分布式压测
1.1 非gui压测

1.1.1 参数
-n:非GUI模式执行Jmeter
-t:执行测试文件所在的位置
-e:测试结束后,生成html测试报告
-o:指定html测试报告存放的位置
-l:表示执行结果存放位置
-R 可以指定部分压力机列表
-r: 启动远程服务(分布式压测用)
1.1.2 压测命令
单机执行 ./jmeter -n -t /root/demo.jmx -l root/demo/res.jtl -e -o /root/demo/res/
1.2 分布式压测
1.2.1 关于分布式
为什么要用分布式:一台压力机并不能模拟足够高的并发,这时就需要多台压力机一起并发,就需要用到分布式
1.2.1.1 分布式
Master:控制机
如果负载机较多,master压力太大,就不需要master了,(每个节点单独运行)使用influxdb+grafana收集数据
Salve:负载机
1.2.1.2 分布式注意事项

1.2.2 分布式配置
需要三台虚拟机
1.2.2.1 slaves配置
先备份配置文件jmeter.properties
修改jmeter.properties文件
server_port可以修改,默认为1099
server.rmi.ssl.disable=false 将false改为true
启动jmeter:./jmeter-server
Jmeter远程启动-报错:java.rmi.RemoteException: Cannot start. MacBook-Pro.local is a loopback address
解决方法:
1、运行jmeter-server时后面添加参数,指定当前IP.
/jmeter-server -Djava.rmi.server.hostname=192.168.142.134
192.168.142.134为当前负载机的IP
验证
linux下检查启动是否成功: ps -ef|grep jemter-server
控制机telnet负载机,看端口通不通:telnet 192.168.177.90 1099
1.2.2.2 master配置
先备份配置文件jmeter.properties
修改jmeter.properties文件
1.remode_hosts=192.168.177.182:1009
这里必须写远程负载机的IP和端口,多个就用逗号分隔
1.remode_hosts=192.168.117.182:1009,192.168.117.183:1009

2.server.rmi.ssl.disable=false,将false改为true
1.2.3 执行
1.脚本传到master上
2.gui(先验证远程启动是否成功),gui验证

linux非gui,master上执行命令:./jmeter -n -t /root/demo/code.jmx -r -l /root/demo/res.jtl -e -o /root/demo/res/

将生成的测试报告传到本地
1.2.4 非gui的不足
- 压测结果不直观
- 混合场景看不到每个业务实时的情况
解决方案:jmeter+influxdb+grafana收集数据
所以分布式测试只需要 ./jmeter -n -t /root/demo/code.jmx -r -l /root/demo/res.jtl