为什么要分布式并发?
JMeter性能实践过程中,一旦进行高并发操作时就会出现以下尴尬场景,JMeter客户端卡死、请求错误或是超时等,导致很难得出准确的性能测试结论。
目前知道的有两个方法可以解决JMeter支撑高并发:
一是将JMeter部署在Linux服务器上,可以支撑的并发量远大于windows客户端,极少出现JMeter客户端卡死的情况;
另外一种方式就是今天要介绍的分布式。
简单来说,分布式就是将一次大的操作分布在多个服务器上,由多个服务器来承担负载压力。分布式并发的原理详见下图:
分布式并发实现步骤
打开JMeter,在运行->远程启动,可以看到只有“127.0.0.1”因此首先要在主压力机上配置远程负载机的IP,配置步骤如下:
1、Master(主压力机)在jmeter.properties中添加remote_hosts。
配置路径:…\apache-jmeter-3.2\bin 路径下的jmeter.properties。
remote_hosts=127.0.0.1 后面增加远程负载机的ip和端口号,如果需要添加多个,用逗号分隔就可以。
例如:remote_hosts=192.168..:1099,192.168..**:1099。
2、Slave(远程负载机)在jmeter.properties中添加server_port:
server_port=1099
server.rmi.localport=1099
备注:这里的端口号可以自定义,只要与主压力机里面配置的一致即可。
3、Slave(远程负载机)启动Jmeter-server,启动成功后如下图所示:
配置完成后重启主压力机,查看远程启动,可查看到配置的远程负载机IP,如下图:
添加一个接口,进行远程启动:
1、添加一个线程组,然后添加一个Sampler里的HTTP请求:
2、以百度为例,添加监听器->查看结果树:
3、点击运行->远程全部启动,运行后查看结果树:
截至目前,分布式并发的配置已经完成,如果需要添加多台远程负载机,重复以上操作即可。
遇到问题
配置过程虽然很简单,但是也不是一帆风顺,在远程启动时遇到了拒绝连接的问题,如下截图显示:
遇到这种情况时,可能存在多种因素,可以参考以下步骤逐一排查:
1、远程负载机的Jmeter-server是否启动成功;
2、远程负载机是否处于联网状态;
3、防火墙是否处于关闭状态;
4.主压力机和远程负载机的JMeter版本是否一致。
在实战过程中也出现了这个问题,经过一番排查终于找到问题原因,是因为远程负载机上启动JMeter时,用jmeter.bat进行的启动,而不是jmeter-server.bat。
希望大家不要犯这样低级的错误。
行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!