背景
因业务需要简单的单机压测已经满足不了我们的需求,故而搭建一套集群压测环境。
单机VS集群
单机压测:就是一个人,我们暂且叫他【张三】,各种干活,干的满头大汗气喘吁吁,能力已经到达极限,结果显而易见,不太理想;
张三累啊,感到了生活的不容易,他矜矜业业干活,日复一日,年复一年,终于攒够了第一桶金,完成了原始积累~
有了钱的张三,一咬牙一狠心一跺脚,顾了两个小工,让小工来干活,自己来收集结果做决策。
集群压测:一主多从,意思就是一个主人和N个仆人,主人不干活就等着收集结果,一群仆人忙前忙后的打杂搬砖。【一台做master,两台做agent】
配置
- 为了直观的看出修改配置文件的路径,这里用mac电脑来演示一下效果,找到jmeter.properties文件修改,如下图
apache-jmeter-5.4.1/bin目录下的jmeter.properties文件修改【mac和其他端好像不一样】
master机配置【张三配置】
- remote_hosts=agent机器的IP:端口
如remote_hosts=10.237.0.108:1099,10.237.0.110:1099
- server.rmi.ssl.disable=true
true字母一定拼写正确,写成ture就坑了,一定注意!!!
slave 机配置【仆人配置】
- remote_hosts=master机器IP
- server.rmi.ssl.disable=true
启动
将写好的jmx文件同时放到master/slave机器上
- 命令行启动
jmeter -n -t /Users/murphy/Desktop/test.jmx -r -l /Users/murphy/Desktop/jtl/test.jtl -e -o /Users/murphy/Desktop/result
- 参数解析
#执行默认服务器列表 -r #执行指定服务器列表 -R 10.237.12.21:1099,10.237.12.22:1099
踩坑
java.rmi.ServerException
- 问题所在:server.rmi.ssl.disable=true中,「true写成了ture」
- 解决方法:jmeter.properties文件中设置server.rmi.ssl.disable=true
slave机器拒绝连接
- 问题所在:端口被占用;slave机jmeter服务未启动
- 解决方案:
#查看1099的端口是否开启 netstat -ntpl #启动jmeter服务【错误输出重定向正确输出】 nohup sh jmeter-server >> jmeter.logfile 2>&1 &
Server failed to start...is a loopback address
WARNING: package sun.awt.X11 not in java.desktop Created remote object: UnicastServerRef2 [liveRef: [endpoint:[127.0.0.1:50519](local),objID:[-71690af6:17b29b6ede6:-7fff, 7852788065207753795]]] Server failed to start: java.rmi.RemoteException: Cannot start. murphydeMac-mini.local is a loopback address. An error occurred: Cannot start. murphydeMac-mini.local is a loopback address.
- 问题所在:salve机器remote_hosts设置未生效
- 解决方案:
#启动jmeter服务指定master机ip地址 nohup sh jmeter-server -Djava.rmi.server.hostname=10.237.0.107>> jmeter.logfile 2>&1 &