本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。
影响系统性能的指标有哪些?关键的环节有哪些?
一、域名DNS解析
提升域名DNS解析的方式:
DNS缓存和DNS预解析:
- 增大域名的TTL值,增大DNS服务器缓存这个域名的时间。可以提升缓存命中率
- 使用dns-prefetch标签实现域名的预解析。浏览器在后台把要使用DNS解析的请求提早解析
例如阿里cdn的预解析
二、首字节
HTTP是应用层协议,TCP是传输层协议。所以HTTP是基于TCP连接基础上进行传输的,需要先建立TCP连接。
1、白屏时间
浏览器显示HTML的顺序是自上而下的,它的渲染顺序也是自上而下的。
用户输入网址到看到第一个视觉标志为止,称为白屏时间。
白屏时间越长,用户体验越差。
缩短白屏时间方法:
- 减少文件的加载体积:例如gzip算法来压缩js,css,html文件及各种图片资源的加载体积
- 加快JavaScript的执行速度,或者根据自身业务场景使用懒加载等策略
2、浏览器响应时间
浏览器响应时间:浏览器发起API接口请求,到响应数据完成渲染的时间。
涵盖了:网络往返时延+服务器响应时间+响应数据完成渲染时间
主要是服务器响应时间占了很大的一部分。
3、HTML下载和渲染
当服务器返回HTTP Response后,浏览器会陆续开始接受响应的数据,进行HTML的下载,渲染和显示。
页面展示还有2个重要指标:解析Dom树时间和OnlOnLoad时间。
方法:
- 加快HTML的下载和解析的速度
- 优化JavaScript和css文件和结构
首屏时间:用户输入URL按回车,到看到第一个页面的时间
响应时间的:2 5 10 原则
三、服务器响应
普通的路线如:用户请求–>nginx–>tomcat
基础设施指标
1、CPU利用率
- 用户态(user)
- 系统态(sys)
- 等待态(wait)
- 空闲态(idle)
CPU超过80%可能就有问题了
2、内存利用率
内存达到100%可能也不是瓶颈,因为内存中存放了缓存。
- 主要衡量swap交换空间的利用率。
- jvm是否有频繁的FGC,如有则需要优化
3、数据库
- sql查询时间
- key buffer命中率
- query cache命中率
- table cache命中率
四、整体性能指标
-
吞吐量:
单位时间内系统处理的数据量的总和
吞吐量反应了服务器的处理能力和承受压力 -
响应时间:
API接口一次操作完成的时间:请求发送的时间+访问等待的时间+服务处理的时间
TPS(Transactions Per Second):服务器每秒处理的事物数。衡量吞吐量的一个重要参数
QPS(Queries Per Second):一台服务器每秒能够对应的查询次数,它是对一个特定的查询服务器,在规定时间内处理多少流量的衡量标准
五、服务端性能优化
-
架构层面
配置升级,集群优化,读写分离,分库分表,服务拆分 -
网络层面
网络专线,BGP选路,CDN优化 -
后端层面
动静分离,异步优化,并行优化,缓存优化,减少次数,压缩优化,锁优化,配置优化