最近在推进信创转 arm, 遇到的问题是有几个服务在 x86 架构下运行良好,但是在 arm 机器上总是出现问题,为了验证问题,准备使用压测工具做一下压力测试,JMeter 免费开源又好用,趁此机会学习实践一下吧。
JMeter 是开源软件 Apache 基金会下的一个性能测试工具,用于测试部署在服务器端的应用程序的性能。本文旨在帮助想了解性能测试和 JMeter 的初学者。本文将介绍 JMeter 的安装和运行方法,以及如何开始最简单的测试。
下载安装
直接在官网下载最新版即可,JMeter 是免安装版的,下载解压后可以直接使用(前提是你电脑上已经安装过 JDK 8 以上的环境,安装这块应该问题不大,大家自行解决):
https://jmeter.apache.org/download_jmeter.cgi
如需历史版本可以移步:
https://archive.apache.org/dist/jmeter/
我这里使用最新版的 5.6.3
下载解压后,目录结构如下:
目录说明:
-
backups: 默认是没有的,当你运行了测试任务时就会自动将测试脚本(.jmx 文件)备份到这里
-
bin: 可执行脚本和一些模版示例
-
docs: Java doc 文档
-
extras: 提供了对构建工具 Ant 的支持,可以使用Ant来实现测试自动化,例如批量脚本执行,产生HTML格式的报表
-
lib: 该目录包含两个子目录,其中ext子目录存放 JMeter 的核心 jar 包,另一个junit子目录存放JUnit测试脚本
-
licenses: 相关 licenses
-
printable_docs: 该目录存放的是 jmeter 官方提供的帮助文档,可以离线查看
启动 JMeter
在 bin 目录下,Windows 用户运行 jmeter.bat 文件即可启动, JMeter,Unix / MacOS 用户则需要运行 jmeter.sh
启动之后会打开一个 GUI 软件( CMD 窗口也不要关,隐藏即可)
默认字体比较小,可以 Options -> Zoom In 进行放大
也支持简体中文,根据自己的喜好来设置即可,Options -> Choose Language -> Simple
图形化界面,大家可以自己熟悉一下就可以了,接下来,我们来创建一个测试计划
创建测试计划
所谓测试计划,就是要执行的测试任务的合集,对应一个 .jmx 文件,完整的测试计划包含一个或者多个线程组,逻辑控制器,取样发生控制,监听器,定时器,断言和配置元件等组成。
添加线程组
如上图中的 Test Plan, 我们来添加一个线程组:选中 Test Plan - 右键 - Add - Threads(Users) - Thread Group.
JMeter 是由 Java 实现的,使用一个 Java 线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思。
操作完之后就会打开 线程组页面,可以配置线程组相关的内容,如下图
① 名称,起一个名称
② 出错如何处理,这里选择了 continue 继续
③ 总共有多少线程(用户),一个线程代表一个用户
④ 多长时间把 ③ 中设置的线程数拉起来,上面的设置就表示 1 秒时间将 100 个用户拉起来,以用户打卡为例,总共100个用户,大家都在 5 秒内打卡完成,大家有的在第 1 秒打,有的在第 3 秒打,这个设置就是模拟真实生活场景的,用户也不是完全同时的
⑤ 每个用户循环几次,上面的设置就表示 100 个用户,每人做 10 次,总共发出 10 * 1000 = 10000 次请求
添加测试任务
有了线程组,下面要给这批用户(线程)分配活了,同样,在 线程组 上右键进行相关操作,这里配置最简单的 HTTP 请求
配置页面也比较容易理解,跟使用 PostMan 之类的差不多,大家看页面应该就知道怎么填了,比如我这里简单测试接口 http://localhost:8080/hello?name=jack 。
保存并执行
保存并执行测试计划
点击 三角 执行测试计划,点击 Options - Log Viewer 可以打印日志信息
添加监听器
上面已经可以正常压测了,但是看不到输出的结果,我们可以添加一些监听器进行查看结果,比如 查看结果树 和 聚合报告 这两个。
查看结果树可以查看到每次请求的响应情况
聚合报告用来查看测试计划所执行的情况,比如延迟,吞吐量之类的
先简单知道些入门的东西,后续再探究更加高阶的内容。
命令行执行
在 windows 上可以运行 GUI 界面,但是在 linux 服务器上一般执行 命令行 命令较多,当然,在 windows 上也可以执行 命令行 指令,我们来简单使用一下。
在 bin 目录下有可执行的脚本,在 bin 目录下,windows 系统按住 shift 右键 在此处打开 PowerShell 窗口,可以使用 .\jmeter -v
查看当前版本
使用 .\jmeter -h
查看帮助提示
还记得我们在上面演示的测试计划保存到了下面的目录,我们就用这个为例进行执行
提前再创建一个 E:\App\apache-jmeter-5.6.3\tmp_result 空目录(一定是一个空目录哟)用来存放输出的结果,直接看下面的示例,关键点是: -t
后面指定测试计划脚本,-l
输出csv 结果,-o
输出html结果
.\jmeter -n -t 'E:\App\apache-jmeter-5.6.3\tmp_tests\Test Plan.jmx' -l E:\App\apache-jmeter-5.6.3\tmp_tests\Test.csv -e -o E:\App\apache-jmeter-5.6.3\tmp_result
执行界面输出结果
Test.csv 文件内容,每个请求的情况
tmp_result 输出结果
双击 index.html 查看
总结
时间关系,先分享到这里,也算带大家入门了 JMeter 的最基本使用吧,后面再继续探索更多实操,届时再做分享,当然你也可以继续搜索更加进阶的内容,带有目的性的去学习更加深入的内容。
我后续会继续在 linux 服务器上进行实践,包括启用多机器联机模式进行加大压力真正实践生产级压测需求,大家感兴趣的话可以关注一下,期待下次分享。
如有任何问题,欢迎关注公&号:新质程序猿,找到我,有问必答,一起成长。