背景
因工作需要,最近在学习Jmeter工具,网上有很多比较全面的Jmeter入门指南,我是看老张的博客入门的,博客风格简洁明了,看完受益匪浅,会跟老张好好学习。
(老张博客传送门:https://www.cnblogs.com/imyalost/p/5790268.html)
因为很多基础内容老张的博客都有些,我就不复制粘贴了,就写写我自己在实践中踩过的坑。
一、Jmeter分布式测试的使用背景
一般配置下,jmeter支持并发数大概在300-500,再大的话,可能出现线程排队和阻塞,即非并发情况,甚至造成卡顿、无响应等情况,当需要模拟大量的并发请求,单台jmeter就无法满足,可以通过分布式测试,即将并发请求分配给多台jmeter,来满足这种大规模的并发请求需求。
二、Jmeter分布式测试原理
引用老张的话:
1、分布式测试中,选择一台作为管理机(Contorller),其他的机器作为测试执行的代理机(Agent);
2、执行测试时,由Contorller通过命令行将测试脚本发给Agent,然后Agent执行测试(不需要启动GUI),同时将测试结果发送给Contorller;
3、测试完成,可以在Contorller上的监听器里面看到Agent发来的测试结果,结果为多个Agent测试结果汇总而成;
三、Jmeter分布式测试步骤
1、假设三台电脑IP为192.168.10.1、192.168.10.2、192.168.10.3,将192.168.10.1作为管理机(Contorller),其他两台作为代理机(Agent)
2、给三台电脑配置相同版本的JDK和Jmeter,JDK的安装教程可以自己搜索,Jmeter下载好之后直接解压到想要的路径下,一般是不需要配置JMETER_HOME环境变量的。
3、修改Contorller的Jmeter.properties文件,修改“remote_hosts=127.0.0.1”,如果Contorller仅收集数据,不执行测试计划,则修改为:remote_hosts=10.82.25.28:1099,10.82.25.30:1099
如果Contorller也要执行测试计划,则修改为:remote_hosts=127.0.0.1,10.82.25.28:1099,10.82.25.30:1099
4、修改三台电脑的Jmeter.properties文件,修改“server.rmi.ssl.disable”,将其值改为true,即server.rmi.ssl.disable=true(记得要去掉#号这个语句才能生效)关闭ssl功能
5、在两台Agent机各自启动:jmeter-server.bat,正常启动会在命令窗口显示 “Found ApacheJMeter_core.jar Createred remote object:。。。” 等信息
6、在Contorller机启动:jmeter.bat,打开测试计划(Test Plan),点击“运行(Run)-远程启动(Remote start)”,可以选择启动某个机,也可以启动全部
7、已启动的机会在命令窗口打印出 “Starting the test on host。。。” 等信息
四、配置过程中遇到的问题
1、Agent机启动:jmeter-server.bat,显示“could not find ApacheJMeter_core.ja”
方案:其实后面又显示“Found ApacheJMeter_core.jar” = 。= 所以其实是没有问题的,如果还是想要一开始就显示“Found ApacheJMeter_core.jar”,那么就配置JMETER_HOME:
新建环境变量,比如我的:JMETER_HOME=C:\Users\Administrator\Desktop\apache-jmeter-4.0 (即jmeter根目录),然后编辑Path变量,在后面添加 %JMETER_HOME%\bin 记得与前面的路劲要用分号:隔开
2、Agent机启动:jmeter-server.bat,显示“java.io.FileNotFoundException:rmi_keystore.jks(系统找不到指定文件)”
方案:修改“server.rmi.ssl.disable”,将其值改为true(一开始配置的时候我没有修改这个所以报错了)
3、Controller机远程启动Agent机报错:Conne refused host:
方案:这个出错的可能性很多,可以检查一下防火墙有没有关掉(需要关掉防火墙),检查端口有没有被占用:tasklist | findstr "1099",检查电脑是否存在多网卡。
我这里出错的原因是Controller机没有修改“server.rmi.ssl.disable”为true