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命令进行检查
3.所有机器中最好使用相同版本的jdk和jmeter
4.禁用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目录下查找。
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。
发表评论