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

项目性能优化—使用JMeter压测SpringBoot项目

我们的压力测试架构图如下:

压力测试架构图

配置JMeter

在JMeter的bin目录,双击jmeter.bat

jmeter.bat

新建一个测试计划,并右键添加线程组:

添加线程组

进行配置

配置

一共会发生4万次请求。

ctrl + s保存;

添加http请求:

添加Http请求

配置http请求:

配置http请求

配置断言,来判断当前请求是否成功:

配置断言

正常响应如下:

正常响应

配置断言

添加断言持续时间

断言持续时间

持续时间断言

添加察看结果树:

结果树

添加汇总报告:

汇总报告

相似的操作,也添加聚合报告:

添加聚合报告

相似的操作,添加图形结果:

图形结果

相似的操作,添加汇总图:

汇总图

发送请求测试

发送请求

发送请求

压力测试结果解析

聚合报告

聚合报告

  • 样本(Sample):发送请求的总样本数量

  • 响应时间(RT):平均值,P90,P95,P99,Min,Max

  • 异常(Error):出现错误的百分比

  • 吞吐量(Throughput):被测试接口的吞吐能力

  • 发送与接收数据量:KB/sec

察看结果树

察看结果树

记录了样本中每一次的请求

汇总报告

类似于聚合报告。

线程组配置解析

  1. 线程数:用来发送http请求的线程数量

    线程组常用来模拟一组用户访问系统资源(接口)。如果接口响应速度快,就没必要使用太多线程数,如果响应慢,需要使用很多的线程,来测试接口能扛住的压力。如果客户机没有足够能力模拟较重负载,可以使用JMeter分布式压力测试。

  2. Ramp-up(in-seconds):建立全部线程耗时:

    代表隔多长时间执行,默认值是0,0代表同时并发,用于告知JMeter要在多长时间内建立全部线程。

  3. 循环次数:循环执行多少次操作

    循环次数直接决定整个测试单个线程的执行时间,和整体测试执行时间。

    单线程执行时间 = 单请求平均响应时间 * 循环次数

    整个测试耗时= 单线程执行时间 + (Ramp-Up - Ramp-UP / 线程数)

JMeter压测插件

Basic Graphs主要显示:

  • Average Response Time平均响应时间

  • Active Threads活动线程数

  • Successful/Failed Transactions成功/失败事务数

Additional Graphs主要显示

  • Response Codes

  • Bytes ThroughputConnect Times

  • Latency

  • Hits/s

开启插件下载

下载地址: https://jmeter-plugins.org/install/Install/,官网上下载plugins-manager.jar直接在线下载,然后执行在线下载即可。

下载插件

下载好后放到lib\ext下;

再把JMeter重启;

可以看到插件管理器:

插件管理器

下载如下两个插件:

下载两个插件

安装成功后添加如下三个监听器:

响应时间:jp@gc - Response Times Over Time

活动线程数:jp@gc - Active Threads Over Time

每秒事务数:jp@gc - Transactions per Second

添加监听器

性能关键指标分析

  • TPS:每秒的事务数

    数字愈大,代表性能越好;

  • QPS:每秒的查询数量

    数字愈大,代表性能越好(1TPS >= 1QPS)

  • 吞吐量:每秒的请求数量

    数字愈大,代表性能越好

文章转载自:随机的未知

原文链接:https://www.cnblogs.com/nicaicai/p/18079552

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构


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

相关文章:

  • 【Centos】在 CentOS 9 上使用 Apache 搭建 PHP 8 教程
  • Linux中使用NGINX
  • VisionPro —— CogPatInspectTool对比工具
  • 私有化视频平台EasyCVR视频汇聚平台接入RTMP协议推流为何无法播放?
  • ChatGPT 和 RAG(检索增强生成)的区别;ChatGPT 和 RAG 的联系
  • VirtualBox 解决虚拟机Cable Unplugged 无法上网问题
  • 【Unity】详细介绍
  • 【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图
  • lv17 BOA服务器搭建 4
  • YOLOv8改进 | 图像去雾 | MB-TaylorFormer改善YOLOv8高分辨率和图像去雾检测(ICCV,全网独家首发)
  • 字节-安全研究实习生--一面
  • 愚人节礼物(C++)
  • 第二十五章 Web Gateway 管理页面概述 - 可用选项
  • 详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议
  • 容器部署对比:通用容器部署 vs 使用腾讯云容器镜像服务(TCR)部署 Stable Diffusion
  • 十、MySQL主从架构配置
  • 【STL源码剖析】【2、空间配置器——allocator】
  • 09|代理(上):ReAct框架,推理与行动的协同
  • npm install 报错
  • login登录界面
  • C#,图论与图算法,无向图(Graph)回环(Cycle)的不相交集(disjoint)或并集查找(union find)判别算法与源代码
  • 【软考】系统集成项目管理工程师(二十一)法律法规和标准规范【1分】
  • 吴恩达深度学习环境本地化构建wsl+docker+tensorflow+cuda
  • 25考研|北大软微会「爆炸」吗?
  • 华为配置WAPI-PSK安全策略实验
  • MVC接收请求教程