linux上实现jmeter分布式压力测试

一、安装jdk(master以及slave均需要安装)
注:master以及slave的jdk和jmeter的版本以及安装路径要保持一致,不然可能会出错,无法成功执行
在linux下新建一个文件夹,用来放jdk安装包和安装jdk使用。然后将安装包放到linux的/usr/java/下,然后执行下面命令进行jdk的安装:
主控机和负载机都安装一样的JDK环境和jmeter版本
我安装的是:jdk1.8版本

(1) 解压

tar -zxf <jdk name>

jdk name 就是你要安装的jdk安装包,至此,jdk安装就完成了。为了节省空间,我们要把安装包删掉,执行下面的命令:

tar -zxf <jdk name>

-f 指明了不需要询问,直接删掉。
例如:安装路径在/usr/java/jdk1.8.0_281

(2) 配置环境变量

vi /etc/profile

在这里插入图片描述

然后按下Ins键,当下面出现INSERT时,我们就可以进行编辑了。
在文件的后面追加下面几行内容:java_home 是我们jdk的安装路径

JAVA_HOME=/usr/java/jdk1.8.0_281
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH

添加完之后,按下Esc键,退出编辑模式,然后输入:wq 再按下回车键,这样就将修改的内容保存并退出,为了让修改的文件生效,需要执行下面的命令:

source /etc/profile

为了验证jdk是否成功安装,我们执行下面的命令,如果出现对应的安装版本信息,则说明安装成功,否则请检查安装和配置。
(3) 验证安装是否成功

[root@localhost java]# java -version
java version "1.8.0_281"

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210429112604394.png

二、 安装jmeter(master以及slave均需要安装)
I、下载jmeter在linux下的安装包
可以直接把jmeter的文件直接通过xftp拉到我们的linux服务器上,放在/data/jmeterServerListen/jmeter/apache-jmeter-5.2.1路径下
在这里插入图片描述
让我们验证jmeter.sh命令是否可用,进入bin路径下输入:

sh jmeter.sh -v

如果有一下图标代表安装成功
在这里插入图片描述

添加环境变量:
虽然jmeter已经安装完成,我们只要cd到jemter/apache-jmeter-5.1.1/bin目录下运行jmeter就可以启动程序,但这样比较麻烦

我们可以把jemter/apache-jmeter-5.1.1/bin添加到环境变量中:
查看当前路径 pwd,保存路径,分别执行如下命令:

export JMETER_HOME=/data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/bin
export PATH=$JMETER_HOME/bin:$PATH
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
source /etc/profile

添加成功后,执行命令:jmeter -v,出现同样的apache jmeter 至此,jmeter已经安装完成。

如果添加环境变量最后结果失败,也没有关系,我们只要能保证Jmeter能够起来就可以了!

三、配置环境
1.配置Master环境
1).在Master上配置jdk环境并配置环境变量
2)在Master上配置jmeter环境并配置环境变量
3)a.进入Master中的jmeter中bin目录,修改jmeter.properties,找到关键字remote_hosts,配置负载机ip+端口,remote_hosts=192.168.0.138:1099,192.168.0.139:1099:1099,…并保存。(jmeter的默认端口是1099,ip为压测Slave机器的端口,本地虚拟机为Master,也想为Slave的话,就增加配置127.0.0.1:1099)
在这里插入图片描述
b.将Master和Slave的bin/jmeter.properties文件下的#server.rmi.ssl.disable=false 修改为:server.rmi.ssl.disable=true并且将前面的#注释去掉。
在这里插入图片描述
4)进入Slave机中jmeter安装路径下的bin目录,修改jmeter.properties,找到关键字remote_hosts,配置127.0.0.1:1099或配置本身的IP,如:192.168.0.138:1099,一般为默认127.0.0.1,但是可能有被修改过,这是个坑,要注意!!

注意:这个是启动我们Slave和Master的前提步骤
1)Master上已上传脚本文件和参数化文件;
2)Slave上参数化文件要放在jmeter的bin目录下,如果没有我们可以不需要配置;
3)Slave 上 启动 ./jmeter-server;

四、启动命令
1、在两台Slave 上 启动命令:./jmeter-server;
在这里插入图片描述

2、在Master上执行分布式压测命令;

1)、我是用Jmeter自动化构建生成 HTML 报告,然后配置了一下,至于怎么配置,参考一下这个地址:https://blog.csdn.net/qq_39720249/article/details/85044581
配置好之后,我新建了一个文件夹,workspace,下面有三个文件:分别是
在这里插入图片描述

report 存放我们分布式脚本压测出的报告,包括:htm、jtl文件;
在这里插入图片描述

runscript 存放的是执行脚本:
在这里插入图片描述
start.sh:文件内容

#!/bin/sh
rm -rf /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/report/jtl/result.jtl
echo "result.jtl delete successful"
rm -rf /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/report/htm/*
echo "html  delete successful"
cd /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/bin
#jmeter -n -t /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/script/Guomi.jmx  -l /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/report/jtl/result.jtl -e -o /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/report/html -JthreadCount=200 -JstartTime=1 -Jtime=3600
./jmeter -n -t /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/script/liu/Guomiliu.jmx -R 192.168.0.138:1099,192.168.0.139:1099 -l /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/report/jtl/result.jtl -e -o /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/report/htm
#jmeter -n -t /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/script/he/Guomi.jmx -R 192.168.0.138:1099,192.168.0.139:1099 -l /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/report/jtl/result.jtl -e -o /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/report/htm

其中启动指令:jmeter,通过跑批文件是自动生成,htl和html文件

./jmeter -n -t /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/script/liu/Guomiliu.jmx -R 192.168.0.138:1099,192.168.0.139:1099 -l /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/report/jtl/result.jtl -e -o /data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/report/htm

-n : 代表以没有图形化界面启动
-t 表示后面要测试的测试计划
-l 表示生成测试报告 jtl文件
-R 表示指定多少个 agent 启动并参与测试
-o: 指定测试报告的存放位置
-l -o:指定的文件及文件夹,必须不存在,否则执行会失败

startjmeter.sh文件内容:

#!/bin/sh
dir=/data/jmeterServerListen/jmeter/apache-jmeter-5.2.1/workspace/report/jtl/
str="result.jtl"
for file in $dir/*; do
#获取文件夹下面所有文件名称
	newfile=${file#*.}
# 打印文件名称
	echo $newfile
	echo $newfile
# 判断字符串相等
if [ "$newfile" = "$str" ];then
	rm -rf $file
fi
done

script存放我们需要压测的脚本:
在这里插入图片描述

3、现在我们去执行脚本:首先开通/runscript/start.sh脚本的执行权限,在路径runscript下执行

chmod 777 start.sh  或者 chmod -R 777 /runscript

执行脚本

./ start.sh

4、压测成功之后,就像这样,summary 代表请求数;in 之后代表的是压测时间;后面avg,min max单位都是ms;Started字段:若压测脚本中虚拟用户数设置的是200,分布式环境有2台slave机器,实际对服务器的请求数是200*2=400
在这里插入图片描述5、完了之后,我们去report路径下去查看htm,新生成一个index.html的报告
在这里插入图片描述
6、我们导出报告:
在这里插入图片描述
在这里插入图片描述
如果我们打不开报错:
在这里插入图片描述

解决方法:1、换成大于jmeter.5.0以上的安装路径report\html打开;2、替换jmeter安装路径下bin下,report-template这个文件。注意:这个文件是导出html自动汉化的文件,适合于jmeter5.0以上的版本,如有导出html乱码的情况,则替换下这个文件也可。

链接:https://pan.baidu.com/s/13nGQlVat10ZVjt2KAI7ICw
提取码:5j3f

测试报告解析:

(1)APDEX (应用性能指标),计算每笔交易APDEX的容忍和满足阈值基于可配置的值,范围在 0-1 之间,1表示达到所有用户均满意。
在这里插入图片描述
Apdex:应用程序性能指标(0~1),1表示所有用户请求均满意,反之0则表示均不满意
T(Toleration threshold):可接受(容忍或满意)阈值,即用户可接受的响应时间
**F(Frustration threshold):**不可接受(失败)阈值,即用户不可接受响应时间
**Lable:**采样器名称

(2)Requests Summary(请求总结),成功与失败的请求占比,KO指失败率,OK指成功率
在这里插入图片描述
(3)statistics(数据分析),类似于jmeter聚合报告
在这里插入图片描述
Label:Sample采样器名称
Samples:总共发送请求数(线程数 * 循环次数)
KO:失败次数
Error%:请求失败率
Average:平均响应时间
Min:最小响应时间
Max:最大响应时间
90%Line:90%线,90%用户响应不超过该时间
95%Line:95%线,95%用户响应不超过该时间
99%Line:99%线,99%用户响应不超过该时间
Throughput:吞吐量,一般情况下可看做每秒完成请求数(和QPS类似)
Received:每秒从服务器端接收到的数据量
Sent:每秒从客户端发送的请求的数量

(4)Errors(错误情况)
在这里插入图片描述
(5)Top 5 Errors by sampler(采样器的5大错误)
在这里插入图片描述

主要是统计TOP5发生错误的采样器信息,这里如果全部通过,就不会有统计。

四、nmon 的监测
性能测试过程中,我们需要对硬件资源进行监控:
链接:https://pan.baidu.com/s/1fmDjSqlCsGkS9K5l9Hpf8A
提取码:l3nk
在这里插入图片描述
1、下载好的软件是个tar的压缩包文件,我们把它通过xftp上传到我们的linux上面,存放路径在/root/nmon
在这里插入图片描述
2、将其解压

tar -zxvf nmon_linux_14i.tar.gz

3、由于nmon_x86_64_centos6文件没有执行的权限,所以先给他赋予权限

chmod +x nmon_x86_64_centos6

4、我们只用到 nmon_x86_64_centos6 所以可以删除路径下其他文件和目录,xftp删除就可以了
5、由于nmon_x86_64_centos6名字太长,且不方便输入,我们改下名字:

 MV nmon_x86_64_centos6 nmon

6、使用nmon开始监控系统:

./nmon nmon -s 1 -c 6 -f -m 文件路径  --执行nmon,然后每1秒采集6次,采集6秒

解释一下:./nmon 是执行nmon的意思;nmon 是文件名;s : 采集间隔时间/频率 ;c:次数,合在一起就是:每1秒采集6次。
一般单接口的测试时长为5min或者10min,那要怎么设置?
那么就是 -s 3 -c 100 或者 -s 6 -c 100

-f 生成的数据文件名中包含文件创建的时间。
-m 生成的数据文件的存放目录。

文件路径 我们新建一个在/root/nmon下新建一个目录:listenfile ,把我们nmon输出的报告放在在里面,例如:
./nmon nmon -s 1 -c 6 -f -m /root/nmon/listenfile

nmon完成的时候会生成监控报告,我们根据时间去筛选文件。使用xftp把文件拷贝的我们本地:
在这里插入图片描述
首先,下载模版。点击打开
链接:https://pan.baidu.com/s/1FT0lYJ7XuNq1NaCrfY34uA
提取码:xfcu

打开之后是这样的
在这里插入图片描述
点击启用宏,再然后点击在这里插入图片描述
在这里插入图片描述
打开nmon文件就OK了。
会生成:
在这里插入图片描述
我们解释下每个sheet页面的含义
在这里插入图片描述
关键指标含义
在这里插入图片描述
我们就可以看我们硬件资源监控了

借鉴:https://blog.csdn.net/zhiyinweini3/article/details/106365890

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值