项目性能优化—使用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.mzph.cn/news/753216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费开源、支持自建服务的团队协作、个人学习文档管理系统

大家好,我是小麦。今天来给大家分享的是几款个人使用过的免费、开源、适合团队协作的文档管理工具,并且是完全支持自己搭建服务的文档管理系统。 相信大家在学习、办公等场景下对文档管理工具使用的场景是比较多的,例如技术开发手册、个人学…

SpringBoot(数据库操作 + druid监控功能)

文章目录 1.JDBC HikariDataSource(SpringBoot2默认数据源)1.数据库表设计2.引入依赖 pom.xml3.配置数据源参数 application.yml4.编写一个bean,映射表5.编写测试类来完成测试1.引入依赖 pom.xml2.使用JdbcTemplate进行测试3.成功&#xff0…

【C语言】打印闰年

输⼊⼀个年份year,判断year是否是闰年 闰年判断的规则: 1, 能被4整除并且不能被100整除是闰年 2,能被400整除是闰年 结合起来如下: if ((year % 4 0 && year % 100 ! 0) || (year % 400 0)) 代码如下&…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的交通信号灯识别系统(深度学习+UI界面+训练数据集+Python代码)

摘要:本研究详细介绍了一种采用深度学习技术的交通信号灯识别系统,该系统集成了最新的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5等早期算法进行了性能评估对比。该系统能够在各种媒介——包括图像、视频文件、实时视频流及批量文件中——准确地…

Python从COCO数据集中抽取某类别的数据

1、问题描述 今天需要训练一个人工智能检测模型,用于检测图片或视频中的人。自行收集训练数据费时费力,因而选择从公开数据集COCO中进行抽取。 2、数据准备 2.1 下载 COCO2017 数据集 train:http://images.cocodataset.org/zips/train2017.zip valid…

2023年蓝桥杯省赛——幸运数字

目录 题目链接:0幸运数字 - 蓝桥云课 (lanqiao.cn) 解法 思路 高级思路 总结 题目链接:0幸运数字 - 蓝桥云课 (lanqiao.cn) 解法 首先是我写了差不多一个小时的解法,裂开了,为什么我如此废物 思路 寻找第2023个在二进制、八…

http协议的历史与基本概念

文章目录 历史和发展起源:HTTP/0.9(1991年):HTTP/1.0(1996年,RFC 1945):HTTP/1.1(1997年,RFC 2068;1999年更新为RFC 2616)&#xff1a…

「连载」边缘计算(三十三)03-15:边缘部分源码(源码分析篇)

(接上篇) 初始化porxy,具体如下所示。 KubeEdge/edgemesh/pkg/proxy/proxy.go // Init: init the proxy. create virtual device and assign ips, etc.. func Init() { go func() { unused make([]string, 0) addrByService &addrTab…

【MIT 6.S081】2020, 实验记录(9),Lab: file system

目录 Task 1:Large filesTask 2:Symbolic links2.1 增加一个系统调用 symlink2.2 新增文件类型2.3 新增 NOFOLLOW 标志位2.4 实现 sys_symlink 系统调用2.5 修改 sys_open 函数2.6 测试 Task 1:Large files 现在的 xv6 系统中,一…

算法——贪心算法

《算法图解》——贪心算法 # 首先创建一个表,包含所覆盖的州 states_needed set([mt,wa,or,id,nv,ut,az]) # 传入一个数组,转换成一个集合#可供选择的广播台清单 stations {} stations[kone] set([id,nv,ut]) #用集合表示想要覆盖的州,且不…

线程的通俗解释

------------------------------------------------------------ author: hjjdebug date: 2024年 03月 17日 星期日 17:04:47 CST descpriton: 线程的通俗解释 ------------------------------------------------------------ 目录: 1. 什么是线程? 2. 线程函数长…

EMQX 4.0和EMQX 5.0集群架构实现1亿MQTT连接哪些改进

EMQX 5.0水平扩展能力得到了指数级提升,能够更可靠地承载更大规模的物联网设备连接量。 在EMQX5.0正式发布前的性能测试中,我们通过一个23节点的EMQX集群,全球首个达成了1亿MQTT连接每秒100万消息吞吐,这也使得EMQX 5.0成为目前为…

Jenkins流水线将制品发布到Nexus存储库

1、安装jenkins(建议别用docker安装,坑太多) docker run -d -p 8089:8080 -p 10241:50000 -v /var/jenkins_workspace:/var/jenkins_home -v /etc/localtime:/etc/localtime --name my_jenkins --userroot jenkins/jenkins:2.449 坑1 打开x…

Python使用 k 均值对遥感图像进行语义分割

本篇文章介绍K-means语义分割来估计 2000 年至 2023 年咸海水面的变化 让我们先看一下本教程中将使用的数据。这是同一地区的两张 RGB 图像,间隔 23 年,但很明显地表特性和大气条件(云、气溶胶等)不同。这就是为什么我决定训练两个独立的 k-Means 模型,每个图像一个。 首…

仰卧起坐计数,YOLOV8POSE

仰卧起坐计数,YOLOV8POSE 通过计算膝盖、腰部、肩部的夹角,计算仰卧起坐的次数

JavaScript爬虫进阶攻略:从网页采集到数据可视化

在当今数字化世界中,数据是至关重要的资产,而网页则是一个巨大的数据源。JavaScript作为一种强大的前端编程语言,不仅能够为网页增添交互性,还可以用于网页爬取和数据处理。本文将带你深入探索JavaScript爬虫技术的进阶应用&#…

[江苏工匠杯]easyphp

先看源码 <?php highlight_file(__FILE__); $key1 0; $key2 0; ​ $a $_GET[a]; $b $_GET[b]; ​ if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){if(isset($b) && 8b184b substr(md5($b),-6,6)){$key1 1;}else{die("…

centos8作为虚拟机镜像时yum报错

使用yum安装时出现如下错误&#xff1a; Errors during downloading metadata for repository AppStream:- Status code: 404 for http://mirrors.cloud.aliyuncs.com/centos/8/AppStream/x86_64/os/repodata/repomd.xml (IP: 100.100.2.148) Error: Failed to download metad…

助力企业跨越地域限制,实现业务全球化与数字化升级

驱动跨行业数字化转型与全球化互联实践》 中国联通作为中国领先的电信运营商&#xff0c;在物联网领域不断创新&#xff0c;尤其在跨境物联网产品解决方案上取得了显著成果&#xff0c;已经成功服务于各行各业&#xff0c;实现了全球化业务的有效链接与智能化管理。以下将详述…

Day19 包装类 Integer底层

Day19 包装类 Integer底层 一、包装类 1、概念&#xff1a; 包装类&#xff08;Wrapper Class&#xff09;是一种用于将基本数据类型转换为对象的类。Java中的基本数据类型&#xff08;如int、char、boolean等&#xff09;是非对象的&#xff0c;为了能够在需要对象的上下文中…