分布式测试环境搭建

一、 分布式测试的特性:

1. 保存测试采样数据到本地机器

2. 通过单台机器管理多个jmeter负载机

3. 不用将测试计划复制到每台机器,负载机会自动执行控制机中的脚本

4. 每台jmeter负载机都执行相同的测试计划,jmeter不会再执行期间做负载均衡,每台服务器都会完整的运行测试计划

 

二、 分布式执行原理

1. jmeter分布式测试,选择一台机器作为调度机,其它机器作为执行机

2. 执行时,调度机会把脚本发送到每台执行机上,执行机拿到脚本后就开始执行,执行机执行时不需要启动GUI

3. 执行完成后,执行机会把结果回传到调度机,调度机会收集所有信息并汇总

 

三、 搭建分布式压测环境

1. 在负载机的jmeter.properties文件中修改以下参数配置:

server_port=1099;

server.rmi.localport=1099

分布式测试环境搭建

2. 禁用负载机上所有不需要的虚拟网卡:

2.1 打开网络和共享中心

2.2 点击更改适配器设置

2.3 仅保留一个本地连接,其余全部禁用

分布式测试环境搭建

2.4 打开负载机的jmeter.server.bat文件,查看弹窗中的IP地址,确保负载机与控制机在同一网关下(测试过程中保持窗口打开不关闭)

分布式测试环境搭建

2.5 在DOS窗口查看负载机的本机IP地址,确认与.jmeter.server中的IP是否一致

3. 关闭负载机的防火墙

4. 在控制机的jmeter.properties文件中修改配置信息:remote_hosts=负载机IP地址(多个负载机时用逗号连接)

分布式测试环境搭建

5. 在控制机中设置好准备测试的脚本,选择运行—远程全部启动

6. 负载机会运行控制机上的脚本,并将结果回传给控制机

7. 验证:启动后如果运行正常,在控制机上可以看到远程负载机的执行结果。

 

 

三、分布式压测注意事项:

1、保持Contorller和Agent机器的JDK、jmeter以及插件等配置版本一致;

2、如果测试数据有用到CSV或者其他方式进行参数化,需要将data pools在每台Agent上复制一份,且读取路径必须保持一致;

3、确保Contorller和Agent机器在同一个子网里面;

4、检查防火墙是否被关闭,端口是否被占用(防火墙会影响脚本执行和测试结构收集,端口占用会导致Agent机报错);

5、分布式测试中,通过远程启动代理服务器,默认查看结果树中的响应数据为空,只有错误信息会被报回;

6、如果并发较高,建议将Contorller机设置为只启动测试脚本和收集汇总测试结果,在配置文件里去掉Contorller机的IP;

7、分布式测试中,如果1S启动100个模拟请求,有5个Agent机,那么需要将脚本的线程数设置为20,否则模拟请求数会变成500,和预期结果相差太大。