分布式场景
- 单压力机的CPU、内存、网络带宽等性能瓶颈,导致达不到目标QPS
压测准备
- master节点:jmeter工具包、参数化文件、压测脚本。参数化文件一般放在apache-jmeter-*/bin/目录下
- slave节点:jmeter工具包、参数化文件。压测时master会将脚本同步到slave节点
压测运行
- 启动slave节点
使用/bin/jmeter-server
命令启动slave节点作为压力服务机,供master节点调用
- 出现报错:
An error occurred: Cannot start. WH-C02XM7GSJHCD.local is a loopback address,原因是默认使用的是回环地址
解决方法1: bin/jmeter-server文件30行修改为:RMI_HOST_DEF=-Djava.rmi.server.hostname=本机ip
解决方法2: 在命令后加上:-Djava.rmi.server.hostname=本机ip
- 出现报错:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
解决方法1: bin/jmeter.properties文件345行修改为:server.rmi.ssl.disable=true
解决方法2: 在命令后加上:-Dserver.rmi.ssl.disable=true
- 设置master机器要远程连接的端口(非必须):
-Dserver_port=1099
, 即 remote_hosts=xxxx:1099- 设置slave server启动显示的端口(非必须):
-Dserver.rmi.localport=50000
在不修改jmeter工具包配置文件的情况下,最终命令为
./jmeter-server -Djava.rmi.server.hostname=localhost -Dserver.rmi.localport=50000 -Dserver_port=1099 -Dserver.rmi.ssl.disable=true
>Using local port: 50000
>Created remote object: UnicastServerRef2 [liveRef: [endpoint:[10.12.224.18:50000](local),objID:[-32da1250:1845f60665b:-7fff, 3563942364378927893]]]
- 启动master节点
vim apache-jmeter-*/bin/jmeter.properties文件
remote_hosts=ip1:1099,ip2:port (268行,master节点作压测机时也需配置ip,不能使用127.0.0.1)
# 运行:-r启动所有slave,-R指定ip启动指定slave
jmeter -n -t *.jmx -l test1.jtl -r
# 根据测试结果生成html测试报告
mkdir report1 && jmeter -g test1.jtl -e -o report1