JMeter压测快速入门(详解教程)

JMeter压测快速入门(详解教程)

Jmeter是Apache的开源项目,基于Java开发,主要用于进行压力测试。

JMeter 与 LoadRunner 比较

JMeter 是一款开源 (有着典型开源工具特点: 界面不美观 ) 测试工具,虽然与 LoadRunner 相比有很多不足,比如:它结果分析能力没有 LoadRunner 详细;很它的优点也有很多:

  • 开源,他是一款开源的免费软件,使用它你不需要支付任何费用,
  • 小巧,相比 LR 的庞大(最新 LR11 将近 4GB),它非常小巧,不需要安装,但需要 JDK 环境,因为它是使用 java 开发的工具。
  • 功能强大,jmeter 设计之初只是一个简单的 web 性能测试工具,但经过不段的更新扩展,现在可以完成数据库、FTP、LDAP、WebService 等方面的测试。因为它的开源性,当然你也可以根据自己的需求扩展它的功能。扩展性极强。它可以测试性能,可以测试接口,甚至可以通过加载浏览器驱动完成 UI 自动化的工作!

两者最大的区别:jmeter 不支持 IP 欺骗,而 LR 支持。

一、安装 JMeter 压测工具

1、下载 JMeter 安装包

直接上官网下载 JMeter 安装包

官方文档:https://jmeter.apache.org/
官方下载:https://jmeter.apache.org/download_jmeter.cgi

在这里插入图片描述

2. 安装 JDK,

系统要求:JMeter2.11 需要 JDK1.6 以上的版本支持运行
建议: 安装 java 8.0以上版本

配置JDK 环境变量请点击这里查看

3、解压并安装 JMeter

2.1、解压安装包(Window 版 )

在这里插入图片描述
在这里插入图片描述

  • Jmeter目录文件讲解
    – bin:核心可执行文件,包含配置
    – jmeter.bat: windows启动文件:
    – jmeter: mac或者linux启动文件:
    – jmeter-server:mac或者Liunx分布式压测使用的启动文件
    – jmeter-server.bat:mac或者Liunx分布式压测使用的启动文件
    – jmeter.properties: 核心配置文件
    – shutdown.cmd windows 下 jmeter 关闭文件
    – stoptest.cmd windows 下 jmeter 测试停止文件

– extras:插件拓展的包
– lib:核心的依赖包
– ext:核心包

4、启动 JMeter

这里我以 Windows 环境为例,如果其他的是 mac或者Liunx ,请根据上面Jmeter目录文件讲解 ,调用对应的功能。

4.1、启动 JMeter 临时服务

1、进入 \bin 文件夹

在这里插入图片描述

2、双击 jmeter.bat 启动 JMeter

注意:打开的时候会有两个窗口,JMeter 的命令窗口和 JMeter 的图形操作界面,不可以关闭命令窗口。

在这里插入图片描述
在这里插入图片描述

4.2、启动 JMeter java服务

1、进入 bin 目录,双击 ApacheJmeter.jar 包运行

注意:打开的时候会有只有一个窗口,JMeter 的图形操作界面,和上边的不一样哈。

在这里插入图片描述

4.3、启动 JMeter 命令操作

1、设置环境变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、然后 windows+r 回车键 ——打开命令操作,输入jmeter,就可以启动我们的软件了

在这里插入图片描述

二、使用 JMeter 压测工具

1、语言配置

1.1、找到jmeter.properties这个文件,用记事本打开,修改language=zh_CN

在这里插入图片描述
1.2、启动后在Options 设置

在这里插入图片描述

2、设置软件风格

在Options 设置

在这里插入图片描述

3、基础使用

1:线程组&参数介绍

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

这俩个参数容易混淆,Ramp-Up,指的是我们10个线程在这1s内匀速启动,调度器的持续时间是,这个说的是这10个线程启动后(也就是1s后),持续测试的时间(这里勾选了永远,即使写了2s,也会一直测试下去)。

(1)Ramp-Up 时间

控制的是线程的启动节奏

(2)调度器持续时间

控制的是整个测试运行的时长

(3)循环次数

指的是要执行的轮次(比如说我设置个循环次数为2,那第一轮10个线程1s启动完,在持续2s不断地发送请求,之后结束第一次循环,紧接着进入第二次循环,还是这10个线程慢启动1s,在持续2s不断地发送请求......)
  • 注意点①:调度器的持续时间是要等所有线程启动后,才开始计时

  • 注意点②:一轮循环结束,新一轮循环还是这10个线程,需要重新匀速启动,在持续时间内发送请求

  • 注意点③:如果这里不勾选,永远,这个选项,那么一定要在输入框中输入数字,否则,在启动的时候,会自动勾选上永远

在这里插入图片描述

2 添加结果树

这里用来查看我们查看发出请求后收到的响应结果
取样器结果中需要去关注的信息

在这里插入图片描述

(1)响应时间

load time 响应时间 单位是ms

在这里插入图片描述
(2)响应码

(这里的响应时间就不正常)Response code

在这里插入图片描述

3:添加HTTP请求

在这里插入图片描述

(1)HTTP默认请求值

同一个系统中协议,ip,端口是不会发生改变的,所以我们把这些信息提取出来,放到默认值当中,注意它们的作用域是同级的!

在这里插入图片描述

注意点:当取样器中存在未配置的选项,会直接去http请求默认配置中取;取样器中配置了的选项就不会去默认配置中取了。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3:请求头的设置

(1)bug复现

主要是针对登录的状态

举例,看我们在浏览器中登录后,请求头中就有了这个JWT令牌

在这里插入图片描述

(2)建立HTTP请求头管理器

在这里插入图片描述
在这里插入图片描述

(3)在请求头中加入token后正确返回结果

在这里插入图片描述

(4)作用域设置

因为有拦截器的设置,所以没有token令牌的页面是不会正确加载的,我们如果把这个默认请求头设置放到同级作用域,那还要登录干啥呀,所以把这个头管理器放到列表页就OK了。

在这里插入图片描述
将登录后的data拿过来

(5)错误信息分析

如果我们在HTTP请求当中把域名写错,会报下面这个错误

在这里插入图片描述
在这里插入图片描述

<think>我们正在讨论JMeter的使用教程和应用场景。根据用户的问题,我将提供以下内容:1.JMeter简介:简要介绍JMeter是什么。2.JMeter使用教程:包括安装、基本使用、试计划创建、线程组设置、取样器添加、监听器使用等。3.JMeter应用场景:列举JMeter的主要应用场景。4.示例:给出一个简单的JMeter试示例,包括步骤和可能的输出。同时,根据系统指令,我会在适当的地方使用行内数学表达式(如果需要,但JMeter主题中可能较少)和独立公式(如果有数学表达式),并确保使用正确的LaTeX语法。另外,我会用中文回答,并在回答末尾生成相关问题。参考引用: -引用[1]提到有从入门到进阶的教程资源,我们可以推荐用户参考这样的教程。-引用[2]提供了简单使用教程,包括下载安装、运行、实操等,我们可以借鉴其结构。-引用[3]提到JMeter中可以使用JSONPath提取器,这可以作为高级功能的一个例子。 -引用[4]提到压力测试的度量标准,如每秒页面数、吞吐量等,我们在介绍监听器时可以提及。 -引用[5]提到JMeter是流行的试工具,可以模拟大量用户,评估性能。 由于用户问题中并没有数学表达式,因此我们可能不需要使用数学公式,但如果有性能模型等,我们可以适当引入。现在开始组织内容: ###JMeter简介Apache JMeter是一个开源的Java应用程序,用于性能试和负载试。它最初设计用于试Web应用程序,但现在已经扩展到其他试功能,如数据库、FTP、Web服务等。### JMeter使用教程####1.下载安装-访问[JMeter官网](https://jmeter.apache.org/)下载最新版本。 -由于JMeterJava应用,确保已安装Java环境(建议Java8或更高版本)。-解下载的缩包,进入`bin`目录,运行`jmeter.bat`(Windows)或`jmeter.sh`(Linux/macOS)启动。####2.创建试计划启动JMeter后,会自动创建一个空的试计划。试计划是JMeter试的顶层结构。####3.添加线程组线程组代表一组用户,可以设置线程数(用户数)、循环次数等。 -右键点击试计划 ->添加->线程(用户)->线程组。 ####4.添加取样器取样器用于发送请求。例如,HTTP请求取样器可以试Web应用。-右键点击线程组->添加 ->取样器 ->HTTP请求。-在HTTP请求中设置服务器名称、端口、路径等。 ####5.添加监听器监听器用于查看试结果。-右键点击线程组->添加 ->监听器 ->查看结果树(或汇总报告、图形结果等)。####6.运行试点击工具栏上的绿色三角形按钮运行试。在监听器中查看结果。####高级功能- **参数化**:使用CSV DataSet Config元件(引用[2]提到),可以从文件中读取数据作为参数。- **关联**:使用后置处理器,如正则表达式提取器或JSONPath提取器(引用[3]提到),从响应中提取数据用于后续请求。- **断言**:验证响应是否符合预期。### JMeter应用场景1.**Web应用性能试**:模拟多用户并发访问网站,试响应时间、吞吐量等(引用[5]提到)。 2. **API试**:试RESTful或SOAP Web服务的性能和功能。 3. **数据库试**:通过JDBC试数据库查询性能。4.**压力测试**:模拟极端负载,试系统在高负载下的表现(引用[4]提到的度量标准,如每秒页面数、吞吐量)。5.**功能测试**:通过组合取样器和断言,验证应用功能是否正确。 ###示例:试一个HTTP接口假设我们要试一个GET请求:`http://example.com/api/users`,模拟10个用户,每个用户请求1次。 1.创建试计划,命名为“Example Test”。 2.添加线程组:线程数=10,循环次数=1。 3.在线程组下添加HTTP请求取样器:-协议:http-服务器名称或IP:example.com-路径:/api/users4.添加查看结果树监听器。5.运行试。在查看结果树中,可以看到每个请求的响应状态和内容。此外,可以添加汇总报告监听器,查看统计信息,如平均响应时间、吞吐量等。 ###注意事项-试环境应尽量接近生产环境。-避免在试过程中对生产系统造成影响。-根据试结果分析性能瓶颈。 §§相关问题§§1. JMeter如何模拟用户登录并进行压力测试? 2. JMeter中如何实现参数化和数据驱动试? 3. JMeter试结果分析中需要关注哪些关键指标? 4. JMeter与其他性能试工具(如LoadRunner)相比有什么优缺点?5.如何用JMeter试数据库性能?[^1]:jmeter菜鸟入门到进阶系列教程资源[^2]: jmeter简单使用教程[^3]: JSONPath OnlineEvaluator可以与其他工具和项目结合使用[^4]:度量有助于评估系统的性能[^5]:这是市场上用于试web和移动应用程序的流行工具</think>### JMeter 使用教程与应用场景详解 #### 一、JMeter 简介 Apache JMeter 是开源的性能试工具,主要用于模拟高并发负载,试 Web 应用、API、数据库等系统的性能指标(如响应时间、吞吐量)[^5]。其核心功能包括: - 多协议支持:HTTP/HTTPS、FTP、JDBC、SOAP/REST 等 - 分布式试:通过主从机架构模拟大规模并发 - 可视化报告:生成实时性能图表和统计数据 #### 二、基础使用教程(以 HTTP 试为例) ##### 1. 安装与启动 - **下载**:从 [Apache JMeter 官网](https://jmeter.apache.org/) 获取最新版 - **启动**:执行 `bin/jmeter.bat`(Windows)或 `bin/jmeter.sh`(Linux/macOS) ##### 2. 创建试计划 ```mermaid graph TD A[试计划] --> B[线程组] B --> C[HTTP 请求] C --> D[监听器] ``` 1. **添加线程组** - 右键试计划 → 添加 → 线程 → 线程组 - 关键参数: - 线程数(用户数):100 - 循环次数:10 - 加速时间(Ramp-up):5秒(模拟用户逐步增加) 2. **配置 HTTP 请求** - 右键线程组 → 添加 → 取样器 → HTTP 请求 - 设置参数: ```plaintext 协议:https 服务器名称:api.example.com 路径:/v1/users 方法:GET ``` 3. **添加结果监听器** - 常用监听器: - 查看结果树(调试用) - 聚合报告(关键指标) - 响应时间图(性能趋势) 4. **执行与查看报告** - 点击 ▶️ 运行 - 聚合报告关键指标: - **吞吐量**(Throughput):单位时间处理请求数(请求/秒) - **响应时间**:90%请求的完成时间(毫秒) - **错误率**:失败请求百分比 #### 三、高级应用技巧 1. **参数化试** - 使用 `CSV Data Set Config` 导入试数据: ```plaintext 文件名:user_credentials.csv 变量名:username,password ``` - HTTP 请求中引用变量:`${username}` 2. **关联与提取** - 添加后置处理器 → JSON 提取器: ```json JSON Path:$.data.token 变量名:auth_token ``` - 后续请求头中使用:`Authorization: Bearer ${auth_token}` [^3] 3. **分布式试** - 控制机配置 `bin/jmeter.properties`: ```properties remote_hosts=192.168.1.101:1099,192.168.1.102:1099 ``` - 从机启动:`bin/jmeter-server` #### 四、典型应用场景 1. **Web 应用压力测试** - 模拟电商秒杀场景:瞬时 10,000 用户并发下单 - 量指标:数据库连接池峰值、服务器 CPU 负载 2. **API 性能验证** - 试 RESTful API 吞吐量 $$ \text{吞吐量} = \frac{\text{总请求数}}{\text{试时长}} \quad (\text{请求/秒}) $$ - 验证 OAuth 2.0 令牌发放性能 3. **数据库负载试** - 通过 JDBC 取样器执行 SQL 压力测试: ```sql SELECT * FROM orders WHERE create_time > '2023-01-01' ``` - 监控慢查询率 4. **微服务链路试** - 使用逻辑控制器模拟调用顺序: ```mermaid graph LR A[登录API] --> B[查询商品] --> C[提交订单] ``` #### 五、性能优化建议 1. **试脚本优化** - 禁用非必要监听器(如查看结果树) - 使用 `JSR223 取样器` 替代 BeanShell(性能提升 5-10 倍) 2. **资源监控** - 集成 Prometheus + Grafana 实时监控: - JVM 内存使用:$ \text{Heap Used} = \text{Total Heap} - \text{Free Heap} $ - 线程活动数 3. **瓶颈定位** - 阶梯式加:每 2 分钟增加 50 用户 - 结合 `PerfMon` 插件监控服务器资源 > **注意**:生产环境试需遵守灰度发布原则,避免影响线上服务[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT小郭.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值