代码改变世界

压测工具JMeter——安装与使用(Windows、Mac、Linux)

2023-10-07 13:51  古兆洋  阅读(1706)  评论(0编辑  收藏  举报

压测工具JMeter——安装与使用(Windows、Mac、Linux)

简单介绍:
简单理解为是一个压测工具。

压力测试是目前大型网站系统的设计和开发中不可或缺的环节,通常会和容量预估等工作结合在一起,穿插在系统开发的不同方案。压力测试可以帮助我们及时发现系统的性能短板和瓶颈问题,在这个基础在上再进行针对性的性能优化,也可以帮助我们预估系统的承载能力,使我们能根据其做出一些应对措施。

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文件

在查看结果树中导入打开是显示每条记录的详情

在聚合报告中导入打开是显示压测指标结果

调用接口代码

 1 package com.example.pressdemo;
 2  
 3 import org.springframework.web.bind.annotation.*;
 4  
 5 @RequestMapping("/test")
 6 @RestController
 7 public class HelloWorld {
 8  
 9     @GetMapping("/helloworld")
10     public String helloworld() {
11         //模拟业务耗时
12         int a = 0;
13         for (int i = 0; i < 10000; i++) {
14             for (int m = 0; m < 10000; m++) {
15                 a ++ ;
16             }
17         }
18         return "helloworld";
19     }
20  
21     @PostMapping("/sayHello")
22     public String sayHello(@RequestParam("name") String name) {
23         //模拟业务耗时
24         int a = 0;
25         for (int i = 0; i < 10000; i++) {
26             for (int m = 0; m < 10000; m++) {
27                 a ++ ;
28             }
29         }
30         return "你好:" + name;
31     }
32  
33     @PostMapping("/sayGoodBye")
34     public String sayGoodBye(@RequestBody Person person) {
35         //模拟业务耗时
36         int a = 0;
37         for (int i = 0; i < 10000; i++) {
38             for (int m = 0; m < 10000; m++) {
39                 a ++ ;
40             }
41         }
42         return "再见:" + person.name;
43     }
44 }
45  

 

————————————————
版权声明:本文为CSDN博主「xin码农」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38256870/article/details/123186015