项目性能优化—使用JMeter压测SpringBoot项目
项目性能优化—使用JMeter压测SpringBoot项目
我们的压力测试架构图如下:

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

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

进行配置

一共会发生4万次请求。
ctrl + s保存;
添加http请求:

配置http请求:

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

正常响应如下:


添加断言持续时间


添加察看结果树:

添加汇总报告:

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

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

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

发送请求测试
发送请求

压力测试结果解析
聚合报告

- 样本(Sample):发送请求的总样本数量
- 响应时间(RT):平均值,P90,P95,P99,Min,Max
- 异常(Error):出现错误的百分比
- 吞吐量(Throughput):被测试接口的吞吐能力
- 发送与接收数据量:KB/sec
察看结果树

记录了样本中每一次的请求
汇总报告
类似于聚合报告。
线程组配置解析
线程数:用来发送http请求的线程数量
- 线程组常用来模拟一组用户访问系统资源(接口)。如果接口响应速度快,就没必要使用太多线程数,如果响应慢,需要使用很多的线程,来测试接口能扛住的压力。如果客户机没有足够能力模拟较重负载,可以使用JMeter分布式压力测试。
Ramp-up(in-seconds):建立全部线程耗时:
代表隔多长时间执行,默认值是0,0代表同时并发,用于告知JMeter要在多长时间内建立全部线程。
循环次数:循环执行多少次操作
- 循环次数直接决定整个测试单个线程的执行时间,和整体测试执行时间。
- 单线程执行时间 = 单请求平均响应时间 * 循环次数
- 整个测试耗时= 单线程执行时间 + (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)
吞吐量:每秒的请求数量
数字愈大,代表性能越好
项目性能优化—使用JMeter压测SpringBoot项目的更多相关文章
- 性能工具之Jmeter压测Hprose RPC服务
概述 Hprose(High Performance Remote Object Service Engine),国人开发的一个远程方法调用的开源框架.它是一个先进的轻量级的跨语言跨平台面向对象的高性 ...
- 性能工具之Jmeter压测Thrift RPC服务
概述 Thrift是一个可互操作和可伸缩服务的框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, ...
- 【Java分享客栈】未来迈向高级工程师绕不过的技能:JMeter压测
前言 因为工作需要,久违的从自己的有道云笔记中去寻找压测相关的内容,翻开之后发现还不错,温故一遍后顺便整理出来分享给大家. 题外话,工作8年多,有道云笔记不知不觉都6G多了,扫一眼下来尽是云烟过往,竟 ...
- 一文揭秘测试平台中是如何将测试用例一键转化Jmeter压测脚本
接上篇,一键转化将接口测试平台测试用例转化成Jmeter压测脚本思路,这里我首先在java 上面做了一个简单的实验,看看 转化的中间遇到的问题,这里呢,我只是给了一个简单的demo 版本, ...
- JMeter压测分布式部署
监控JMeter压力机的性能
- windows下Jmeter压测端口占用问题
https://blog.csdn.net/weixin_43757847/article/details/88188091 1 前情提要人脸识别项目中,云平台新增了人脸识别的校验接口.考虑到存在大量 ...
- jmeter压测、操作数据库、分布式linux下运行、webservice接口测试、charles抓包
一.jmeter压测 在线程组中设置好,然后添加http请求,t添加聚合报告查看压力测试结果,如图: 一般压测时间10-15分钟,如果是稳定性测试,一般n*12小时,这些并发用户一直在请求. tps: ...
- windows下Jmeter压测端口占用问题(亲测有效)
windows下Jmeter压测端口占用问题 1 报错信息描述 压测的初期,在设置了 150qps/s 的并发数下压测几分钟后 Jmeter 就出现了如下报错. JAVA.NET.BINDEXCEPT ...
- jmeter压测、操作数据库、分布式、 linux下运行的简单介绍
一.jmeter压测 1.如何压测 常规性能压测:10-15分钟 稳定性测试:一周.2天等 如果想要压测10分钟,勾选永远,勾选调度器,填写600秒.也可以使用固定启动时间. 2.tps.响应时间 ( ...
- jmeter压测app
使用代理的方式,录制app端脚本,之后用jmeter压测就没啥好说的了 1.电脑端谷歌设置本地代理(端口号为8888) 2.jmeter设置HTTP代理服务器(端口号为8888) 3.手机端wifi设 ...
随机推荐
- Python 字典与集合
字典(Dictionary) 字典介绍 字典是"键值对"的无序可变序列,字典中的每个元素都是一个"键值对",包含:"键对象"和"值 ...
- Power BI 9 DAY
图形决策树
- 2023年多校联训NOIP层测试3+「SFCOI-3」Sadness Fan Club Round 3
2023年多校联训NOIP层测试3 T1 数列变换 \(10pts\) 考虑暴力,发现 \(f\) 数列进行一次变换 \(A\) ,再进行一次变换 \(B\) 后,恢复成了原数列: \(f\) 数列进 ...
- test-02-java 单元测试框架 junit5 入门介绍
拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息 ...
- C# readonly修饰符
readonly修饰符在作祟 强化官方解释: readonly是一个修饰字段的关键字:被它修饰的字段只有在初始化或者构造函数中才能够赋值. readonly修饰的引用类型字段必须始终引用同一对象: r ...
- 麒麟系统开发笔记(五):制作安装麒麟系统的启动U盘、物理机安装麒麟系统以及搭建Qt开发环境
前言 电脑从U盘装麒麟系统,搭建实机Qt开发运行环境. 制作麒麟系统U盘(使用LiveUSB) 步骤一:先准备个至少8GB的U盘 之前购买的一批联想U盘,如下图: 查看U盘: 步 ...
- git commit 不生成 changeId 解决方案
1). 检查仓储 .git/hook 下面是否有 commit-msg 文件,如果没有可以到下面的地址下载,或者把其他同事的 commit-msg 文件拷贝到你的 .git/hook 重新commit ...
- 【转载】重装系统小贴士:ssh、vscode免密登录
ssh安装 apt install openssh-server 然后到cd /etc/ssh下找sshd_config文件,打开把允许远程root登录的选项改为yes 重启ssh服务:/etc/in ...
- 【Azure 应用服务】在安全漏洞扫描中发现有泄露服务器IIS版本的情况,如何实现屏蔽服务版本号信息呢?
问题描述 当对Azure App Service应用进行安全扫描时,发现了HTTP/S请求的响应头中会包含服务端IIS的版本信息,这是一个低风险因素. 如: Server: Microsoft-IIS ...
- 从 Neo4j 导入 Nebula Graph 实践见 SPark 数据导入原理
本文主要讲述如何使用数据导入工具 Nebula Graph Exchange 将数据从 Neo4j 导入到 Nebula Graph Database.在讲述如何实操数据导入之前,我们先来了解下 Ne ...