Jmeter 压测工具的安装及使用

2023-11-07

一、简介

JMeter:是 Apache 公司使用 Java 语言开发的一款开源软件,用于对静态和动态资源进行压力测试。JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。

除此之外,LoadRunner 也是一款出色的压测工具,可以通过脚本定制接口的调用逻辑。

注意:虽然 Postman 的 Runner 也可以进行压测,但是它是串行执行的,上一个请求结束之后才开始下一个请求,属于连续测试,不属于并发测试。而 JMeter 可以指定用户数,发请求的间隔时间,可以模拟并发测试。

二、下载

打开官网地址,选择 Download Releases 标签,选择 apache-jemeter-5.6.zip 下载即可。

注意:JMeter 要求 JDK8 的安装环境,需要先安装 JDK8 后才能使用。

在这里插入图片描述

下载后,文件如下:

在这里插入图片描述

三、安装

将下载后的压缩包进行解压:

在这里插入图片描述

其中 bin 文件夹中包含启动脚本 jmeter.bat

(为了后续运行方便,可以发送到桌面快捷方式。)

在这里插入图片描述

四、启动

双击 jmeter.bat,可以看到打开了一个控制台终端和 JMeter 的操作界面。

在这里插入图片描述

在这里插入图片描述

五、使用

1.调整界面显示大小

如果我们觉得界面字体太小,我们可以在 JMeter 界面中选择 Options -> Zoom InZoom Out 来调整大小。

在这里插入图片描述

2.添加线程组

在开始测试前,我们需要创建一个线程组。在执行计划上右键,选择 Add -> Thread (Users) -> Thread Group

在这里插入图片描述

然后,我们就可以在创建的线程组上设置我们需要进行的压力测试场景了,包括需要模拟的用户数(线程数)上升到要求并发量的时间需要循环执行的次数等。

在这里插入图片描述

3.添加 HTTP 请求

线程组创建好后,我们需要给线程组添加 HTTP 请求。在线程组上右键,选择 Add -> Sampler -> HTTP Request

在这里插入图片描述

根据需要压测的场景填写服务器IP端口号请求方式路径编码格式(utf-8),以及入参信息

参数信息里的 Content-Type 一般默认为 text/plain,表示普通文本格式传参。

在这里插入图片描述

如果需要使用 JSON 传参,需要将标签切换为 Body Data,然后在下面添加请求头的时候额外添加 Content-Type请求头,值为application/json

在这里插入图片描述

4.添加 HTTP 请求头

部分场景下,我们需要给 HTTP 请求添加请求头。在 HTTP 请求上右键,选择 Add -> Config Element -> HTTP Header Manager

在这里插入图片描述

比如,我们可以在请求头里面设置一个 token 的值,用于通过接口的鉴权校验。

在这里插入图片描述

5.保存压测配置

我们点击右下角的 Save 按钮,或者使用快捷键 Ctrl + S 来进行保存。这里我在 jmeter 目录下单独创建了一个 my_jmx 文件夹用于存储自己的压测文件。

在这里插入图片描述

6.启动压测

这里补充说明一下几个按钮的含义:

  • Start:正常启动压测。
  • Start no pauses:无停顿启动压测:忽略定时器。
  • Stop:直接停止接下来进行的所有线程。
  • Shutdown:在当前线程运行结束后,才会把剩下没有执行的线程结束掉。

压测的配置设置好后,有两种启动压测的方式:

方式一:选中设置好的线程组,在 JMeter 界面的左上角,点击播放样式的 Start 按钮。

在这里插入图片描述

方式二:在设置好的线程组右键,选择 Start

在这里插入图片描述

7.查看结果树

压测之后,我们需要查看压测结果。在 HTTP 请求上右键,选择 Add -> Listener -> View Results Tree

在这里插入图片描述

压测结果树页面如下所示:

在这里插入图片描述

8.查看聚合报告

结果树上可以看到请求响应的内容,如果想看到压测接口的具体指标,需要查看聚合报告。在 HTTP 请求上右键,选择 Add -> Listener -> Summary Report

在这里插入图片描述

聚合报告页面如下所示:(为方便查看,切换为中文展示)

在这里插入图片描述

六、补充

1.设置中文

在 JMeter 界面中选择 Options -> Choose Language -> Chinese (Simplified)

在这里插入图片描述

上面这种设置方式只是临时生效,永久生效的话需要修改 bin 文件夹下的 jmeter.properties 文件,增加如下配置:

language=zh_CN

2.设置字体大小(永久生效)

由于 JMeter 的默认字体比较小,为了更方便地使用 JMeter 进行压测,我们需要调整字体的大小。

在这里插入图片描述

首先,我们需要在 JMeter 界面将主题修改为 Metal,这个主题可以更好地让我们的字体大小配置生效。如果不想切换主题的话,每次启动之后需要手动 Zoom In 一下。

在这里插入图片描述
刚切换完主题,样式可会乱,点击 Yes 重启即可。

在这里插入图片描述

然后,编辑 jmeter.properties 文件,调整图标和文字的大小,增加如下配置:

jsyntaxtextarea.font.family=Hack
jsyntaxtextarea.font.size=25
jmeter.hidpi.mode=true
jmeter.hidpi.scale.factor=2.0
jmeter.toolbar.icons.size=48x48

最后,编辑 jmeter.bat,在第一行 @echo off 下面增加如下配置:

@echo off

set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.controlFont=Dialog-30
set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.systemFont=Dialog-30
set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.userFont=SansSerif-30
set JVM_ARGS=%JVM_ARGS% -Dswing.plaf.metal.smallFont=SansSerif-30

保存后,重启 JMeter,就可以看到字体和图标已经变大了:

在这里插入图片描述

3.中文乱码

如果响应结果中文显示为乱码,如下图所示:

在这里插入图片描述

需要在 jmeter.properties 中添加如下配置:

sampleresult.default.encoding=UTF-8

重启后再次请求,发现响应结果中文显示正常:

在这里插入图片描述

整理完毕,完结撒花~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jmeter 压测工具的安装及使用 的相关文章

  • 循环访问多个正则表达式提取器输出

    您能告诉我如何循环遍历返回多个值的正则表达式后处理器的结果吗 Example JSON 响应消息 reply code 111 status SUCCESS customerID 222 a b 333 44 4 s 555 666 777
  • 使用 XPATH 子字符串函数

    我需要帮助弄清楚这个 XPATH 子字符串函数 但我无法使用它 我尝试过这种方法的各种变体 a contains text Home href substring jsessionid 12 尝试从此标签获取 jsessionid 值 a
  • JMeter 框架

    我最近开始学习 JMeter 来对我们的应用程序进行性能测试 我有一个测试计划 jmx 并使用 Jenkins Ant 定期运行它 到目前为止一切都很好 我的问题是 我们有一个关键字驱动的框架 TestNG 等用于功能测试工具 QTP Se
  • 使用Jmeter调用API时如何传递表单数据?

    我想使用 Jmeter 进行 API 调用 在我的 API 调用中 我发送一个带有请求的文件 我需要将文件名指定为表单数据 e g when I call the same API from postman 当我从 Jmeter 进行上述调
  • 在 JMeter 的 BeanShell Sampler 中将字符串解析为整数

    我试图在 JMeter 中将字符串解析为整数 但由于以下错误而失败 如果我尝试打印 vars get 返回的字符串 它们看起来不错 2014 06 28 00 08 52 WARN jmeter assertions BeanShellAs
  • 如何让Jmeter使用CSV数据作为GET参数?

    我想在 JMETER 中实现以下目标 Jmeter加载带有id号的CSV文件 Jmeter 中的每个用户 线程都会选择一个 id 号并将其添加到其 HTTP 请求中 例如http www testsite com test php id x
  • jmeter-如何获取当前日期和时间(以秒为单位)

    我想计算当前时间 以秒为单位 并将其用作我的 jmeter 测试计划中的参数 默认情况下 时间以毫秒为单位 有人可以帮我吗 您可以使用 time 函数 http jmeter apache org usermanual functions
  • 负载测试kafka消费者

    我正在编辑问题 因为我认为它不够清楚 如何对我的 kafka 消费者进行负载测试 我看过很多关于 apache kafka 负载测试的文章 但没有一篇关于消费者负载测试的文章 对于前 我在jsr223中编写了jmeter kafka生产者测
  • 我有 JSR233 监听器,它在 JMeter 非 GUI 模式下似乎被忽略

    我在 HTTP 请求下有 JSR233 侦听器 它存储所有响应时间值 创建数组 然后对数组进行排序以查找 90 行 然后在达到最终 90 行阈值时标记最后一个事务 请求通过或失败 GUI 中的一切都运行完美 但我使用 Docker Imag
  • 使用 JMeter 将文件上传到 Rest API

    注意 我已经检查过BlazeMeter 教程 https www blazemeter com blog testing advanced rest api file uploads jmeter当我使用 文件上传 选项卡时 它将文档作为正
  • 使用参数作为用户定义变量?

    我们在非 GUI 模式下运行测试 并传入各种参数 如服务器 端口 线程等 我们还希望在 GUI 模式下运行测试 并能够在 GUI 中更改这些参数 我想做的是使用 2 个用户定义的变量对象 其中一个包含我们可以编辑的静态数据 另一个包含参数
  • 尝试使用 JMeter API 生成 JMeter 测试计划 (jmx):从代码创建的 jmeter jmx 文件与 JMeter 创建的文件不匹配

    我正在尝试使用 jmeter java api 创建 jmeter jmx 文件 这就是我所做的 gui jmx 使用 jmeter gui 应用程序创建一个参考 jmx 文件 我可以将其进行比较 对于测试计划 我仅添加一个线程组和线程组内
  • Rest 服务器(Play Framework)在负载测试期间出现“Read Timed out”异常

    我们正在使用 Play Framework 在 REST 服务器上运行重负载测试 jmeter 350 个线程 35M 总请求 并在大约 2 小时后遇到以下错误 我们删除了其他组件 以便 request 只是接受请求而不执行任何操作 任何人
  • 是否可以将 jmeter 变量包含在从 CSV 获取的值中?

    我有一个 csv 文件 其中包含名为 query 的列 我要查询的全部内容之一是 user id list list 我想要做的是让 jMeter 在将查询传递到 HTTP Sampler 时覆盖查询中的 list 和 id 变量 其中变量
  • Jmeter动态生成请求的json负载

    我有一个 Jmeter 测试计划 我希望 HttpSampler 发送发布请求 请求正文应包含 Json 如下所示 productIds p1 p2 我设置了一个随机变量生成器 每次调用都会返回格式正确的 ProductId 我想做的是通过
  • Jmeter - http 采样器第一次迭代所花费的时间很长

    我是 Jmeter 的新手 我已经编写了一个 http 采样器 我正在运行 5 次迭代 这是我得到的读数 805 160 148 185 143 我注意到第一次迭代所花费的时间比前四次要长 每次运行采样器时我都会观察到同样的情况 仅供参考
  • 手动设置Jmeter主目录

    根据这个帖子 http jmeter 512774 n5 nabble com Automatic generation of aggregate reports td4281459 html Jmeter home被自动检测到 有没有办法
  • 如何在JMeter中实现pacing?

    我在 jMeter 中模拟以下场景 10 个用户 ThreadGroup 正在登录 每个用户 ThreadGroup 应等待 延迟 10 秒才能启动下一个用户 ThreadGroup 我该如何实施 现在我有这样的事情 线程组 10us Ht
  • 使用 SOAP 调用 WCF 服务

    我正在尝试在不创建 WCF 客户端的情况下测试 WCF 服务 我有类似的代码 问题here https stackoverflow com a 1643025 1397017 我希望完全控制 SOAP 负载 因此我希望能够发出我自己的 We
  • JMeter 为子功能添加 Think Time

    在 JMeter 中 当我右键单击 线程 控制器 时 我有一个选项 Add Think Time to children功能 当我点击它时 我会看到每个采样器Test Action暂停与Uniform Random Timer随机延迟 10

随机推荐

  • CUnit详解(基于linux下的白盒单元测试)

    CUnit是一个对C语言编写的程序进行单元测试的框架 在线文档说它作为一个静态链接库被链接到用户的测试代码中 它提供了一种简洁的框架来建立测试架构 并提供丰富的断言 Assertion 来测试通用数据类型 除此之外 它还提供了 许多不同的结
  • H5考点

    HTML 5 1 行内元素 块级元素 空元素 行内元素 input img span label a b strong sub sup button textarea select 行内元素 不独占一行 上下内外边距无效 高度宽度无效 只能
  • 手把手教你突破 GPT-4.0 3小时25次的限速!

    很多人很郁闷 ChatGPT Plus账号在浏览器上使用GPT4 0模型的时候 会受到官方的限制 每3小时只能对话25次 是真的不够用 但是在手机上使用GPT4 0模型则不会有限制 既然这样 那我们是否也可以在浏览器上无限制呢 答案是可以的
  • CSDN周赛56期 - 八阿哥依旧

    之前54期被判作弊 申述无果 反被客服拉黑 水平不够 脾气够够的 让我彻底死心 从此粉转路 各种平台也不止C站一家 确实没有必要一棵树上吊shi 各位如果真心想通过竞赛提高自己的话 实在没必要来C站 整个娱人愚己 我这么说可不是恼羞成怒 看
  • 快速搜索Wox工具之Everything Client没有运行报错,解决办法!

    一直在用的一款快速搜索神器 Wox 但是在使用过程中出现一个报错 报错如下 Everything Client 没有运行 令我很烦 百度了一下 试了很多方法 还是不能发挥它的最大功效 由于我是一个好学的人 一直追踪这个问题 并寻求解决 终于
  • QT---QMainWindow初始化顺序

    C 构造 先子类以及成员 再父类以及成员 析构的顺序就是构造顺序的逆序 就是先析构父类 再析构子类 先析构本类 再析构本类的成员 QT 1 控件类 gt 控件提升类 gt QMainWindow类 2 子窗体的构造函数中初始化了父窗体的pa
  • 【log4j】

    文章目录 log4j 简介 组成 日志级别 log4j使用 占位符 log4j web 简介 Log4J 是 Apache 的一个开源项目 官网 http jakarta apache org log4j 通过在项目中使用 Log4J 我们
  • DC-UNet:重新思考UNet架构和双通道高效CNN医学图像

    摘要 经典UNet的体系架构在某些方面存在着局限性 因此本文对其结构提出了改进 1 设计高效的CNN架构来取代编码器和解码器 2 在最先进的U Net模型的基础上 应用残差模块来取代编码器和解码器之间的跳过连接来进行改进 医学图像分割是通过
  • eclipse编译慢 提高eclipse的性能

    编译慢原因有多种 其中可以通过修改eclipse ini文件设置缓存大小 并将工作空间的validation的多项验证去除 因为这些验证也为在编译时被执行 只保留几个必须的 我就只设置了xml验证 关闭checking for update
  • Spring Boot —Cache使用

    1 Spring缓存抽象 Spring从3 1开始定义了org springframework cache Cache和org springframework cache CacheManager接口来统一不同的缓存技术 并支持使用JCac
  • emcas利用矩形编辑在每行添加序列数字

    参考文章 http xahlee info emacs emacs emacs string rectangle ascii art html 通过阅读文章利用rectangle number lines函数实现 通过 查询文档发现 其绑定
  • matlab2016a贝叶斯工具箱,【Matlab】贝叶斯网络工具箱简介

    本文主要参考 以及自己对该工具箱的一点认识 通过借助该工具箱中的一个测试函数 k2demo1 m 了解整个贝叶斯网络工具箱的使用 1 给定一个贝叶斯网络结构 N 4 节点个数 即参数的个数 dag zeros N N C 1 S 2 R 3
  • 怎样使用vs2019 开始自己的第一个C++程序

    怎样使用vs2019 开始自己的第一个C 程序 一 新建项目 1 点击菜单栏 gt 文件 gt 新建 gt 项目 1 我们可以看到上方存在的语言 平台和项目类型的选项 语言这里我们就选择C 如果有需要可以选择所有语言 2 平台我们就选择wi
  • 07-----git add . 失败(warning: You ran ‘git add‘ with neither ‘-A (--all)‘ or ‘--ignore-removal‘)

    1 分析原因并解决 出错原因 远程仓库修改或者删除文件 而没有在本地更新 解决 git status 查看对应状态 git add A 或者 git add all 解决问题
  • linux 分区 dev,linux-kernel – 是/ dev / dm-1分区还是整个块设备?

    每个分区都是一个 整体 的块设备 您可以对任何分区进行子分区 然后再次对其进行子分区 然后再次 在您的示例中 dm 1可以映射到任何东西 原始设备 dmcrypt设备抽象 MD RAID支持的多路径 dm加密卷组上的逻辑卷 当设备初始化时
  • 浅浅写一下PPOCRLabel的使用及体验

    依赖包 我是基于之前建立好的paddle env环境 因此在使用过程中实际上 根据报错 需要的包只有这两个 pip install xlrd pip install PyQt5 关于报错的话 ModuleNotFoundError No m
  • Kettle案例——数据去重-不完全去重

    1 通过使用Kettle工具 创建一个转换 并添加 CSV文件输入 控件 唯一行 哈希值 控件以及Hop跳连接线 具体如图所示 2 单击 浏览 按钮 选择要进行完全去重处理的CSV文件merge csv 再单击 获取字段 按钮 Kettle
  • Java加密技术(十)——单向认证

    在 Java 加密技术 九 中 我们使用自签名证书完成了认证 接下来 我们使用第三方CA签名机构完成证书签名 这里我们使用 thawte 提供的测试用21天免费ca证书 1 要在该网站上注明你的域名 这里使用 www zlex org 作为
  • python图片对比并确定_python如何对比图像的区别

    python对比图像的区别方法 首先使用 pylab imread 读取图片 然后使用 matplotlib pylab plt imshow 显示图片 接着灰度图与RGB图相互转换 最后保存图片即可 相关学习推荐 python教程 pyt
  • Jmeter 压测工具的安装及使用

    目录 一 简介 二 下载 三 安装 四 启动 五 使用 1 调整界面显示大小 2 添加线程组 3 添加 HTTP 请求 4 添加 HTTP 请求头 5 保存压测配置 6 启动压测 7 查看结果树 8 查看聚合报告 六 补充 1 设置中文 2