分布式测试环境搭建
一、 分布式测试的特性:
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,和预期结果相差太大。