项目性能优化—性能优化的指标、目标
性能优化的终极目标是什么
性能优化的目标实际上是为了更好的用户体验:
一般我们认为用户体验是下面的公式:
用户体验 = 产品设计(非技术)+ 系统性能 ≈ 系统性能 = 快
那什么样的体验叫快呢?
3 秒定理
一般我们认为网站页面的加载速度在 3 秒以内就可以称作合格了,加载速度越趋近于 0,越快。
3 秒定理:Strangeloop 在对比了众多网站,并对其性能进行分析之后得出了一个著名的 3 秒定理,当网站页面加载速度超过 3 秒后,57%的访客会离开这个网站。
如果想让我们的系统快起来,就要做性能调优。
项目性能优化
以下可以做为优化的标准:
前端工程师:首屏时间、白屏时间、可交互时间、完全加载时间;
移动端工程师:端到端响应时间、Crash 率、内存使用率、FPS;
后端工程师:RT、TPS、并发数。影响因素 1:数据库读写、RPC、网络 IO、逻辑计算复杂度、缓存影响因素 2:JVM[Throughput 吞吐量、Footprint 访存足迹、Latency 延迟]
影响性能的关键要素
产品设计:产品逻辑、功能交互、动态效果、页面元素
基础网络:网络=连接介质+计算终端
代码质量 &架构
移动端环境:设备类型 &性能、网络
硬件及云服务:服务器硬件等
我们怎么去分析性能因素呢,就是既不要去做过度的优化,也不要让某个内容作为短板。
我们怎么找到系统的短板在哪里呢?就是需要进行压力测试。
压力测试
什么是压力测试
压力测试:压力测试是针对特定系统或者组件,为要确认其稳定性而特意进行的严格测试。会让系统在超过正常使用条件下运作,然后再确认其结果。
实际上就是对系统不断施加压力,来预估系统负载能力的一种测试。
什么时候做压测
一般而言,只要在系统基础功能验证完成、系统趋于稳定的情况下,才会进行压力测试。
压测目的
当负载逐渐增加时,观察系统各项性能指标的变化情况是否有异常;
发现系统的性能短板,进行针对性的性能优化;
判断系统在高并发情况下是否会报错,进程是否会挂掉;
测试在系统某个方面达到瓶颈时,粗略估计系统性能的上限;
压测的指标
响应时间、并发用户数、吞吐量、资源使用率存在一定关系,如下图:
图的解释:
线走势:
绿线:随着用户增长,资源利用率会提升;
紫线:随着用户增长,吞吐量会上升,然后下降;
蓝线:随着用户增长,响应时间的变化趋势;
区域
图中有三个区域:轻负载区、重负载区、塌陷区。
两个横坐标点
第一条虚线的横坐标:最优并发用户数;
第二条虚线的横坐标:最大并发用户数。
文章转载自:随机的未知
评论