news 2026/4/27 22:42:27

第1节:项目性能优化(上)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第1节:项目性能优化(上)

本章学习目标:

  1. 了解应用性能问题分析方法论;
  2. 掌握压力测试基础概念;
  3. 掌握压力测试:线程组配置,结果分析,插件使用;
  4. 理解性能关键的指标;

性能问题分析方法论

首先我们需要知道性能优化的终极目标是什么?

  • 用户体验 = 产品设计(非技术)+系统性能,也就是响应快;
  • 那么快是多久呢?3秒,不可以更久了!

接下来我们需要了解怎么才能让系统快起来

  • 前端工程师:首屏时间,白屏时间,可交互时间,完全加载时间;
  • 移动端工程师:端到端响应时间,Crash率,内存使用率,FPS;
  • 后端工程师:RT,TPS,并发数。

而作为后端工程师的我们,主要是观察后端性能调优方面:

  1. 影响因素1:数据库读写。RPC,网络IO。逻辑计算复杂度,缓存;
  2. 影响因素2:JVM。

什么是压力测试?

什么压力测试?

  • 压力测试:是针对特定系统或者组件,为确认其稳定性而特意进行的严格测试。会让系统在超时正常使用条件下运作,然后再确认其结果;
  • 所白了就是对系统不断施加压力,来预估系统负载能力的一种测试。

为什么需要对系统进行压力测试?

  • 一般而言,只有在系统基础功能测试验证完成,系统趋于稳定情况下,才会进行压力测试。

压测的目的是什么?

  1. 当负载逐渐增加时,观察系统各项性能指标的变化情况是否有异常;
  2. 发现系统的性能短板,进行针对性的性能优化;
  3. 判断系统在高并发情况下是否会报错,进程是否会挂掉;
  4. 测试在系统某个方面达到瓶颈时,粗略估计系统性能上限。

压力测试的指标有哪些?

指标

含义

响应时间(RT)

是指系统对请求作出响应的平均时间,对于单用户的系统,响应时间可以很好地度量系统的性能。

吞吐量(Throughput)

是指系统在单位时间内处理请求的数量每秒事务数TPS也算是吞吐量的一种。

资源利用率

CPU占用率,内存使用率,系统负载,网络IO。

并发用户数

是指系统可以同时承载的正常使用系统功能的用户的数量,用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求。

错误率

失败请求占比,在测试时添加响应断言,验证不通过记为错误;若不添加,响应码非200即为错误。

评判系统性能,主要考虑三个性能指标(RT,TPS,资源利用率)

我们需要知道其中的一些指标:

  • 两个点:最优用户并发数,最大并发用户数;
  • 三条线:RT,Throughput,资源利用率;
  • 三个区:轻负载,重负载,塌陷区;
  • 三种状态:资源饱和,吞吐量下降,用户受影响。

压力测试介绍

首先我们需要知道市场上主流的压力测试工具有哪些?

  • Apache JMeter 可视化的测试工具
  • LoadRunner 预测系统行为和性能的负载测试工具
  • Apache 的 ab 压力测试
  • nGrinder 韩国研发一款性能测试工具
  • PAS 阿里测试工具等等

而我们主要使用的就是Jmeter,其官方网站为:https://jmeter.apache.org/。

了解完市场上主要流行的压测工具之后,我们需要了解压测的目标是什么?

压测目标简单来说就4个:

  1. 负责上升各项指标是否正常;
  2. 发现性能短板;
  3. 高并发下系统是否文档;
  4. 预估系统最大负责。

压力测试案例

  1. 首先我们需要创建新的压测计划

  1. 然后配置线程组

  • 线程数:20,线程数量,这里设置了20个线程;
  • ramp-up:表示在指定时间之内把这些线程全部启动起来。如果n=1,那就表示要在1s以内把50个线程全部启动;
  • 循环次数:2000,表示把20thread循环2000次,也就是一个请求接口循环调用2000次。
  1. 然后测试HTPP接口

  1. 配置断言:
    1. 响应断言(判断响应内容是否包含指定的字符信息,用于判断api接口返回内容是否正确);

    1. 响应时间断言(判断响应时间,是否超过预期的时间,用于判断api接口返回时间是否超时过期);

  1. 配置结果监听:
    1. 聚合报告:查询结果信息聚合汇总,例如样本,平均值,吞吐量,最大值,最小值;
    2. 察看结果树:记录每一次压测请求;
    3. 图像结果:分享了所以请求的平均值,终止,偏离值和吞吐量之间的关系;
    4. 汇总结果:汇总压测结果;
    5. 汇总图:将压测结果以图像形式展示。

压测结果

聚合报告

  • 样本(sample):发送请求的总样本数量
  • 响应时间【单位 ms】
    • 平均值(average):平均的响应时间
    • 中位数(median):中位数的响应时间,50% 请求的响应时间
    • 90% 百分位(90% Line):90% 的请求的响应时间,意思是 90% 的请求是 <=1765ms 返回,另外 10% 的请求是大于等于 1765ms 返回的
    • 95% 百分位(95% Line):95% 的请求的响应时间,95% 的请求都落在 1920ms 之内返回的
    • 99% 百分位(99% Line):99% 的请求的响应时间
    • 最小值 (min):请求返回的最小时间,其中一个用时最少的请求
    • 最大值 (max):请求返回的最大时间,其中一个用时最大的请求
  • 异常(error):出现错误的百分比,错误率 = 错误的请求的数量 / 请求的总数
  • 吞吐量 TPS(throughout):吞吐能力
  • Received KB/sec:每秒从服务器端接收到的数据量
  • Sent KB/sec:每秒从客户端发送的请求的数量

察看结果树

每一次http请求结果

汇总图与图像结果

图形结果:分析了所以请求的平均值,终止,偏离值和吞吐量之间的关系

  • 横坐标;为请求数量,单位个数;
  • 纵坐标;响应时间,单位ms。

汇总报告

  • 样本(sample):发送请求的总样本数量
  • 响应时间【单位 ms】
    • 平均值(average):平均的响应时间
    • 最小值 (min):请求返回的最小时间,其中一个用时最少的请求
    • 最大值 (max):请求返回的最大时间,其中一个用时最大的请求
    • 标准偏差:度量响应时间分布的分散程度的标准,衡量响应时间 / 值偏离平均响应时间的程度。标准偏差越小,偏离越少,反之亦然。
  • 异常(error):出现错误的百分比,错误率 = 错误的请求的数量 / 请求的总数
  • 吞吐量 TPS(throughout):吞吐能力,这个才是我们需要的并发数
  • 每秒接收 KB/sec:每秒从服务器端接收到的数据量
  • 每秒发送 KB/sec:每秒从客户端发送的请求的数量
  • 平均字节数

Jmeter常用插件

为什么需要加入Jmeter插件?

  • TPS,QPS
  • PT【平均响应时间】
  • 压力机活动线程数
  • 服务器资源信息

插件下载地址:https://jmeter-plugins.org/downloads/all/

  1. PerfMon:监控服务器硬件,如 CPU,内存,硬盘读写速度等Allows collecting target server resource metrics
  2. Basic Graphs:主要显示平均响应时间,活动线程数,成功 / 失败交易数等
    • Average Response Time 平均响应时间
    • Active Threads 活动线程数
    • Successful/Failed Transactions 成功 / 失败 事务数
  1. Additional Graphs:主要显示吞吐量,连接时间,每秒的点击数等
    • Response Codes
    • Bytes Throughput
    • Connect Times
    • Latency
    • Hits/s
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 4:07:41

学习日记day51

Day51_1216专注时间&#xff1a;2H59min每日任务&#xff1a;2h复习数据库&#xff08;完成情况及时长&#xff1a;&#xff09;&#xff1b;1h二刷2道力扣hot100(如果是hard&#xff0c;只做一道就好&#xff0c;完成情况及时长&#xff1a;今天都在做算法题&#xff0c;也懈怠…

作者头像 李华
网站建设 2026/4/23 19:52:54

FlutterOpenHarmony商城App订单列表组件开发

前言 订单列表是商城应用中用户查看和管理订单的核心页面&#xff0c;用户可以在这里查看所有订单的状态、进行订单操作如取消、确认收货、申请退款等。一个设计良好的订单列表组件需要清晰地展示订单信息&#xff0c;并提供便捷的操作入口。本文将详细介绍如何在Flutter和Open…

作者头像 李华
网站建设 2026/4/23 14:58:52

了解陇南支腿凿岩机出厂行情查询报价享折扣

在矿山、隧道及大型基建工程中&#xff0c;凿岩设备的选型常因需求错配与参数混乱而陷入低效甚至停工风险。面对风动凿岩机、手持式气动凿岩机、气腿式凿岩机等众多品类&#xff0c;用户往往难以精准匹配作业场景与设备性能——尤其在陇南这类地形复杂、岩石硬度多变的区域&…

作者头像 李华
网站建设 2026/4/27 4:47:05

金仓新势力:不止兼容,三重革新引领数据库未来

兼容 是对企业历史投资的尊重 是确保业务平稳过渡的基石 然而 这仅仅是故事的起点 在数字化转型的深水区&#xff0c;企业对数据库的需求早已超越“语法兼容”的基础诉求。无论是核心业务系统的稳定运行&#xff0c;还是敏感数据的安全防护&#xff0c;亦或是复杂场景下的性能优…

作者头像 李华
网站建设 2026/4/27 11:32:28

AI agent 最新 进展

AI Agent 最新进展&#xff08;2025 年 12 月&#xff09; 一、巨头竞相发布新一代 Agent 1. 谷歌&#xff1a;Gemini Deep Research Agent&#xff08;12 月 11 日&#xff09; 性能突破&#xff1a;在 "人类最后的考试"(HLE) 测试中达46.4%&#xff0c;超越 GPT-5 …

作者头像 李华
网站建设 2026/4/23 18:43:55

代码之恋(第十三篇:尴尬的Rollback与甜蜜的Backup)

周二的办公室&#xff0c;气氛微妙得像刚推送的代码等待CI通过。李磊和艾丽的"公开merge"已经传遍了公司茶水间&#xff0c;有人窃窃私语&#xff0c;有人投来羡慕的目光。但尴尬的事&#xff0c;从早餐时间就开始了。李磊端着两杯咖啡走进办公室&#xff0c;一杯给艾…

作者头像 李华