目录

简单介绍:

下载与安装

下载地址

mac 版本

windows版本

linux版本

压测使用

HTTP协议GET请求

添加线程组

​编辑添加取样器

 GET请求 填写压测地址信息

添加观察压测结果项

添加查看结果树 

 添加聚合报告

配置压测信息

参数介绍

5个线程 压测 20000次样例

5个线程 压测 30秒样例

HTTP协议POST请求

开始压测工作

 需要注意

点击 绿色三角运行

 查看结果树

查看聚合报告

提前停止运行

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

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

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

代码样例

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;
    }
}

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐