简单介绍:
简单理解为是一个压测工具。
压力测试是目前大型网站系统的设计和开发中不可或缺的环节,通常会和容量预估等工作结合在一起,穿插在系统开发的不同方案。压力测试可以帮助我们及时发现系统的性能短板和瓶颈问题,在这个基础在上再进行针对性的性能优化,也可以帮助我们预估系统的承载能力,使我们能根据其做出一些应对措施。
JMeter是一个使用JAVA开发的Apache开源软件,用于软件的性能评估和压力测试。它最初是为测试Web应用程序而设计的,但此后又扩展到其他测试功能。
JMeter可用于静态和动态资源、Web动态应用程序的性能测试,例如:HTTP、 HTTPS、LDAP、TCP、FTP、SMTP、POP3、IMAP、Shell脚本、数据库、Java 对象,也可以用于对服务器、服务器组、网络或对象上的巨大负载,以测试在不同强度的压力测试下它们的强度和整体性能。
另外,JMeter还可以对应用程序做功能回归测试,通过创建带有断言的脚本来验证你的程序是否返回了你期望的结果。为了最大限度的灵活性,JMeter还支持使用正则表达式创建断言。
下载与安装
下载地址
ApachepI:? JMeter - Download Apache JMeter
在Binaries下面根据自己需求选择。 linux或者mac选择tgz,Windows选择zip
下载后直接解压,tgz 与 zip 不同版本解压的结构是差不多的
需要安装 jdk1.8,因为JMeter运行时需要jdk,下面给了一个连接。
JDK安装教程(有图详解)_叼着奶瓶瓶敲代码的博客-CSDN博客
关于JMeter环境配置(可不配,直接在bin目录下运行执行文件,配置环境变量打开会方便点)
1)桌面上选择“我的电脑”(右键),高级, 环境变量, 在“系统变量”—>“新建”, 在变量名中输: JMETER_HOME,变量值中输入:D:\apache-jmeter-5.5
2)再修改CLASSPATH变量,变量值中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;% JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar; 然后确定即可。
若不配置环境变量
mac 版本
选中文件 ctrl + c,打开终端 ctrl + v 点击回车即可
windows版本
可以直接双击执行文件
启动成功界面,后面的使用 mac 与Windows 都是一样的
界面默认是英文,可以配置中文
打开 \apache-jmeter-5.5\bin\jmeter.properties 第39行左右,改为 language=zh_CN
重启JMeter,语言已切换为中文
linux版本
一般情况下由于linux没有jmeter得操作界面,需要直接上传Windows版本或Mac版本操作界面保存的jmx文件,所以最后在讲完操作界面后再做描述,有经验的小伙伴可以直接翻到文章底部去看linux环境的安装预使用。
压测使用
HTTP协议GET请求
添加线程组
添加取样器
GET请求 填写压测地址信息
添加观察压测结果项
查看结果树:每条请求的记录
聚合报告:吞吐量(tps)、平均耗时等数据
添加查看结果树
添加聚合报告
配置压测信息
接下来配置 多少个线程 压测多时间或者压测多少次,点击线程组
默认如图
参数介绍
线程数:多少个并发
Ramp-up(秒) :一般都是1,代表1秒内把线程都启动,不用管这个参数
循环次数:执行多少次,比如跑10万笔 或者跑 100万笔
如果想压测多少分钟
循环次数勾选 永远
点击调度器 持续时间(秒) 写上压测时间
启动延迟(秒):多少秒后开始压测工作,一般都不需要这个
5个线程 压测 20000次样例
配置如下图
5个线程 压测 30秒样例
配置如下图
HTTP协议POST请求
与 GET请求类似
post json 提交需要修改两点
增加信息头
添加需要的请求头信息
2.请求的json 放进消息体数据中
开始压测工作
需要注意
一个线程组下配置多个请求,点击运行时,所有请求都会执行,如果不想执行其它的,就先禁用 ,有一个切换的按钮,禁用/启用 切换
点击 绿色三角运行
第一次执行时会提示你保存配置文件,方便后续再次执行,每次执行前,清理一下上次执行的结果数据,点击 stop 旁边 两个扫把的按钮。
点击 yes , 起个名字,点击保存,方便下次直接使用
执行效果如图
查看结果树
查看结果是否返回正常,红色是失败,绿色是成功
查看聚合报告
比较重要的几个参数
样本 :跑了多少笔交易
平均值:每笔交易平均耗时
异常%:失败率
吞吐量:tps
提前停止运行
点击 stop 按钮
每次执行前,清理一下上次执行的结果数据,点击 stop 旁边 两个扫把的按钮
linux 安装与执行
1.把压缩包放到指定位置解压
2.配置环境变量
修改配置文件
vi /etc/profile
输入 i 进入编辑模式
加入下面两行,路径根据个人情况
export JMETER_HOME=/home/ftpuser/apache-jmeter-5.4.3
export PATH=${JMETER_HOME}/bin:$PATH
刷新环境变量
source /etc/profile
查看Jmeter是否安装成功
jmeter -v
配置成功会显示对于版本
3.执行命令
jmeter -n -t 压测脚本路径 -l 指定输出文件路径
如下
jmeter -n -t /home/nccs/apache-jmeter-5.4.3/jmx/cs-500.jmx -l /home/nccs/apache-jmeter-5.4.3/jtl/500.jtl
第一个路径是要执行的jmx文件,第二个文件是结果报告存放的结果jtl文件
解释一下jmeter 的两种文件
一个是jmx结尾,是jmeter生成的请求文件,也就是上面提到保存的文件
一个是jtl,是jmeter生成的结果文件,每次压测文件需要重新指定,
4.jmter打开jtl文件
在查看结果树中导入打开是显示每条记录的详情
在聚合报告中导入打开是显示压测指标结果
代码样例
package com.example.pressdemo;
import org.springframework.web.bind.annotation.*;
@RequestMapping("/test")
@RestController
public class HelloWorld {
@GetMapping("/helloworld")
public String helloworld() {
//模拟业务耗时
int a = 0;
for (int i = 0; i < 10000; i++) {
for (int m = 0; m < 10000; m++) {
a ++ ;
}
}
return "helloworld";
}
@PostMapping("/sayHello")
public String sayHello(@RequestParam("name") String name) {
//模拟业务耗时
int a = 0;
for (int i = 0; i < 10000; i++) {
for (int m = 0; m < 10000; m++) {
a ++ ;
}
}
return "你好:" + name;
}
@PostMapping("/sayGoodBye")
public String sayGoodBye(@RequestBody Person person) {
//模拟业务耗时
int a = 0;
for (int i = 0; i < 10000; i++) {
for (int m = 0; m < 10000; m++) {
a ++ ;
}
}
return "再见:" + person.name;
}
}
版权归原作者 xin码农 所有, 如有侵权,请联系我们删除。