jmeter分布式压测

发布时间 2023-07-08 17:38:23作者: 测试开发孵化园

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