【第七周】性能优化(一)
性能测试
视角
主观视角:用户感受到的性能
客观视角:性能指标衡量的性能
网站性能测试的主要指标:
响应时间: 发出请求到收到响应数据所需时间,反映系统的快慢
并发数:同时处理请求的数目, 反映系统的负载特性
吞吐量: 单位时间内系统处理的请求数量,体现系统的处理能力。
TPS: 每秒事务数
HPS:每秒 http 请求数
QPS: 每秒查询数
吞吐量 = (1000 /响应时间 ms)*并发数
性能计数器:描述服务器或操作系统性能的一些数据指标, System Load、对象与线程数、内存使用、CPU 使用、磁盘与网络 I/O 等
分类:
性能测试
负载测试
压力测试
稳定性测试
全链路压测
数据构造
数据隔离
逻辑隔离:数据放一起,但通过特殊的标识能否区分
虚拟隔离:不真正写数据
物理隔离:数据不放一起
流量构造
平台化
性能优化
基本原则:
不能优化一个没测试的软件
不能优化一个不了解的软件
主要指标: 响应时间、并发数、吞吐量、性能计数器
一般方法:
性能测试,获得性能指标
指标分析,发现性能与资源瓶颈点
寻找性能与资源瓶颈关键所在
优化关键技术点,平衡资源利用
性能测试,进入性能优化闭环
分层思想:
机房与骨干网络
服务器与硬件:
操作系统
虚拟机
基础组件
软件架构
软件代码
三板斧
缓存:主要优化读操作
异步:通过消息队列 主要优化写操作
集群:使用很多台服务器对使用者看起来像一台服务器
软件代码性能优化
并发编程, 多线程与锁
资源复用,线程池与对象池
异步编程,生产者消费者模型
数据结构, 数组、链表、hash 表、树
锁
锁原语 CAS
CAS(v,e,n): if (v=e):v=n
系统原语,不允许被中断
偏向锁
轻量级锁
重量级锁
总线锁
缓存锁
公平锁
非公平锁
可重入锁
互斥锁
共享锁
读写锁
乐观锁
悲观锁
分段锁
自旋锁
评论