Jmeter5.x之Linux下非GUI压测实战

前言

        使用Jmeter在非GUI环境对项目进行压测,属于高级测试工程师需掌握的技能之一;阅读本章需要掌握linux基本操作命令,jvm基础知识;也适合开发工程师了解Jmeter在非GUI环境的压测流程。

疑问:为什么要在非GUI环境使用Jmeter进行压测?为什么要求Jmeter和项目必须保持在同个内网压测?GUI环境使用Jmeter的图形界面操作挺方便的。

  • 在windows等GUI环境下,由于windows的可视化操作界面,后台其他进程等都会占用系统资源,会导致Jmeter压测相关指标不精准;
  • 在linux等非GUI界面下,常规都是命令行操作模式,无没必要的进程占用系统资源,jmeter可以更好的进行压测,得到更精准的压测报告
  • 常规开发完成的项目都部署在远程Linux服务器上,测试人员如果使用windwos系统对远程Linux上的项目进行压测,由于还要多走网络通许协议,此时公司带宽或服务器带宽较低,同样也会导致测试结果不精准,所以一般是要求Jmeter和项目进行内网压测;

配置和要求

Jmeter压测脚本jmx:对接口“课程列表”和“秒杀接口”进行压测,集合点500,持续2分钟;

Linux服务器:CentOS 7.8,2核8G(推进使用云服务器,如阿里云,腾讯云等)

jdk要求:JDK8,Linux安装JDK教程JDK官网

Linux文件上传下载,命令行操作工具:

  • mac使用: filezilla、item2
  • win使用:winscp、putty、SecureCRT+FX

作者本地环境windows,使用SecureCRT+FX做服务器操作工具

案例实战

1、使用服务器命令工具创建目录;并将JDK8上传到服务器;

// 创建java目录,存放jdk和项目环境

mkdir /usr/local/java 

// 创建jmeter目录,存放jmeter压测软件

mkdir /usr/local/jmeter

2、解压JDK8

tar -zxvf jdk-8u181-linux-x64.tar.gz

3、配置环境变量

// 使用命令编写环境变量,在最底部加入jdk8的路径

vim /etc/profile

# jdk8环境变量,路径不能有中文或空格

JAVA_HOME=/usr/local/java/jdk8  //改成自己安装的jdk版本路径和地址

CLASSPATH=$JAVA_HOME/lib/

PATH=$PATH:$JAVA_HOME/bin

export PATH JAVA_HOME CLASSPATH

 环境变量立刻生效,并查看环境变量配置结果

source /etc/profile

查看安装情况 java -version,显示版本号则安装成功;

4、上传Jmeter5.x压缩包和压测jmx脚本到服务器;并使用命令对Jmeter5.x压缩包进行解压

安装解压工具:yum install unzip

Jmeter5.x压缩包,解压命令:unzip apache-jmeter-5.5

5、上传应用程序,并启动;

// 进入项目所在目录

cd /usr/local/java/jmeter

// 使用命令启动项目;守护进程方式,退出终端,进程依旧再

nohup java -Dfile.encoding=utf-8 -jar jmeter-edu.jar >jmeter-edu.log &

// 查看项目启动情况
ps -ef|grep java

 6、启动jmx脚本对项目接口进行压测

//  进入jmeter的bin目录

cd /usr/local/jmeter/apache-jmeter-5.5/bin

//  启动脚本文件

 ./jmeter -n -t /usr/local/jmeter/test.jmx -l /usr/local/jmeter/html/temp/jtl/result.jtl -e -o /usr/local/jmeter/html/temp/result

压测脚本说明:

  • -n 非gui方式运行jmeter
  • -t :jmx 脚本路径
  • -l :result.jtl 运行结果保存路径,注意:.jtl 文件名不能重复,文件夹需要存在
  • -e :在脚本运行结束后生成 HTML 报告
  • -o :用于存放 HTML 报告的目录,文件夹需要存在

注意:进行第二次压测的时候,jtl文件夹和result文件下的文件要提前删除,否则会报错;

Jmeter目录结构

启动jmx脚本文件;

 压测结束后,生成的测试报告;需要通过服务器文件传输工具下载到本地查看;

 

         至此,在Linux服务器上使用Jmeter进行压测告一段落。在使用Jmeter压测过程中,需要不断 调整线程数和压测时间,并生成压测报告,最后总结出系统的最优并发数,瓶颈等提供给开发人员,方便后续开发根据线上项目情况及时给服务器增加配置或服务器;

        后续是进行真实项目综合实战的压测脚本编写;根据实际项目业务需求,进行接口关联压测和独立压测;

后续综合环境配置:

阿里云ECS服务器:4核8G;

数据库RDS:mysql8

压测项目:springboot+mybaitsPlus+jwt,集合token授权机制;

压测接口:会员接口(增删改),商品接口(增删改),下单接口,管理员登录获取token接口。

阿里云服务器内网压测结果:

​​​​​​​