jmeter分布式测试

需求

  • 单台负载机存在瓶颈:负载机性能不足(例如内存CPU不足)
  • 单台负载机存在瓶颈:网络原因(例如端口不足)
  • 业务场景需要

模型

  • slave启动后显示的端口号是回传测试结果的端口号
  • 接收Master指令和脚本的端口号默认为1099
  • 查看1099端口是否被占用netstat -ano | findstr "1099" tasklist | findstr "1099")
  • 脚本中设置的并发如果是100,那么每个slave都是100并发,总并发是所有slave之和。因此jmeter无法个性化配置不同的slave压力,这点不如LR

这里写图片描述

特点

  • 真实的性能测试,不存在网络瓶颈问题
  • GUI仅限windows平台,命令行可在linux与windows
  • 测试结果保存在本地一台master上
  • 使用这台master管理多个Jmeter Engines,也叫做slave
  • 测试脚本会被master自动发送到作为负载生成器的slave,但数据文件不会

注意

  • master也可以同时作slave,但要注意负载适量
  • 所有负载生成器slave上安装相同的jmeter与jdk
  • 防火墙和杀毒软件要关闭或过滤
  • 确保所有master与slave在同一个网段或子网,没有网络延迟
  • master与slave可以是windows或linux,不必全部是同一个OS,但要开放防火墙,否则connect fail
  • 脚本使用的数据文件(比如CSV)需要单独传到每个slave,并且脚本中指定的文件路径要能够在每个slave找到该文件,常使用相对路径,较方便

步骤

windowsGUI模式

  1. 在负载生成器slave中启动jmeter-server.bat(如果master访问报错Engine is busy请右键管理员启动)
  2. master节点jmeter安装目录/bin下,编辑jmeter.properties文件。remote_hosts=根据实际情况添加slave的IP地址与端口号,逗号隔开,如图。
    这里写图片描述
    在这里插入图片描述
  3. 在master端,bin目录下双击jmeter.bat,启动jmeter
  4. 远程运行,如图可以使用debugSampler进行调试
    这里写图片描述

命令行模式

  1. 此模式下无论windows还是linux都无需修改jmeter.porperties的remote_hosts,推荐!
  2. bin/jmeter.properties文件,server.rmi.ssl.disable从false改为true,电脑上没有装SSL所以不启动SSL为true,不然会报错
  3. 在所有slave端,bin目录下启动jmeter-server(没有点sh结尾):./jmeter-server(这是linux,windows下是jmeter-server.bat)如图,其中端口是回传数据端口,可以修改#server.rmi.localport=4000这个端口来调整,但通常无需调整
    这里写图片描述
  4. 在master端执行你已调试好的脚本,以windows为例,命令如下:
    这里写图片描述
  5. 在master端执行你已调试好的脚本,以linux为例,命令如下:
    这里写图片描述
  6. slave的响应界面如下:
    这里写图片描述

单服务器多节点模式

多个jmeter,在同一台服务器上,使用不同端口组成集群
0. 修改每个apache-jmeter-5.2/bin/jmeter.properties文件中server_port字段非重且不占用其他端口

  1. 修改每个apache-jmeter-5.2/bin/jmeter.properties文件中server.rmi.ssl.disable从false改为true
  2. 按照前述方法启动该服务器下的所有slave节点

比较

  • 与LoadRunner的异同:
  1. 都可以实现分布式负载,各有优劣
  2. 都支持windows和linux下的slave,但master,jmeter跨平台,LR不
  3. LR可以指定每个slave生成不同数量的并发用户,jmeter不可
  4. jmeter中测试计划使用的数据文件不会随脚本发送到slave,而LR可以通过选择纳入LR管理一起发送到远端slave
  5. 单服务器多节点模式适用IP资源不足但硬件资源充足,实际适用要对压力机的资源监控,尤其是TCP连接情况(while true;do echo;date +%Y-%m-%d’ '%H:%M:%S.%s;netstat -n|awk ‘/^tcp/ {++S[$NF]} END{for(a in S) print a,S[a]}’;sleep 1;done)

其他

参考链接
https://baijiahao.baidu.com/s?id=1650706228652611614&wfr=spider&for=pc

Jmeter的master配置【linux】

进入到bin目录下

1.jmeter.properties文件的 remote_hosts 改为如下内容:

remote_hosts=IP1,IP2,IP3

2.执行所有的节点:

./jmeter -n -t xxx.jmx -r -l /data/result.jtl -j /data/jmeter.log

3.执行指定节点:

./jmeter -n -t xxx.jmx -R IP1 -l /data/result1.jtl -j /data/jmeter.log

-n 表示非界面的启动,即命令行方式启动jmeter

-t 启动的jmeter脚本

-l jmeter执行过程的源数据,后续的rt、tps都是根据这些源数据计算出来的;

-j jmeter的执行日志

-r, --runremote

Start remote servers (as defined in remote_hosts)

-R, --remotestart

Start these remote servers (overrides remote_hosts)

Jmeter的slave配置【linux】

1.无需配置系统变量,直接在jmeter-server文件中指定jdk的配置

export MINIMAL_VERSION=1.8.0

export JAVA_HOME=/data/jenkins/jdk1.8.0_221

export PATH= J A V A H O M E / b i n : {JAVA_HOME}/bin: JAVAHOME/bin:{PATH}

2.jmeter-server下面的内容更改为本机ip

RMI_HOST_DEF=-Djava.rmi.server.hostname=IP

3.jmeter的bin/jmeter.properties文件修改以下一个配置

server.rmi.ssl.disable=true

4.jmeter的bin目录下

nohup ./jmeter-server &

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值