JMeter分布式压测
一、安装
5台机器,1主4从
A1~5压测机器
java路径:/usr/local/java/jdk1.8.0_201
jmeter路径:/usr/local/jmeter/apache-jmeter-4.0
(java与jmeter的版本都是一致的)
A1机器作为Maser机器,只负责调度(也可以作为调度+执行)
A2~5作为Slave机器,负责执行测试
(保持5台机器在同一网段内,处于同一时区内;并同时开启1099、2019端口)
压测脚本在A1机器的/api_test目录下
并给予权限
sudo chmod 777 /api_test
A1(主机)
sudo vim /usr/local/jmeter/apache-jmeter-4.0/bin/jmeter.properties
第244行改为
remote_hosts=172.16.1.19:1099,172.16.1.196:1099,172.16.1.150:1099,172.16.1.156:1099
(4台从机的内网IP与端口号)
第267行取消注释并修改为
client.rmi.localport=2019
(主机端口,默认0指的是随便指定)
第320行取消注释并修改为
server.rmi.ssl.disable=true
(忽略SSL报错)
A2~5(从机)
sudo vim /usr/local/jmeter/apache-jmeter-4.0/bin/jmeter.properties
第248行取消注释
server_port=1099
(从机jmeter-server端口)
第286行取消注释并改为
server.rmi.localport=1099
(从机jmeter-server端口)
第320行取消注释并修改为
server.rmi.ssl.disable=true
(忽略SSL报错)
编号 | 外网IP | 内网IP | 启动命令 |
A1 | 53.342.755.15 | 172.16.1.15 | |
A2 | 56.423.532.24 | 172.16.1.19 | ./jmeter-server -Djava.rmi.server.hostname=172.16.1.19 |
A3 | 53.232.355.76 | 172.16.1.196 | ./jmeter-server -Djava.rmi.server.hostname=172.16.1.196 |
A4 | 57.244.868.25 | 172.16.1.150 | ./jmeter-server -Djava.rmi.server.hostname=172.16.1.150 |
A5 | 58.425.656.16 | 172.16.1.156 | ./jmeter-server -Djava.rmi.server.hostname=172.16.1.156 |
机器~外网~内网
A1~53.342.755.15~172.16.1.15(主机)
A2~56.423.532.24~172.16.1.19 (./jmeter-server -Djava.rmi.server.hostname=172.16.1.19)
A3~53.232.355.76~172.16.1.196 (./jmeter-server -Djava.rmi.server.hostname=172.16.1.196)
A4~57.244.868.25~172.16.1.150 (./jmeter-server -Djava.rmi.server.hostname=172.16.1.150)
A5~58.425.656.16~172.16.1.156 (./jmeter-server -Djava.rmi.server.hostname=172.16.1.156)
二、启动:
启动时
先启动从机
分别进入A2~5四台从机
cd /usr/local/jmeter/apache-jmeter-4.0/bin
/jmeter-server -Djava.rmi.server.hostname=从机内网IP
(也可以使用守护进程,但是不建议使用守护进程,因为不是每时每刻都需要压测)
再到A1主机
jmeter -n -t ./baidu.jmx -l ./JMeterReport.jtl -r
(baidu.jmx是示例脚本,-r表示直接启动全部从机)
jmeter -n -t ./baidu.jmx -l ./JMeterReport.jtl -R 172.16.1.19,172.16.1.196,172.16.1.150,172.16.1.156
(也可以-R大写分别指定从机IP,以英文逗号分隔)
三、命令行补充说明:
jmeter -n -t ./baidu.jmx -l ./JMeterReport.jtl -r -e -o ./JMeterReport // 生成JMeter Dashboard Report图形化报告 jmeter -g ./baidu.jtl -o ./JMeterReport // 根据已有的jtl文件生成生成JMeter Dashboard Report图形化报告 jmeter -n -t jmx脚本 -l jtl文件 -e -o 测试报告目录 // 不传递参数的命令 jmeter -J线程数变量名=值1 -J持续时间变量名=值2 -J启动延迟时间变量名=值3 -n -t jmx脚本 -l jtl文件 -e -o 测试报告目录 // 传递参数的命令