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

性能测试——Jmeter实战

前言

评估一个系统的性能,一般通过一些指标类体现,如:

响应时间:应用程序处理请求所需的时间,反映应用程序对请求做出响应的速度。可以使用System.currentTimeMillis()或JMX来测量。
吞吐量:应用程序每秒处理的请求数量,衡量应用程序处理能力的关键指标。可以使用JMeter或ApacheBenchmark进行压力测试来测量。
资源使用:包括CPU使用率、内存使用量以及垃圾收集(GC)时间等,这些指标反映应用程序对系统资源的占用情况。可以使用Java Management Extensions(JMX)或jstat命令来监控这些指标。

一、Jmeter配置使用

1.1、下载安装

下载官网

直接在官网下载并解压即可
在这里插入图片描述

解压之后,通过bin目录下面的jmeter.bat文件启动

1.2、设置中文

点击上方的options/choose language/Chinese
在这里插入图片描述

1.3、创建测试计划

创建线程组

右键点击测试计划,添加,线程,线程组
在这里插入图片描述

这里可以设置请求的线程数,循环请求的次数等。压测、并发测试的时候需要使用
在这里插入图片描述

创建Http请求

右键点击线程组,添加,取样器,HTTP请求
在这里插入图片描述

设置请求参数:需要填写请求协议,一般HTTP或HTTPS,服务器ip或者域名,请求方式,请求路径,编码等,如果需要请求参数可以点击下方的添加来添加参数。
在这里插入图片描述

添加请求头

右键点击HTTP请求,添加,配置元件,HTTP消息头管理器
在这里插入图片描述

点击下方的添加可以往请求头添加参数
在这里插入图片描述

创建结果视图

右键点击线程组,添加,监听器,查看结果树,汇总报告,聚合报告,两个报告的数据有所不同,看需要使用
在这里插入图片描述

结果树
在这里插入图片描述

汇总报告
在这里插入图片描述

聚合报告
在这里插入图片描述

全部配置完成之后,点击上方的绿色开始按钮开始进行测试。

二、测试方法

基准测试(Baseline Testing):
通过记录系统在正常条件下的性能指标作为基准,后续的测试结果将与该基准进行对比。
简单来说,就是单用户,重复多次去请求同一个接口,然后计算出平均的响应时长作为基准。
如下设置:
在这里插入图片描述

负载测试(Load Testing):
在模拟实际生产环境中的负载条件下,测试系统的性能表现。
简单来说,就是多用户,测试预期最大流量情况下系统的性能极限。(在满足系统的性能指标情况下,找出系统所能承受的最大负载量),假设同时有100个人请求同一个接口。
在这里插入图片描述

稳定性测试
需求方提出要求稳定运行的负载。这个要求的量就是系统要达到的稳定运行负载量。

压力测试(Stress Testing):
在超出系统正常负载的条件下,测试系统的性能极限和稳定性。
简单来说,就是多用户模拟高并发,模拟极限负载导致系统崩溃的破坏性压力测试或者高负载下长时间稳定运行压力测试。(看系统是否具备容错能力和可恢复能力)
在这里插入图片描述

并发测试(Concurrency Testing):
测试系统在同时有多个用户访问的情况下的性能表现。
并发测试和压力测试差不多,不过并发强调的是线程数多。

容量测试(Capacity Testing):
测试系统在达到峰值负载情况下的性能表现,并确定系统的容量上限。

三、指标监控

系统的指标:CPU,内存,数据库;服务的各种指标:吞吐量,程序健康状态等
如果采用的是云服务,系统指标可以在云服务器官网查看。一般也会有整合一些仪表盘来观测系统情况,最保底还可以通过命令行来查看系统的各种资源状况。
服务指标可以通过整合spring admin来查看。
一边测试一边观测仪表盘各种指标的变化。

四、结果分析

通过上面的各种报告可以查看请求的各种信息,如平均请求时长,时间的方差,吞吐量等等。
通过更改参数多次运行,还可以测出系统的稳定运行负载,极限负载等。

五、性能调优

通过监控指标、结果分析,可以知道性能瓶颈出现的位置,然后针对性去提升性能。


http://www.kler.cn/a/372824.html

相关文章:

  • 企业新闻及产品宣传稿怎么写?有哪些商业财经类报纸杂志或媒体发布?
  • JAVA多线程--CAS补充
  • Topaz Photo AI for Mac人工智能图像降噪软件 安装教程【保姆级教程,简单操作轻松上手】
  • 基于SpringBoot+Vue+MySQL的房屋租赁系统
  • Kafka 与传统 MQ 消息系统之间有三个关键区别?
  • ARM汇编指令速过
  • DAIN-SQL,DAIL-SQL,C3-SQL和 DIN-SQL 技术的理解和异同点
  • LSTM——长短期记忆神经网络
  • Linux 调度SCHED_FIFO或SCHED_RR
  • 传统机器学习总结
  • 目标检测一阶段模型
  • BERT的中文问答系统22
  • rook-ceph mon 报错 e9 handle_auth_request failed to assign global_id
  • 时尚零售企业商品计划管理的数字化之旅
  • 「C/C++」C++设计模式 之 抽象工厂模式(Abstract Factory)
  • HTTP相关返回值异常原因分析,第二部分
  • Mac在Typora配置PicGo图床,以github为例
  • rsync异地备份
  • 详解机器学习经典模型(原理及应用)——朴素贝叶斯
  • 【iOS】YYModel初学习
  • ssm014基于JSP的乡镇自来水收费系统+jsp(论文+源码)_kaic
  • 图书管理系统汇报
  • 全面掌握数据库性能监控:策略、工具与实践
  • C语言中有哪些函数可以用来处理二进制和十六进制数字
  • 人工智能算法之粒子群优化算法
  • Yii2 init 初始化脚本分析