jmeter 分布式压测
什么是分布式测试?
分布式测试是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。
为什么要使用分布式压力测试?
普通压力测试一般是采用单台机器对目标服务器产生的压力,因为受限于CPU、内存、网络、IO等因素的影响,通常只能模拟几十到几百用户的并发访问。分布式压测是利用多台机器同时向目标服务器产生压力,可以模拟几万到上亿级别用户的并发访问。
Jmeter分布式压测原理
相关专业术语
- 控制器节点(Controller Node),又叫Master:运行 JMeter GUI 的系统,它控制测试。
- 工作节点(Worker Nodes),又叫Slave:运行jmeter-server的系统,它从 GUI 接收命令并将请求发送到目标系统。
- 目标(Target):计划进行测试的网络服务器。
原理
控制器节点启动时将压测脚本分发到各个工作节点上,然后通过远程启动各个工作节点,共同向目标服务器发送请求(产生压力)。测试结束以后,各个工作节点主动将压测数据回传给控制器节点,由控制器节点统一汇总数据,并输出测试报告。
注意两点:
- master和各个slave机器必须使用同一局域网,尽可能减少网络带宽的影响。
- 使用非GUI模式,避免不必要的cpu、内存损耗。
Jmeter分布式压测前的准备工作
- 确保master和各个slave上使用相同版本的JMeter 和 Java。混合版本将无法正常工作。
- master和各个slave的防火墙已关闭或打开了正确的端口,且端口未被占用。
- master和各个slave上安装的杀毒软件已关闭。
- master和各个slave在同一个子网内,尽量减少网络带宽的影响,减少时延问题。如果是多网卡环境需要保证启动的网卡都在同一个网段。
- 确保 JMeter 可以访问服务器,可以使用ping命令查看。
- 已经为 RMI 设置了 SSL或禁用了它。
- master和各个slave上安装Jmeter全部启动成功。
- 如果压测脚本有依赖的测试数据,测试数据文件需要复制一份到Worker Nodes上,且文件路径必须和Controller Node中一致。
- 如果使用云服务器进行压测,一定要使用内网IP,不能使用公网IP,先使用ping命令检查网络是否通畅。
- 压力测试瓶颈大都在带宽上面,需要保证slave的带宽要比Target的带宽高,不然压力上不去。
配置
1.配置master机子
修改jmeter.properties
添加远程slave机子及端口
remote_hosts=127.0.0.1,172.22.214.236:1099
设置禁用server.rmi.ssl.disable
server.rmi.ssl.disable=true
将本机也作为压力机 启动jmeter-server.bat
2.设置slave机子的端口号
修改jmeter.properties
设置slave机子的端口号1099
server_port=1099
设置禁用server.rmi.ssl.disable
server.rmi.ssl.disable=true
执行jmeter-server.bat
- 远程启动命令行模式
所有分布式节点
JMeter -n -t [JMX脚本路径] -r -l 测试输出文件路径 -j 日志路径
指定ip分布式
JMeter -n -t [JMX脚本路径] -R ip:端口 -l 测试输出文件路径 -j 日志路径
参数 含义
-n 表示non gui mode 非图形化模式
-t testplan 后跟要运行的jmeter脚本路径和脚本名称
-l 指定生成测试结果的保存文件, jtl 文件格式
-r 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r
-R 指定某些机器
-H 设置Jmeter使用的代理主机
-P 设置Jmeter使用的代理主机的端口
-e 测试结束后,生成测试报告
-o 指定测试报告的存放位置
常见报错
- Server failed to start: java.rmi.RemoteException: Cannot start. julia-PC is a loopback address.
解决方法1. 启动的时候加一个参数-Djava.rmi.server.hostname=10.xx.xx.xx(当前虚拟机IP)
jmeter-server -Djava.rmi.server.hostname=172.22.213.236
解决方法2. vi /etc/hosts 将本机地址127.0.0.1换成ip
本文来自博客园,作者:来了发发发,转载请注明原文链接:https://www.cnblogs.com/julia888/p/17489689.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本