Jmeter分布式搭建(windows系统下)
简介:配置分布式前,得先知道分别有master控制机和slave执行机,
a、maste控制机:作为所有执行机的控制者,一般不参与实际脚本运行,只做控制运行作用
b、slave执行机:实际脚本运行,消耗资源
1、master控制机器生成rmi_keystore.jks(供实现分布式使用)
(1)、进入bin目录,windows环境启动create-rmi-keystore.bat;linux环境则启动reate-rmi-keystore.sh
(2)、启动后参考截图一步步操作(以下a、b、c为特别注意点)
a、到截图中的步骤b时,保证输入的为大写Y(输入小写y生成失败)
b、到步骤c时,无需输入秘钥,直接【Enter】键回车即可
c、最后检查,bin目录下生成rmi_keystore.jks文件
然后打开配置文件 /bin/jmeter.properties 找到并取消以下这段配置的注释 server.rmi.ssl.disable=false ,false改成true。
2、slave执行机配置修改:
前提:先将maste生成的rmi_keystore.jks拷贝到slave执行机bin目录下
(1)、修改 bin/jmeter.properties:
修改:remote_hosts=172.X.X.X:1888 (端口号自己起,默认用1099,这里修改成1888)
还是修改 bin/jmeter.properties:
修改:server.rmi.localport=1888 (端口号自己起,这里修改为1888,默认用1099,该端口号是Jmeter-server运行的端口,)
(2)、修改 bin/jmeter.bat:
增加(33行):set rmi_host=-Djava.rmi.server.hostname=1.X.X.X(同网段可不增加,尝试过成功)
修改(107行)(二选一):第一种方法:set ARGS=%DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS%(尝试过成功)
第二种方法:set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%
(3)然后打开配置文件 /bin/jmeter.properties 找到并取消这段配置的注释 server.rmi.ssl.disable=false ,false改成true。
(4)打开system.properties,搜索rmi
a、结果为无,则搜索sun,在其下方添加java.rmi.server.hostname=ip(执行机ip,如172.16.124.103)
b、有结果,则检查里面对应的ip是否已修改为执行机本机ip
(5)打开jmeter.bat 检查33行处的ip是否为执行机本机ip
3、master控制机配置修改:
(1)、修改bin/jmeter.properties:
修改:remote_hosts=172.16.124.91:1099,172.X.X.X:1888,172.X.X.X:2888(多个slave则用分号(,)分隔)
(其中172.16.124.91表示master机器本身,为了独立开master,可以将其去掉,这样就不会在master上执行测试)
修改:server_port=1099,1888,2888
修改:server.rmi.localport=1099
修改:server.rmi.ssl.disable=true
(2)、修改system.properties:(某教程说要配置、导致遇到的坑)
尾行增加:java.rmi.server.hostname=172.X.X.X(slave执行机ip,与set rmi_host一致)
(其实这个不需要加,如果加了会导致运行后无法自动结束、也没有结果生成)
(该坑着实坑了我一天)
4、配置完成后,关闭master、slave的防火窗,互相ping通(不关闭ping不通,导致无法执行)
a、保证防火墙关闭
b、maste、slave处于同一局域网
5、slave执行机开启Jmeter-server.bat(而不是开始Jmeter.bat)
6、a、启动slave执行机服务器
方法一:双击打开 jmeter-server.bat
方法二:管理员执行脚本:JMETER_HOME/bin/jmeter-server.bat 或 JMETER_HOME/bin/jmeter-server:
slave控制台信息如下,表示成功:
b、启动master控制机
方法一:master控制机选择其中一个远程启动 --> 172.16.124.103:1888(单个)
方法二:命令启动 --- : .\jmeter.bat -n -t testplan/login.jmx -r -l testresult/login_result.jtl -e -o testresult/result
(如果运行后响应数据为空,则需要修改master控制机)
1、打开主控机的jmeter--bin目录下的jmeter.properties文件
2、查找到mode=Standard 项
3、 将其前边的注释去掉,然后保存重启jmeter,再次运行远程机器,就可以看到数据了
注意事项:
1、master、slave要在同一网段
2、关闭防火窗,互相ping通
其它说明:
1、调度机即控制机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为master。
2、参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
3、每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。
扩展自定义端口:
上面其实已经实现了Jmeter的分布式测试,这部分主要介绍下如何自定义slave端口:
1、slave:在slave机的Jmeter的bin目录下,找到jmeter.properties文件,修改如下两个配置项,比如我这里修改为1888:
remote_hosts=xxx.xxx.xx.xx:1888
server_port=1888
server.rmi.localport=1888
2、启动slave机上的jmeter-server.bat,如下图,端口已经修改为:1888
3、master:修改master机器的jmeter.properties文件:
remote_hosts=10.13.223.202:1000,10.13.225.12:1888
server_port=1099,1888(尝试过如果不加1888,启动失败)
4、重启jmeter.bat,如下图,端口已经变了: