目录
一、概要
需要进行高并发压测时,单台机器无法满足(jmeter工具网上查询不能输入太多线程,why?)需要一台master机器控制多台slave机,并将数据收集到master机上
前提:
master和slave在同一局域网内,能互相ping通,出错可以查看连接网络、防火墙是否关闭
安装的jmeter和JDK版本一致
原理:
如下图,机器不够的话可将master也做为slave机执行
二、文件设置
1、master机和slave机的jmeter.properties文件,修改server.rmi.ssl.disable的值为true
server.rmi.ssl.disable=true
2、slave机修改下方端口号,两个一样即可
server_port=1099
server.rmi.localport=1099
#Mac注意端口号被占用的情况,lsof -i:1099 查看是否被占用 kill -9 PIN值 杀死占用进程
3、master机修改下方内容
remote_hosts=192.168.X.XXX:1209
#对应slave机的IP:端口号;多个slave中间用逗号隔开
三、运行
1、启动jmeter-server文件
所有的slave机启动bin目录下的jmeter-server.bat文件(不用打开jmeter界面),打开页面如下:
2、GUI界面运行
运行成功后会在查看报告里看到运行结果,总的请求量为master设置的线程数及循环次数*slave机数量的总和,在server文件中也会有start、finish显示
启动会出现错误:
解决方法:1、先查看slave是否打开server正常,Mac第二次运行时报端口号被占用,需要杀死进程重新打开
2、两台电脑直接IP是否能相互ping通,防火墙是否关闭
3、检查jmeter.properties文件中的设置, 包括master中的IP和端口号是否和slave一致、中英文符号、前边的注释#是否删除、slave有没有固定写死IP值,导致和启动的server文件IP值不一致
3、非GUI运行
jmeter先生成.jmx脚本(脚本中尽量不要有汉字,会报错),每个slave都需要复制一份,启动jmeter-server文件后(最好在脚本目录下启动,所以把脚本放到了bin目录下),master机上在bin目录下打开命令窗口,输入命令语句:
jmeter -n -t D:\Jmeter\apache-jmeter-5.4.1\bin\test.jmx -r -l D:\jmeter压测数据\report\test.jtl -e -o D:\jmeter压测数据\report
说明:
-n:非GUI模式执行JMeter;
-t: 脚本文件(.jmx文件)的路径;
-r: 远程运行
-l: 指定生成测试结果的保存文件(.jtl格式),此文件夹必须为空;
-e:生成测试报告;
-o:用于存放测试报告的路径;
其他:
可以在内网使用网线连接网络,较WiFi稳定
可以修改.jmx脚本的内容,包括地址、循环次数、线程数、响应时间等,均可以设置
Mac下启动jmeter-server文件失败可以输入命令
jmeter-server -Djave.rmi.server.hostname=ip
参考资料
https://www.cnblogs.com/xiaofeng91/p/13203031.html (非GUI运行分布式命令)