目录
1、场景
2、原理
3、注意事项
4、slave配置
5、master配置
6、脚本执行
注意:
1、场景
在做性能测试时,单台机器进行压测可能达不到预期结果。主要原因是单台机器压到一定程度会出现瓶颈。也有可能单机网卡跟不上造成结果偏差较大。
例如4C8G的window server机器,使用UI方式,最高压测在1800并发(RT 20ms以内)左右。如果对于XML文件进行解析,更容易吃CPU,并发数会更低。
当单台机器不能支持更大的并发时需要考虑分布式压力测试。
2、原理
原理图如下:
-
Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)
-
master通过GUI界面启动slave机器,将jmeter压测发送给每台启动的slave
-
slave启动jmeter-server,获得脚本后开始执行
-
slave执行完成后将结果传回给master,master收集整合显示
3、注意事项
-
关闭防火墙和杀毒软件,开放端口
$ service firewalld stop
$ service iptables stop
-
2.所有机器最好在同一个子网上
可以使用ping命令进行检查
-
所有机器中最好使用相同版本的jdk和jmeter
-
禁用SSL
如果在启动jmeter-server.bat 时出现如下错误,则SSL没有禁用
禁用方法,jmeter.properties 文件下查找 server.rmi.ssl.disable,取消注释,并将其值修改为 true:server.rmi.ssl.disable=true
4、slave配置
在slave机器中,启动bin目录下的 jmeter-server.bat,如下图:
启动后的ip和port为:192.168.10.131:50043
当然启动时端口也是可以自定义的。
在slave机器的 Jmeter的bin目录下,修改jmeter.properties文件下的server_port和server.rmi.localport两个配置项。比如修改为1000:
server_port=4444
server.rmi.localport=4444
启动后的ip和port为:192.168.10.131:4444
5、master配置
在master机器的 Jmeter的bin目录下,修改jmeter.properties文件下的remote_hosts项,添加IP和port,多台slave的情况下,使用逗号(,)进行分割。
完成配置后启动master机器上的 jmeter。
在Run>>Remote Start下可以查看配置的remote_hosts项。
注意:如果jmeter已经启动,修改jmeter.properties文件后需要重启jmeter配置项才可以生效。
6、脚本执行
新建一个线程组,线程组下添加一个debug sampler调试采样器和一个树结构监听器
将debug sampler重新命名为:${__machineIP()} ,该函数的意思是获取执行机器的ip
通过菜单栏的开始按钮运行脚本
通过 Run>>Remote Start>>192.168.10.131:4444运行脚本
如果要同时在所有的 slave 机器上运行,则通过 Run>>Remote Start All 执行脚本
注意:
在分布式执行中,master 向 slave 发送测试计划时不会将外部文件一起发送。所以在测试中如果使用 csv 等外部文件进行参数化,则需要把参数文件在每台 slave 上拷贝一份,最好都放置在 bin 目录下,因为 Jmeter 会直接从 bin 目录下查找。
作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!
留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=8hUKwUHn9HhVpR8qWhqfT2u-kU-3hpsF&authKey=47BBG1nwHVOka38EQeJevQFCP%2BeVEf%2Bpd8QqotS1%2FqyJdrGAo1A6%2BfS9ef3wJij2&noverify=0&group_code=574737577