当前位置: 首页 > news >正文

使用jmeter做压力测试 - 实践

使用jmeter做压力测试 - 实践

介绍

一款开源的、纯 Java 应用程序,关键用于对软件进行​就是JMeter ​性能测试​​和​​负载测试​​。

它的核心功能可以概括为:

  1. ​模拟高并发负载​​:用一个图形化界面创建测试计划,模拟大量用户同时访问服务器(如 Web 服务器、数据库等),从而测试其性能和稳定性。

  2. ​测量和分析性能​​:在测试过程中,JMeter 会收集并生成各种性能指标报告,例如:

    • ​响应时间​​:服务器处理请求并返回结果所花费的时间。

    • ​吞吐量​​:单位时间内处理的请求数量。

    • ​错误率​​:请求失败的百分比。

  3. ​支撑多种协议​​:除了最常用的 HTTP/HTTPS(用于测试网站、API),它还支持 FTP、JDBC(数据库)、SOAP/REST Web Services、JMS、TCP 等。

准备工作

运用JMeter之前,先安装JAVA环境

解压下载的二进制包,进入bin目录,使用jmeter.bat启动程序。

注意:启动后有两个窗口,一个​cmd窗口,一个JMeter的 GUI。

:就是这里cmd窗口的意思

不要使用GUI运行压力测试,GUI仅用于压力测试的创建和调试;执行压力测试请不要使用GUI。使用下面的命令来执行测试:

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

并且修改JMeter批处理文档的环境变量:HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"

对于GUI界面允许通过Options---Choose Language变更为简体中文

创建测试

创建线程组:在“测试计划”上右键 【添加】-->【Threads(Users)】-->【线程组】。设置线程数和循环次数。

配置原件:在刚刚创建的线程组上右键 【添加】-->【配置元件】-->【HTTP默认请求值】,配置要求进行测试的软件协议、地址和端口。

构造HTTP请求:在“线程组”右键 【添加-】->【samlper】-->【HTTP 请求】设置需要测试的API的请求路径和数据。

添加HTTP请求头:在我们刚刚创建的线程组上右键 【添加】-->【配置元件】-->【HTTP信息头管理器
】。因为我要传输的素材为json,所以设置一个 Content-Type:application/json,然后我压测的项目有jwt校验,所以还有一个token:

添加断言:在我们刚刚创建的线程组上右键 【添加】-->【断言】-->【响应断言
】。

根据响应的数据来判断请求是否正常。我在这里只判断的响应代码是否为200。还可以设置错误信息

添加察看结果树:在刚刚创建的线程组上右键 【添加】-->【监听器】-->【察看结果树】。

直接添加,然后点击运行按钮就能够看到结果了。

添加Summary Report(聚合报告)

在刚刚创建的线程组上右键 【添加】-->【监听器】-->【Summary Report】。

直接添加,然后点击运行按钮就可能看到结果了

通过保存后下次能够在【文件】-->【最近打开】打开

开始测试

用命令行来执行

仅供参考:
jmeter -n -t D:/study/Nu11Cat/yace/train.jmx -l D:/study/Nu11Cat/yace/jmeter/test_result/result.txt -e -o D:/study/Nu11Cat/yace/jmeter/test_report
D:\study\Nu11Cat\Imitation-of-12306-ticketing-system\apache-jmeter-5.6.3\bin\jmeter.bat -n -t D:/study/Nu11Cat/yace/train.jmx -l D:/study/Nu11Cat/yace/jmeter/test_result/result.txt -e -o D:/study/Nu11Cat/yace/jmeter/test_report
testplan/RedisLock.jmx 为测试计划文件路径
testplan/result/result.txt 为测试结果文件路径
testplan/webreport 为web报告保存路径

之后会在指定路径生成一个html,打开即可看到压测结果:

补充:压测请关闭其他所有与压测代码无关的软件,如IDEA,聊天软件,音乐软件等,尽可能发挥机器性能,并持续关注压测时的CPU或内存占用,或者运用其他监察工具。

http://www.jsqmd.com/news/35826/

相关文章:

  • CSP2025游记总结
  • 连续出现的字符
  • 详解WebSocket及其妙用 - 指南
  • 2025 csp_j 游忌
  • 利用序列ID漏洞下载整个公司用户数据库的技术分析
  • 详细介绍:STM32 定时中断逻辑拆解:为什么 “每 2 次中断翻一次 LED”,却是 1 秒亮 1 秒灭?
  • 11.8 NOIP模拟4 改题记录
  • 红外遥控
  • C 指针初识
  • 翻译[9]-让sshfs再次伟大于浏览器中
  • 计算机毕业设计-基于Java的口腔管理平台系统创建实战(附源码+论文+演示视频)
  • 唯识主义:哲学爱智慧本质的当代回归 - 实践
  • 第一届湖南省信息学拔尖创新挑战活动 总结
  • U629961 焦头烂额的日奈委员长 の markdown
  • Java数组——Array类讲解
  • 论文笔记(九十三)ManipulationNet: Benchmarking - 实践
  • flask: 用flask-wtf校验参数
  • hdh
  • 序列密码的线性滤波模型
  • 使用Milvus和DeepSeek构建RAG demo - 实践
  • python里字面量是什么?
  • 圆锥滚子轴承品牌:行业顶尖选择与专业解析
  • 串串重学
  • 如何写毕业论文?10个高效写作技巧+AI论文工具推荐(2025最新)
  • avro 数据入门
  • 2025龙信杯个人Wp
  • 7大AI论文写作工具必备!论文写作辅助神器推荐!
  • flask: 报错:The CSRF token is missing.
  • Java数组——二维及多维数组
  • 详细介绍:MySql复习及面试题学习