jmeter 分布式压测

什么是分布式测试?

分布式测试是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。

为什么要使用分布式压力测试?

普通压力测试一般是采用单台机器对目标服务器产生的压力,因为受限于CPU、内存、网络、IO等因素的影响,通常只能模拟几十到几百用户的并发访问。分布式压测是利用多台机器同时向目标服务器产生压力,可以模拟几万到上亿级别用户的并发访问。

Jmeter分布式压测原理

相关专业术语

  • 控制器节点(Controller Node),又叫Master:运行 JMeter GUI 的系统,它控制测试。
  • 工作节点(Worker Nodes),又叫Slave:运行jmeter-server的系统,它从 GUI 接收命令并将请求发送到目标系统。
  • 目标(Target):计划进行测试的网络服务器。

原理

控制器节点启动时将压测脚本分发到各个工作节点上,然后通过远程启动各个工作节点,共同向目标服务器发送请求(产生压力)。测试结束以后,各个工作节点主动将压测数据回传给控制器节点,由控制器节点统一汇总数据,并输出测试报告。

注意两点:

  1. master和各个slave机器必须使用同一局域网,尽可能减少网络带宽的影响。
  2. 使用非GUI模式,避免不必要的cpu、内存损耗。

Jmeter分布式压测前的准备工作

  1. 确保master和各个slave上使用相同版本的JMeter 和 Java。混合版本将无法正常工作。
  2. master和各个slave的防火墙已关闭或打开了正确的端口,且端口未被占用。
  3. master和各个slave上安装的杀毒软件已关闭。
  4. master和各个slave在同一个子网内,尽量减少网络带宽的影响,减少时延问题。如果是多网卡环境需要保证启动的网卡都在同一个网段。
  5. 确保 JMeter 可以访问服务器,可以使用ping命令查看。
  6. 已经为 RMI 设置了 SSL或禁用了它。
  7. master和各个slave上安装Jmeter全部启动成功。
  8. 如果压测脚本有依赖的测试数据,测试数据文件需要复制一份到Worker Nodes上,且文件路径必须和Controller Node中一致。
  9. 如果使用云服务器进行压测,一定要使用内网IP,不能使用公网IP,先使用ping命令检查网络是否通畅。
  10. 压力测试瓶颈大都在带宽上面,需要保证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

  1. 远程启动命令行模式

所有分布式节点
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 指定测试报告的存放位置

常见报错

  1. 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

posted @   来了发发发  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示