轻松get压力测试指南

身为后端程序员怎么也要会一点压力测试相关的技术吧, 不然无脑上线项目万一项目火了进来大量请求时出现程序执行缓慢, 宕机等情况你肯定稳稳背锅, 而且这个时候短时间内还没办法解决, 只能使用物理扩容CPU, 内存, 更换网络等几种方式来解决问题, 妥妥的为公司增加支出好吧, 下一个被开的就是你都是想跑路拿高薪的打工仔, 身上怎么可以背负污点, 赶紧学一手压力测试进行保命, 我先学为敬。

本篇文章主打一个学完就会, 奥利给!

🎯 性能调优对各个开发岗位的区别

各个岗位对性能调优的关键节点

  • 首屏时间: 初次访问项目等待加载时间

  • 白屏时间: 刷新页面到数据全部展示时间

  • 可交互时间

  • 完全加载时间

  • RT: 响应时间

  • TRS: 每秒事务数

  • 并发数: 这应该不会解释了吧

  • 端到端相应时间

  • Crash率

  • 内存使用率

  • FPS

  • 前端工程师:

  • 后端工程师:

  • 移动端工程师

 

🎯 影响性能的关键要素

  • 产品逻辑

  • 功能交互

  • 动态效果

  • 页面元素

  • 架构不合理

  • 研发功底和经验不足

  • 没有性能意识: 只实现功能不注重代码性能, 当业务上量后系统出现连锁反应, 导致性能问题增加

  • 数据库: 慢查询, 过多查询, 索引使用不当, 数据库服务器瓶颈

  • 设备类型&性能

  • 系统版本

  • 网络(WiFi, 2G, 3G, 4G, 5G)

  • 硬件及云服务(服务器硬件, CPU, 内存..)

  • 产品设计

  • 基础网络

  • 代码质量&架构

  • 用户移动端环境

01 初步了解压力测试

🎯 1.1压力测试是什么

图片

🎯 1.2压力测试的目的

🎯1.3压力测试的指标

指标含义
相应时间(RT)是指系统对请求作出响应的平均时间, 对于单用户的系统, 响应时间可以很好地度量系统的性能
吞吐量(Throughput)是指系统在单位时间内处理的数量, 每秒事务数TPS 也算是吞吐量的一种
资源利用率CPU占用率, 内存使用率, 系统负载, 网络IO
并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量, 用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求
错误率失败请求占比, 在测试时添加响应断言, 验证不通过即标记为错误, 若不添加, 响应码非200则为错误

图片

上图充分的展示了响应时间, 吞吐量, 利用率和并发用户数之间的关系。

随着并发用户的增加经过轻负载区, 达到最优并发数, 此时利用率高,吞吐量高, 响应时间短。

但是如果用户数继续增加, 就会到达重负载区, 此时性能最大化, 但是当超过某一临界值(最大并发数)之后, 响应时间会急剧增加, 利用率平缓, 吞吐量急速下降。

我们进行压测的目的主要就是测试出这个临界值的大小, 或者说, 我们系统当前能承受住的最大并发数。

02 压力测试工具JMeter

老规矩, 先来一波软件介绍 JMeter是 Apache组织开发的基于 Java的开源压力测试工具, 具有体积小, 功能全, 使用方便等特点. 最初被设计用于 Web应用测试, 后来被扩展到其他测试领域.

  • Apache JMeter可视化的测试工具

  • LoadRunner 预测系统行为和性能的负载测试工具

  • Apache的 ab压力测试

  • nGrinder韩国研发的一款性能测试工具

  • PAS阿里测试工具

  • 负载上升各项指标是否正常

  • 发现性能短板

  • 高并发下系统是否稳定

  • 预估系统最大负载

  • 常用压测工具:

  • 压测目标:

🎯 2.1安装 JMeter

图片

官网地址: jmeter.apache.org/

图片

熟悉的download, 点他

图片

开始下载(是真的慢)

图片

解压之后进入 bin目录下, 双击 jmeter.bat, 就可以启动 JMeter了

图片

上图可以看出, 在我们第一次打开界面时是英文的, 多少有点不友好, 接下来讲解一下怎么将语言更改为中文

🎯 2.2设置 JMeter界面为中文

还是我们的 bin目录下, 有一个 jmeter.properties文件

图片

双击打开, 搜索 language

图片

去除 #号, 值更改为 zh_CN, 保存文件然后重启软件(双击jmeter.bat)

图片

可以看到, 我们的 jmeter成功更改为了中文界面, 这对于我这种英语白痴来说是很舒服的

图片

🎯 2.3初步使用 JMeter

我们先随便创建一个测试用例, 就是简单测试, 同时讲解一下常用的参数

本次测试采用 20线程, 1秒启动时间, 循环100次, Get请求

2.3.1 创建线程组

图片

图片

  • 持续时间: 该任务执行的时间

  • 启动延迟: 等待多少秒开始执行

  • 线程数: 虚拟的用户数, 一个用户占一个线程

  • Ramp-Up: 等待时间, 设置的虚拟用户(线程数)需要多长时间全部启动

  • 循环次数: 单个线程发送请求的次数

  • 调度器:

2.3.2 创建 http请求

右键线程组-添加HTTP请求

图片

这个中文讲解的很明白, 应该都看得懂的, 有疑问的评论区留言

图片

2.3.3 结果树

图片

线程组右键-添加-监听器-查看结果树

图片

图片

执行结果分析(启动之后显示界面)

图片

列表列出了每一次的HTTP请求, 绿色的是成功, 红色的话就是失败

  • Thread Name:线程组名称

  • Sample Start: 启动开始时间

  • Load time:加载时长

  • Latency:等待时长

  • Size in bytes:发送的数据总大小

  • Headers size in bytes:发送数据的其余部分大小

  • Sample Count:发送统计

  • Error Count:交互错误统计

  • Response code:返回码

  • Response message:返回信息

  • Response headers:返回的头部信息

  • 取样器结果参数详解

  • 基本数据

  • 入参

  • 请求头

  • 响应码

  • 响应头

  • 请求

  • 相应数据

2.3.4 聚合报告

线程组右键-添加-监听器-聚合报告

图片

执行结果分析(启动之后界面)

图片

参数解释

  • 样本: 并发量

  • 平均值: 接口请求用时(单位毫秒)

  • 中位数: 请求用时中位数(单位毫秒), 例如2000请求以请求时间排序, 排名1000的用时时长

  • 90%百分位, 95%百分位, 99%百分位和中位数同理

  • 最小, 最大值: 请求用时最小和最大

  • 异常% : 请求中异常的百分比

  • 吞吐量: 单位时间内请求次数

2.3.5 图形结果

线程组右键-添加-监听器-图形结果

图片

执行结果分析(启动之后显示界面)

图片

  • 样本数目:总共发送到服务器的请求数。

  • 最新样本:代表时间的数字,是服务器响应最后一个请求的时间。

  • 吞吐量:服务器每分钟处理的请求数。

  • 平均值:总运行时间除以发送到服务器的请求数。

  • 中间值:有一半的服务器响应时间低于该值而另一半高于该值。

  • 偏离:表示服务器响应时间变化、离散程度测量值的大小。

2.3.6 断言

断言主要用来判断结果返回是否符合预期

线程组右键-添加-断言-响应断言

图片

图片

假设我们接口的返回状态码字段为code, 200为成功, 那么就可以在断言这里进行配置, 来判断请求是否成功

图片

03 JMeter插件

3.1 插件安装

首先说明 JMeter是不支持插件的, 所以我们先要 JMeter的插件允许插件下载, 这句话多少有点拗口

网址: Install :: JMeter-Plugins.org

图片

点击上图红框即可下载插件, 前面说过了 JMeter是 Java8开发的, 插件对应的也是一个 jar包

图片

下好之后就可以放在 JMeter安装目录下的 lib/ext/ 下了, 具体下载页面也有说明

图片

上述操作结束之后, 在选项里面就可以看到插件中心Plugins Manager

图片

弹出以下界面, 点击 Available Plugins搜索我们需要的插件Basic GraphsAdditional Graphs, 勾选上, 然后安装

图片

Basic Graphs主要显示显示平均响应时间,活动线程数,成功/失败交易数等

图片

Additional Graphs主要显示吞吐量,连接时间,每秒的点击数等

图片

在安装成功之后, 在监听器会相应的多出很多的 jc开头的, 这就代表安装成功了

图片

图片

04 Linux硬件监控

在压测过程中, 我们需要实时了解服务器的CPU, 内存, 网络, 服务器负载等情况的变化, 这个时候我们就需要对我们的 Linux系统进行监控, 通常来讲, 我们查询 Linux系统的资源占用情况可以使用以下几种方法

  • 使用命令: top, iostat, iotop等

  • 使用 Linux远程连接工具 FinalShell等

  • 宝塔

  • JMeter压测工具 PerfMon

在 JMeter中, 如果需要监控服务器硬件, 那么我们还需要安装 PerfMon插件

图片

PerfMon监控服务器硬件,如CPU,内存,硬盘读写速度等

进入下述地址开始下载监控包: github.com/undera/perf…

图片

下载好之后我们可以直接解压放到服务器上, 会看到有两个startAgent文件, 分别是Windows系统和Linux系统的启动脚本

图片

我们直接启动就可以了, 如果脚本启动连接不上的话可以考虑更改脚本内容

例: Linux系统脚本更改为以下内容

图片

启动成功之后, 脚本同级路径下会多出 log.log的日志文件

图片

然后我们就可以配置 JMeter了, 线程组-监听器-jp@gc - PerfMon Metrics Collector

图片

图片

我是在本地启动了ServerAgent.bat进行测试, 执行结果如下所示:

图片

图片

具体的配置指标信息建议看官方文档, 太多了.... github.com/undera/perf…

图片

图片

ServerAgent闪退问题

Windows系统配置好ServerAgent启动之后窗口闪退可能是 jre版本问题, 可以从下面的链接下载老版的 jre

www.aliyundrive.com/s/Yzw3DZ74w…

下载好之后, 建议安装目录设置在ServerAgent/jre

图片

并更改startAgent.bat脚本, cd 到老版本 jre路径

图片

 行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 1150305204,里面有各种测试开发资料和技术可以一起交流哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/307667.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中年危机与自我成长职业女性的心理转型之路

中年危机与自我成长:职业女性的心理转型之路 案例:李女士,45岁,职业女性 李女士是一位职业女性,人到中年,她突然感到自己的生活仿佛失去了方向。她来找我咨询,希望能够找到一条心理转型的道路&a…

第87讲:XtraBackup备份工具的核心技术要点及全库备份、恢复案例

文章目录 1.XtraBackup备份工具的简介2.XBK备份工具的安装3.XBK备份工具的使用语法4.XBK备份前的准备5.使用XBK对全库进行备份5.1.XBK备份全库数据的语法格式5.2.使用XBK进行全库备份5.3.查看XBK备份的数据文件5.4.备份过程中生产的XBK文件 6.模拟故障案例并使用XBK恢复备份的数…

从传统部署到无服务器计算:AI应用在AWS平台上的革新与飞跃

文章目录 《快速构建AI应用–AWS无服务器AI应用实战》内容简介作者简介目录 随着人工智能技术的不断发展,越来越多的企业开始将人工智能应用于各个业务场景,以提高效率、降低成本并创造新的商业模式。然而,传统的人工智能解决方案往往需要大量…

数字化工厂产品推荐 带OPC UA的分布式IO模块

背景 近年来,为了提升在全球范围内的竞争力,制造企业希望自己工厂的机器之间协同性更强,自动化设备采集到的数据能够发挥更大的价值,越来越多的传统型工业制造企业开始加入数字化工厂建设的行列,实现智能制造。 数字化…

Linux系统操作——tcping安装与使用

目录 .一、安装 1、安装依赖 tcptraceroute和bc 2、安装tcping 3、赋予tcping执行权限 4、测试 5、tcping返回结果说明 二、使用说明(参数) 一、安装 1、安装依赖 tcptraceroute和bc 【 CentOS 或 RHEL】 sudo yum install -y tcptraceroute bc…

快递批量查询神器,一键自动识别快递公司并实时追踪

想象一下,你有一堆快递单号需要查询,一个个复制粘贴简直让人崩溃!现在,有了我们的快递批量查询神器,这些烦恼全部消失! 首先第一步,进入快递批量查询高手主页面之后,点击“高级设置…

kafka: 基础概念回顾(生产者客户端和机架感知相关内容)

一、kafka生产者客户端 在kafka体系结构中有如下几个重要的概念: Producer:生产者,负责生产消息并投递到kafka broker的某个的分区中Consumer:消费者,负责消费kafka若干个分区中的消息Broker:kafka服务节…

20240110-你是成年人了,你的精力要用来赚钱

丘吉尔曾经说过:从让一个人生气事情的大小,就能看出一个人的价值。我觉得这句话很有道理。为什么有的人动不动就生气?而有的人却对一些冒犯做到丝毫不在乎? 我们经常就一些鸡毛蒜皮的事情去计较,其实很多事情不值得我…

格雷希尔G65系列快速接头满足汽车减震器的气压、油压测试要求

当汽车经过不平路面时,汽车减震器可以抑制弹簧吸震后因反弹带来的震荡和来自路面的冲击,为乘客带来平稳舒适的行车体验。减震器在出厂之前,需要模拟汽车的真实行驶环境,在模拟当中需要对它们进行气压和油压的轮番测试。 客户的测试…

LLaMA-VID:突破视觉语言模型界限,精准捕捉图像精髓

模型概述 LLaMA-VID模型的主要目标是解决现有视觉语言模型在处理长时视频时遇到的挑战。这些挑战主要包括处理大量视觉特征所需的高计算资源以及信息的复杂性和冗余性。为了克服这些难题,LLaMA-VID采用了创新的方法,有效地减少了长时视频中无关紧要信息…

vue echarts折线图加背景颜色 值区域对应的右侧加上文本

mounted() {this.lineEcharts();},lineEcharts() {const option { tooltip: {trigger: axis,transitionDuration: 0 // 让toolltip紧跟鼠标,防止抖动},title: {text: 得分,left: 25,textStyle:{color: #333,fontSize: 12,fontWeight: 400}, },legend:…

Alphalens因子分析(2) - 低换手率因子秒杀98%的基金经理?

上一篇笔记,我们已经为因子分析准备好了数据。这一篇笔记,我们就进行因子分析。分析过程在 Alphalens 中非常简单,核心是读懂它的报告。 Alphalens 框架 Alphalens 的主要模块是 utils, tears, performance 和 plotting。 utils 主要功能是…

elementui dialog 回车时却刷新整个页面

到处都是坑,这个坑填完另一个坑还在等你。。。坑坑相连,坑坑不同。。。 使用el-dialog弹出一个表单,当我无意间敲到回车键时,整个页面被刷新了,又是一脸的懵逼。。。 经过查找文档发现解决方案为上述截图标记。。。 e…

SaaS先驱Salesforce发展史

Salesforce是云计算和SaaS领域的先驱,大致经过5个不同发展阶段 第一个阶段:SaaS CRM发展初期 Salesforce成立时间是1999年,其SaaS业务的Idea的灵感起源于IaaS巨头亚马逊。初期标榜的竞品Siebel早期投入高、很难上手、功能过于复杂、实用性不强…

C语言之详解数组【附三子棋和扫雷游戏实战】

文章目录 一、一维数组的创建和初始化1、数组的创建2、数组的初始化3、一维数组的使用4、 一维数组在内存中的存储 二、二维数组的创建和初始化1、二维数组的创建2、二维数组的初始化3、二维数组的使用4、二维数组在内存中的存储 三、数组越界边界值考虑不当导致越界访问数组大…

龍运当头--html做一个中国火龙祝大家龙年大吉

🐉效果展示 🐉HTML展示 <body> <!-- partial:index.partial.html --> <svg><defs><g id=

推荐VSCODE插件:为`package.json`添加注释信息

众所周知&#xff0c;JSON文件是不支持注释的&#xff0c;除了JSON5/JSONC之外&#xff0c;我们在开发项目特别是前端项目时&#xff0c;大量会用到JSON文件&#xff0c;特别是在编写package.json中的scripts时&#xff0c;由于缺少注释,当有大量的命令脚本时&#xff0c;就有了…

【REST2SQL】07 GO 操作 Mysql 数据库

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】06 GO 跨包接口重构代码 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xf…

【Spring Boot】SpringBoot maven 项目创建图文教程

创建一个Spring Boot项目并使用Maven进行构建是一项相对简单的任务。以下是使用IntelliJ IDEA创建Spring Boot Maven项目的详细教程&#xff1a; 步骤 1&#xff1a;安装 IntelliJ IDEA 确保你已经安装了最新版本的 IntelliJ IDEA。你可以从官方网站下载并安装。 步骤 2&am…

构建高效学习平台:企业培训系统源码深度解析

企业培训系统是组织中培养和提升员工技能的核心工具。本文将深入探讨企业培训系统的源码&#xff0c;通过关键技术代码解析&#xff0c;揭示其中的设计原理和功能实现&#xff0c;以构建更高效的学习平台。 1. 环境配置与依赖项安装 首先&#xff0c;让我们关注源码的环境配…