Jmeter 是Java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误。
其实,Jmeter的远程启动可以帮助我们解决此问题,通过单个 jmeter 客户端控制多个远程的jmeter服务器,使它们同步的对服务器进行压力测试。
【环境】
这里,把控制多个机器执行的机器称作Controller,把真正向服务器施加压力的机器成为Agent。
Controller机器:Win7 + Jmeter3.2 + jdk1.8 ,ip = *.*.*.48
Agent机器:Jmeter3.2 + jdk1.8 ,ip = *.*.*.95
注意:
①Controller与Agent的Jmeter版本要一致,否则会出现远程调用失败(JRMP);
环境变量中一定也要配置成一样的要运行的jmeter版本。
【配置】
Controller机器:Jmeter安装路径的bin下,编辑jmeter.properties文件,追加如下内容:
# Jmeter远程启动:Controller机配置,格式为:“IP1:port1,IP2:port2”,如下只配置了一台Agent;
remote_hosts=*.*.*.95:1099,localhost:1099
Agent机器:Jmeter安装路径的bin下,编辑jmeter.properties文件,追加如下内容:
# Jmeter远程启动:Agent机配置
server_port=1099
server.rmi.localport=1099
备注:若出现端口被占用,Windows上在dos框输入“netstat -ano”,查看端口使用情况,这里推荐使用新的端口;
【脚本文件】
①需要在每台Agent上复制一份脚本文件及相关的文件,且路径要一致;否则会出现在测试一闪而过,“查看结果树”中无任何请求;
②参数文件:Controller机器的参数文件配置元件CSV Data Set Config中,FileName要给绝对路径;Agent机器相对路径绝对路径均可;
【启动】
①Controller机器:“运行”→“远程启动”,可以看到我们配置的Agent机器的IP及端口,如下所示,选择这台机器;
②Agent机器:
Jmeter安装在Windows平台上:cmd到dos中,进入Jmeter安装路径的bin目录下,执行“jmeter-server”
Jmeter安装在Linux平台上:进入Jmeter安装路径的bin目录下,执行“./jmeter-server”;
否则会报如下错误:“Java.net.ConnectionException: Connection refused:connect”
③Controller机器:点击“启动”按钮即可执行,此时可在Agent的机器上看到执行的情况(Windows);
至此,远程启动执行完毕。