1. 为什么使用Jmter分布式测试
1.1 需求
对学院接口(查询学院-所有)进行1000用户并发访问,测试服务器处理批量请求能力
1.2 现状
我们单台电脑由于配置(CPU、内存)问题,最模拟500用户时,就出现卡死现象
按照一般的压力机配置,jmeter的GUI模式下(Windows),最多支持300左右的模拟请求线程,再大的话,容易造成卡顿、无响应等情况,这是限于jmeter其本身的机制和硬件配置。
有时候为了尽量模拟业务场景,需要模拟大量的并发请求,这个时候单台压力机就显得有心无力。针对这个情况,jmeter的解决方案是支持分布式压测,即将大量的模拟并发分配给多台压力机,来满足这种大流量的并发请求场景。
2. 分布式测试
2.1 分布式测试原理
1. 一台电脑作为控制机(Controller),其它电脑做为执行机(Agent);
2. 执行时,控制机会把脚本发送到每台执行机上,执行机拿到脚本后就开始执行
3. 执行机执行时不需要启动Jmeter界面,可以理解它是通过命令行模式执行的
4. 执行完成后,执行机会把结果回传给控制机,控制机会收集所有执行机的信息并汇总
2.2 执行方案分析
1. 1台电脑(控制机)分发执行任务
2. 2台电脑(执行机)执行任务
3. 在执行机上启动监听服务程序
4. 在控制机上启动运行
5. 测试计划->聚合报告
2.3 技术难点分析
1. 执行机-jmeter.properties设置
2. 控制机jmeter.properties设置
3. 执行机启动分布式监听服务程序
3. 2台执行机,用户数如何设置
2.4 执行机Jmeter.properties配置图
1. 分别打开执行机下jmeter安装文件下的bin目录:jmeter.properties, 找到server_port
2. server_Port=1099. 1099为执行机自定义端口号
3. 注意:
- 要取消注释符号 #
- 自定义的端口号,要选择未被占用的端口号
2.5 控制机jmeter.properties配置图
- 打开控制机下jmeter安装文件下的bin目录:jmeter.properties,找搭配remote_hosts
- remote_hosts=127.0.0.1:1099,127.0.0.1:1100
- 注意事项:
- 多个执行机的ip间要用全英文的半角逗号隔开
2.6 执行机启动分布式监听效果图
1. 运行bin目录下jmeter-server.bat
2. 运行后勿关闭黑色窗口
2.7 控制机-线程数设置
注意:
需求1000用户,两台执行机同时接受控制机脚本去执行然后反馈给控制机,所以线程数设置500
2.8 控制机-运行效果图
1. 菜单-运行->选择全部启动
2. 快捷键->Ctrl+Shift+R
2.9 提示
1. 修改完端口要重启Jmeter.bat
2. 控制机和执行机分开(这里采用控制机和代理机在1台机器上)
1). 由于控制机需要发送信息给执行机并且会接受执行机回传的测试数据所以控制机自身会有消耗
3. 参数文件:如果使用csv进行参数化,那么需要把参数文件在每台执行机上拷一份且路径需要设置成一样的;
4. 每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题;
5. 执行机上Jmeter也许需要配置JDK环境变量;