1.为什么要做分布式?

Jmeter 默认最大支持 1000 左右的并发用户数(线程数),当使用jmeter进行分布式测试时,并发数比较大,在大量并发情况下,很容易出现CPU、内存消耗过大的问题,甚至会出现java内存溢出。

如下图:
在这里插入图片描述
解决办法:
1.linux环境下运行时直接加大运行内存:
JVM_ARGS=“-Xms2g -Xmx2g -XX:MaxMetaspaceSize=2g” jmeter -n -t test_jk.jmx -l kx_report.jtl
或者
2.修改apache-jmeter-5.4.1/bin/jmeter
在这里插入图片描述

2.分布式原理:

Jemter分布式压测是选择其中一台作为调度机(master),其他机器作为执行机(slave);当然一台机器也可以既做调度机,也做执行机。

调度机执行脚本的时候,master将会jmx脚本分发到slave上,slave拿到脚本后以非GUI的形式开始执行。

slave执行完毕后将结果回传给master,并由master进行结果的汇总。

3.环境准备:

在master 和slave 配置相同版本的jdk 、jmeter,以及相同的jmeter路径;

对Linux操作系统进行优化,主要是tcpip的操作系统参数,主要是为了防止客户端产生大量的TimeWait,而使客户端成为瓶颈;

jmeter安装
1.建议直接将本地的jmeter压缩上传至服务器
2.unzip apache-jmeter-5.0.zip
3.chmod 777 -R apache-jmeter-5.0
4. 用如下命令vi /etc/profile配置jmeter环境变量

  export JMETER_HOME=/opt/jmeter/apache-jmeter-5.0//注意,此目录为jmeter的安装目录
  export PATH=$JMETER_HOME/bin:$PATH
  export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH

使用以下命令使修改的配置文件生效

source /etc/profile

5.安装配置完成后

jmeter -v

出现以下说明安装配置成功
在这里插入图片描述

4.分布式压测Linux配置

slave配置:
以下以xxx.xx.2.109
修改bin目录下的jmeter.properties,主要修改以下几项:
jmeter的端口默认为1099,也可以修改为其他端口,前提修改后的端口未被占用
server_port=1099
server.rmi.localport=1099
server.rmi.ssl.disable=true //关闭SSL校验,默认是注释掉的;
在这里插入图片描述

slave启动:
meter-server -Djava.rmi.server.hostname=xxx.xx.2.109 ,启动 anget 节点。jmeter-server 后面的参数指定 agent 的 IP这里是启动slave上的jmeter服务。
如果如下信息,说明启动成功:
在这里插入图片描述
created remote object: xxxxxx
说明anget 节点启动成功了;
当前测试任务启动或结束时,会出现以下信息:
Starting the test on host xxxxx :测试任务开始了
Finished the test on host xxxx :测试任务结束了

备注:
如果觉得上面的启动命令太长记不得,可以在jmeter-server文件中修改以下内容: RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xx.2.109
然后只要在bin路径下输入sh jmeter-server

master配置:
以下以xxx.xx.2.108,此配置是将 2.109作为slave 的同时,也作为master 主机机使用;
对bin下的jmeter.properties 文件进行修改 ,主要是以下两项:
remote_hosts=xxx.xx.2.108,xxx.xx.2.109
server.rmi.ssl.disable=true
在这里插入图片描述

5.运行场景:
jmeter -n -t test.jmx -R xx.12.66.64,xx.12.66.65 -l test.jtl
或 jmeter -n -t test.jmx -r -l test.jtl

参数 n:非gui运行
t:指定测试脚本
R:指定多少个 agent 启动并参与测试
r: 代表全部 agent 启动并参与测试
l:生成测试结果文件

注意点⚠️
1.如果出现参数配置文件,slave机器上也要存放一份,同master路径一致
2.master也作为执行机则需要以下配置:

  • jmeter.properties文件,remote_hosts配置上master机器的IP+slave机器的IP,以逗号隔开,经实际测试,注意:一定是配IP,不是配127.0.0.1,不然当不了执行机;
  • master机器上,修改jmeter-server文件中:RMI_HOST_DEF=-Djava.rmi.server.hostname=http://xxx.xxx.xxx.xxx,将这里设置为master机器的ip地址;
    master上启动./jmeter-server:
  • 针对master机器新开一个Linux窗口,先运行./jmeter-server, 不要忘了这一步;
  • 再回到当前窗口执行命令:sh jmeter.sh -n -t X.jmx -l X.jtl -e -o /xxx/html/report -r,则会发现master机器也作为压力机发起压力了
    执行结束后下载HTML报告到本地用于填写报告使用:
    进入report文件夹下,打包report文件夹:zip -r report.zip ./*
    ./*是指将当前目录下的所有文件和文件夹全部压缩
    下载:sz report.zip
    下载后打开index.html即为本次压测的jmeter的HTML报告:
Logo

更多推荐