1.使用原因:
如果并发数比较大的情况下,例如项目需要10000并发,单台电脑和CPU可能无法支持,这时可以使用jmeter的分布式。
2.分布式原理:
- 选择一台控制机和其他机器作为代理机。
- 执行时,控制机会把脚本发送到每台代理机,代理机然后开始执行脚本,代理机执行不需要启动jmeter的页面
- 执行结束后,代理机会把结果回传给控制机,控制机就会手机代理机的信息并汇总。
3.代理机agent
1.agent代理机上需要安装jmeter 2.修改服务端口 tips:如果在同一台机器上需要修改端口,多台机器不可修改 2.1 打开bin目录下的jmeter.properites 将server_port改为sever_port=3001 3.将RMI SSL设置为禁用 3.1打开bin目录下的jmeter.properites文件,修改为server.rmi.ssl.disable=true 4.运行agent代理机上的jmeter.sever.bat文件启动jmeter4.控制机
1.修改jmeterbin目录下的jmeter.properties文件,修改 remote_hosts=127.0.0.1:3001,127.0.0.1:3002 工作中使用真实ip即可 2.同上将RMI ssl设置为禁用 .修改jmeterbin目录下的jmeter.properties文件 .server.rmi.ssl.disable=true 3.启动jmeter 4.运行菜单栏----运行---远程启动---远程全部启动例子:
示例
1.在桌面新建----文件取名为分布式测试---在里面新建两个文件夹---取名为执行机---控制机
2.打开执行机文件夹---新建执行机A---执行机B
3.找到自己的jmeter安装包文件---复制三份分别到控制机和两个执行机中
4.1打开执行机A的bin目录下的jmeter.properties文件---修改erver_port改为sever_port=3001
4.2打开bin目录下的jmeter.properites文件,修改为server.rmi.ssl.disable=true
5.执行机B
5.1打开执行机A的bin目录下的jmeter.properties文件---修改erver_port改为sever_port=3002
5.2.4.2打开bin目录下的jmeter.properites文件,修改为server.rmi.ssl.disable=true(记得保存)
6.控制机的配置
打开控制机机文件下的bin目录的jmeter.properites文件,修改为remote_hosts=127.0.0.1:3001,127.0.0.1:3002(此处为两个代理机的端口号,注意:中间是英文逗号)
6.2打开bin目录下的jmeter.properites文件,修改为server.rmi.ssl.disable=true(记得保存)
7.准备工作完毕,分别打开控制机A和b的bin目录下的jmeter-server.bat(以管理员身份打开)
8.控制机找到文件---控制机---bin目录下的jmeter.bat,双击打开即可
9.小案例执行:以百度网页为例
https://www.baidu.com9.1 新建测试计划----右键---添加线程---线程组---线程数量设置为300,RAMP-UP设置为30秒
9.2小知识:
1.Ramp-Up 时间表示 JMeter 启动所有线程(虚拟用户)所花费的总时长。
线程数 = 300
Ramp-Up = 30 秒 → 平均每秒启动 10 个线程
- 如果 Ramp-Up = 1 秒 → 平均每秒启动 300 个线程(瞬间全压上去)
2.为什么有时候需要较大的 Ramp-Up(比如 30 秒)?
2.1. 模拟真实用户的到达模式
真实用户在访问系统时是逐渐增多的(比如早上 9 点开始上班,10 点达到高峰)。
用 30 秒甚至几分钟的 Ramp-Up,可以让负载平缓上升,更接近现实场景。
2.2. 避免“瞬时冲击”导致假性瓶颈
如果把 300 个线程在 1 秒内全部启动:
服务器瞬间收到大量连接请求,可能因为 TCP 连接队列溢出、线程池瞬时爆满而拒绝服务或响应时间飙升。
这种“瞬间冲击”往往掩盖了系统在平稳负载下的真实性能(比如你只是想测 300 并发下的吞吐量,但瞬间启动可能导致提前崩溃,测出来的结果偏低)。
用一个较长的 Ramp-Up(比如 30 秒)可以让系统有时间分配资源(建立连接、初始化线程池),从而测得稳定并发下的真实能力。
9.3右键线程组----添加---取样器---http请求
9.4 右键线程组-----添加-----监听器----聚合报告
9.5 执行菜单栏 ---- 运行----运行所有
9.6运行成功