项目性能优化—性能优化的指标、目标

项目性能优化—性能优化的指标、目标

性能优化的终极目标是什么

性能优化的目标实际上是为了更好的用户体验:

一般我们认为用户体验是下面的公式:

用户体验 = 产品设计(非技术)+ 系统性能 ≈ 系统性能 = 快

那什么样的体验叫快呢?

3秒定理

一般我们认为网站页面的加载速度在3秒以内就可以称作合格了,加载速度越趋近于0,越快。

3秒定理:Strangeloop在对比了众多网站,并对其性能进行分析之后得出了一个著名的3秒定理,当网站页面加载速度超过3秒后,57%的访客会离开这个网站。

如果想让我们的系统快起来,就要做性能调优。

项目性能优化

以下可以做为优化的标准:

  • 前端工程师:首屏时间、白屏时间、可交互时间、完全加载时间;
  • 移动端工程师:端到端响应时间、Crash率、内存使用率、FPS;
  • 后端工程师:RT、TPS、并发数。
    • 影响因素1:数据库读写、RPC、网络IO、逻辑计算复杂度、缓存
    • 影响因素2:JVM[Throughput吞吐量、Footprint访存足迹、Latency延迟]

影响性能的关键要素

  • 产品设计:产品逻辑、功能交互、动态效果、页面元素
  • 基础网络:网络=连接介质+计算终端
  • 代码质量&架构
  • 移动端环境:设备类型&性能、网络
  • 硬件及云服务:服务器硬件等

我们怎么去分析性能因素呢,就是既不要去做过度的优化,也不要让某个内容作为短板。

我们怎么找到系统的短板在哪里呢?就是需要进行压力测试。

压力测试

什么是压力测试

压力测试:压力测试是针对特定系统或者组件,为要确认其稳定性而特意进行的严格测试。会让系统在超过正常使用条件下运作,然后再确认其结果。

实际上就是对系统不断施加压力,来预估系统负载能力的一种测试。

什么时候做压测

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

压测目的

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

压测的指标

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

响应时间、并发用户数、吞吐量、资源使用率存在一定关系,如下图:

 响应时间、并发用户数、吞吐量、资源使用率关系图

图的解释:

线走势:
  • 绿线:随着用户增长,资源利用率会提升;

  • 紫线:随着用户增长,吞吐量会上升,然后下降;

  • 蓝线:随着用户增长,响应时间的变化趋势;

区域

图中有三个区域:轻负载区、重负载区、塌陷区。

两个横坐标点

第一条虚线的横坐标:最优并发用户数;

第二条虚线的横坐标:最大并发用户数。

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

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

相关文章

交换机/路由器的存储介质-华三

交换机/路由器的存储介质-华三 本文主要介绍网络设备的存储介质组成。 ROM(read-only memory,只读存储器) 用于存储 BootROM程序。BootROM程序是一个微缩的引导程序,主要任务是查找应用程序文件并引导到操作系统,在应用程序文件或配置文件出…

Learn OpenGL 10 Assimp+网格+模型

Assimp 一个非常流行的模型导入库是Assimp,它是Open Asset Import Library(开放的资产导入库)的缩写。Assimp能够导入很多种不同的模型文件格式(并也能够导出部分的格式),它会将所有的模型数据加载至Assim…

WebAssembly探索篇(四)emcc和cmake编译opencv复杂案例

文章目录 开发环境工程目录CMakeLists.txtmain.cpp web端index.html效果图 遇到的问题JS与C传值Uncaught TypeError: Module._malloc is not a functioncanvas像素RGBA四通道 经验&&教训参考 最近因为项目原因,研究了一下WebAssembly。2015年上线与JS、HTML…

C语言——详解字符函数和字符串函数(一)

Hi,铁子们好呀!今天博主来给大家更一篇C语言的字符函数和字符串函数~ 具体讲的内容如下: 文章目录 🎆1.字符分类函数💯💯⏩1.1 什么是字符分类函数的?💯💯⏩1.2 字符函数的类型有哪…

基于Python的中医药知识问答系统设计与实现

[简介] 这篇文章主要介绍了基于Python的中医药知识问答系统的设计与实现。该系统利用Python编程语言,结合中医药领域的知识和技术,实现了一个功能强大的问答系统。文章首先介绍了中医药知识的特点和传统问答系统的局限性,然后提出了设计思路…

【Java探索之旅】运算符解析 算术运算符,关系运算符

🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一、什么是运算符二、算术运算符2.1 基本四则运算(-*/%)2.2 增…

ThreadLocal基本原理

ThreadLocal基本原理 一、定义 ThreadLocal是java中所提供的线程本地存储机制,可以利用改机制将数据缓存在线程内部,该线程可以在任意时刻、任意方法中获取数据 二、底层原理 ThreadLocal底层是通过ThreadLocalMap来实现的,每个Thread对象中…

Java代码基础算法练习---2024.3.14

其实这就是从我学校的资源,都比较基础的算法题,先尽量每天都做1-2题,练手感。毕竟离我真正去尝试入职好的公司(我指的就是中大厂,但是任重道远啊),仍有一定的时间,至少要等我升本之后…

安装nginx

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾…

Sui技术帮助Studio Mirai成功实现创意愿景

Brian和Ben Li兄弟对艺术充满热情,通过共同创立的研发工作室Studio Mirai,他们正在探索Web3技术与创意产业的交集。 Studio Mirai的第一个头像类项目(profile picture,PFP)Tamashi存在于Nozomi World中,这…

备战蓝桥杯Day25 - 二叉搜索树

一、基本概念 二叉搜索树(Binary Search Tree),又称为二叉查找树或二叉排序树,是一种具有特定性质的二叉树。 定义:二叉搜索树可以是一棵空树,也可以是具有以下特性的非空二叉树: 若其左子树不…

【Memcached】

memcached 有一个很大的缺陷不能持久化,不能存储在硬盘里 1.NoSQL介绍 NoSQL是对 Not Only SQL、非传统关系型数据库的统称。 NoSQL一词诞生于1998年,2009年这个词汇被再次提出指非关系型、分布式、不提供ACID的数据库设计模式。 随着互联网时代的到…

基于springboot+vue实现电子商务平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现电子商务平台管理系统演示 研究的目的和意义 据我国IT行业发布的报告表明,近年来,我国互联网发展呈快速增长趋势,网民的数量已达8700万,逼近世界第一,并且随着宽带的实施及降价,每天约有…

Day63:WEB攻防-JS应用算法逆向三重断点调试调用堆栈BP插件发包安全结合

目录 前置知识 JS调试分析 JS分析调试结合Burp JS分析调试知识点: 1、JavaScript-作用域&调用堆栈 2、JavaScript-断点调试&全局搜索 3、JavaScript-Burp算法模块使用 前置知识 JS加密数据走向 浏览器调试 1、作用域:(本地&全…

代码随想录算法训练营第四十七天|动态规划|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

198.打家劫舍 文章 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代…

决策树 | 分裂算法:ID3,C4.5,CART

这里写目录标题 一. ID3算法1. 信息增益2. ID3算法特点 二. C4.5算法1. 信息增益率2. C4.5算法特点 三. CART算法1. Gini系数公式2. CART算法特点3. CART回归树的分裂评价指标 小节 在决策树算法逻辑篇中,我们讲解了决策树的构建方式,下面我们来聊一聊决…

Day16 面向对象进阶——接Day15

Day16 面向对象进阶——接Day15 文章目录 Day16 面向对象进阶——接Day15一、抽象类及抽象方法二、接口三、多态四、对象转型五、内部类 一、抽象类及抽象方法 //抽象类 public abstract class 类名{//抽象方法public abstract void method(); }1、抽象方法交给非抽象的子类去…

FreeRtos自学笔记4----参考正点原子视频

静态创建任务函数 TaskHandle_t xTaskCreateStatic { TaskFunction_t pxTaskCode, /* 指向任务函数的指针 / const char * const pcName, / 任务函数名 / const uint32_t ulStackDepth, / 任务堆栈大小注意字为单位 / void * const pvParameters, / 传递的任务函数参数 / UBase…

爬虫需要什么类型的代理ip?代理ip是必备的吗?

在信息时代,网络爬虫作为一种重要的数据采集工具,被广泛应用于各行各业。在这个过程中,代理IP成为了一个备受关注的话题。那么,爬虫需要什么类型的代理IP?代理IP是否是必不可少的呢? 今天我们就一起来看看~ 首先,我…

GPU服务器为什么需要DPU?

随着AI模型的复杂度增加以及数据量爆炸性增长,GPU服务器在执行训练和推理任务时,不仅面临计算密集型问题,还必须处理大量的数据移动、网络通信、存储I/O以及安全防护等非计算密集型任务。这些问题往往会成为性能瓶颈,消耗宝贵的CP…