Jmeter 压测
JMeter
参考:JMeter 快速上手 | 白月黑羽 (byhy.net)
JMeter 这个软件工具 主要用于服务端系统的性能测试
比如 测试 web网站,API服务器 的性能,如下图所示
1. 安装 JMeter
前提要有 JDK8/JDK11
官网:Apache JMeter - Download Apache JMeter
- 下载后解压放在 D盘即可
2. 打开
- 进入 bin 目录下,双击 jmeter.bat 文件,就会出现如下界面:
- 修改系统背景和字体大小还有语言,可以点击 option
3. 界面简介
性能测试是:验证在各种性能负载场景下 ,系统的表现是否符合预期
模拟大量用户访问被测系统?
一个性能测试场景, JMeter称之为 test plan ,中文翻译为 测试计划
。实际上,一个 JMeter的测试计划对应性能测试的一个场景,其实也就是一个测试用例 。应该先准备好性能测试用例, 然后再用JMeter对应配置好一个测试计划来对应它。每个测试计划都可以保存在一个单独的文件中。
JMeter的测试计划,具体里面的内容(怎么测),根据你设计好的测试用例,在这个下面添加相应子节点定义。JMeter 把每个节点称之为 element
,翻译为中文叫 元件
,或者 元素
首先,必须定义用户访问的行为。 就是用户 先访问哪个网页,发出哪些HTTP请求,再访问哪个网页,发出哪些HTTP请求。 根据用例,往往需要模拟 多种 用户行为, 每种行为的用户有多少个。JMeter 把一个用户的行为 用一个线程来执行。JMeter 把同一种用户的行为和数量, 用线程组来定义,代表有一批用户,都是这样的行为。
4. 测试计划和线程组
例:
比如,现在我们要做的一个性能测试用例 需要模拟的行为 如下:
第1种行为(用户数量 5个):
先访问首页,再访问
单课页
,再访问 新闻页第2种行为(用户数量 10个):
先访问首页,再访问
专题页
,再访问 新闻页
我们就要定义2个线程组,对应这两种行为的用户。
线程组中:
Ramp-Up 时间
意思是 所有用户上线的总时间,以秒为单位。- 比如5,就表示总共耗时5秒,如果是 5个用户,那就意味着 每隔1.25秒上线一个: 5秒/(5-1) = 1.25
循环次数
意思是 每个用户 做线程组里面定义的动作行为多少轮
。 缺省就做一轮。
接下来 这个线程组里面 的 行为定义,也就是这类用户 先访问哪个网页,发出哪些HTTP请求,再访问哪个网页,发出哪些HTTP请求, 这个行为怎么定义呢?
- 一个具体的请求,是通过
Sampler 取样器
来 定义的。 - 通常最常用的就是这个 HTTP请求取样器。
- 一个具体的请求,是通过
定义设置好以后,下面就是要运行看看。
- 运行前,通常我们要保存这个测试计划
- 先选择计划节点,再选择工具栏的
保存
按钮,自己选择合适的保存位置
5. 调试运行
接下来就可以运行一下看看。
注意,运行JMeter 有2种运行模式: GUI 图形界面模式
和 CLI 命令行模式
,前者是开发调试用的,后者才是真正执行压力测试时用的,现在就是开发阶段,当然先使用 图形界面模式,等调试没有问题,再使用命令行模式
所以图形界面模式,我们要查看结果,就是加 Listener 监听器
。
最常见的就是 ViewResultTree查看结果树
,里面会显示HTTP请求具体的细节的信息。
注意右键根节点
结果树 的 Sample result 页
参数的意义: (若要删除记录,左侧栏右键查看结果树,点击清除即可)
1 | Connect Time : |
6. HTTP 请求默认值配置
测试过程中,被测系统换了, 就要换配置的地址, 要手动修改 请求参数,请求取样器多了, 就非常麻烦了。可以使用HTTP请求默认值
解决这个问题。
那么如果具体在写测试行为时,如果没写,就默认使用http请求默认值里配置的信息,比如请求的ip啥的
这边自己试了下,直接测匹配的接口,除了 post 发送时需要在请求头加上点东西,其他没啥,亲测可用,所以接下来看下报告如何打印应该就行,,
7. 模拟间隔时间
补充一下,点右键可以禁用某个用户行为
场景1中两组请求中间没有间隔,不符合实际情况。
怎么让它们有间隔呢?
可以使用 JMeter的
定时器 Timer
,有很多种,这里选择 固定的试下- 但是注意:定时器 执行优先级高于 取样器, 会先暂停, 可以放在下一个消息的前面
- 也就是这个定时器你放一个,就会对它同目录下的所有都起效果,所以慎重使用
也可以使用 取样器 里面的
测试活动 flow control action
取样器这个就是正常等
8. 执行压力测试-命令行模式
真正实施性能测试应该在命令行模式下运行(而不是我们看到的 GUI 界面),
在 .jmx 文件所在位置打开 cmd 命令行,输入命令格式如下:
1 | D:\JMeter\apache-jmeter-5.6.2\bin\jmeter -n -t parktest-case1.jmx -l log.jtl |
-n 表示命令行
-t 指定执行的测试计划 保存的 .jmx 文件
-l 最终生成的测试日志
注意JMeter的路径替换为你的安装路径
假设 我们有如下的性能测试用例,如下是简化的测试用例,实际工作的会很复杂
注意,一个线程代表一个用户
如果要测试系统的并发连接数应该如何测试?
1 | 只有一种用户行为: |
这就已经开始进行压测了,由于设置的是 600 秒,等十分钟之后就行
结束
9. dashboard 产生图表
1 | D:\JMeter\apache-jmeter-5.6.2\bin\jmeter -g log.jtl -o report1 |
就会产生report1目录,里面的index.html 打开就是报告
注意
-o
后面的目录 一定要不存在,或者内容为空,否则会报错。
执行命令后进入 report1 目录下,点击里面的 index.html 文件,就可以看到如下页面: