最近因为项目需要,研究了性能测试的相关内容,并且最终选用了jmeter这一轻量级开源工具。因为一直使用jmeter的GUI模式进行脚本设计,到测试执行阶段工具本身对资源的过量消耗给性能测试带来了瓶颈,一般线程加到100左右就会出现工具本身无法支撑的问题,广泛了解解决办法后,发现分布式部署测试机仍是首选方案。
 
关于如何配置jmeter分布式部署测试机很多博客上已经描述得很详细了,这里就不再赘述,可以参考虫师的博客:
 
现在单纯记录一下在部署分布式测试机的过程中踩过的那些坑。
 
五星坑:远程启动测试,响应数据为空。
controller运行jmeter脚本后,GUI无性能数据返回。
 
 
 
 
agent的jmeter server显示连接后立即结束。看似执行实则响应数据为空。
 
 
 
出现以上情况原因及解决办法:
 
1、jmeter脚本和测试数据(如果有的话)主机和从机两边都要存放。且controller中jmeter脚本、测试数据的存放路径和agent中jmeter脚本、测试数据的存放路径一致。
 2、在原因1的基础上,controller的测试数据地址要用绝对路径,agent的测试数据绝对路径或相对路径均可。
 
 
解决办法:文件地址修改统一后,运行成功。(run是自己打的log)
(注意:也因为路径一致的原因,目前我也没办法把windows和mac电脑混合配置成分布式测试机,这里是清一色的windows系统)
 
 
四星坑:agent的VM或共享盘符会干扰远程连接
agent如果安装有vm或将某个盘设置了共享权限的时候,controller在配置该agent时除IP地址外,虚拟机ip或者共享盘ip也会出现在远程连接待选列表中,连接时报错。
 
 
 
解决办法:关闭或卸载虚拟机,撤销盘符共享
 
三星坑:jmeter运行时报内存溢出outfmenmory错误。
 
该问题博客上已经有很多同行给出了解决办法,比如修改jmeter.bat的预设内存大小。参考疯狂的tiger的博客吧:
 
 
二星坑:由于防火墙未关闭或测试controller和agent不在同一个网段会影响远程连接。
 
 
 
解决办法:关闭agent的防火墙。contrller和agent在同一网段,比如我这里就选择了同一个WIFI,配置同一个DNS等方法解决。
 
 
至此,jmeter分布式测试算是勉强进入正确轨道,将踩过的坑做个备忘。感谢团队的努力,也希望能和大家一起学习、分享、进步。