第 7 周 性能优化(一)总结
一、内容梳理
性能测试
不同视角
客观:用户感受到性能
主观:性能指标衡量的性能
测试指标
响应时间:完成一次任务花费的时间
并发数:同时处理的任务数
吞吐量:单位时间完成的任务数
性能计数器:System Load,线程数,进程数,CPU、内存、磁盘、网络使用率
测试方法
性能测试
负载测试
压力测试
稳定性测试
全链路压测
性能优化
优化原则
你不能优化一个没有测试的软件
你不能优化一个你不了解的软件
优化方法
性能测试,获得性能指标
指标分析,发现性能与资源瓶颈点
架构与代码分析,寻找性能与资源瓶颈关键所在
架构与代码优化,优化关键技术点,平衡资源利用
性能测试,进入性能优化闭环
分层优化
机房与骨干网络性能优化
服务器与硬件性能优化
操作系统性能优化
虚拟机性能优化
基础组件性能优化
软件架构性能优化
软件代码性能优化
软件架构性能优化
缓存
异步
集群
软件代码优化
并发编程,多线程与锁
资源复用,线程池与对象池
异步编程,生产者消费者
数据结构,数组、链表、hash 表、树
查询语句优化
操作系统
运行时架构
进程
线程
临界区
阻塞
避免阻塞方法
限流:控制进入计算机的请求数,进而减少创建的线程数。
降级:关闭部分功能程序的执行,尽早释放线程。
反应式:异步;无临界区(Actor 模型)
锁
锁原语 CAS
CAS(V,E,N) • V 表示要更新的变量
E 表示预期值
N 表示新值
如果 V 值等于 E 值,则将 V 的值设为 N,若 V 值和E值不同,什么都不做。
CAS 是一种系统原语,原语的执行必须是连续的,在执行过程中不允许被中断。
锁类型
偏向锁 轻量级锁 重量级锁
总线锁与缓存锁(多CPU)
公平锁 非公平锁
可重入锁
独享锁/互斥锁 共享锁 读写锁
乐观锁 悲观锁
分段锁
自旋锁
二、收获和体会
对系统的性能测试、性能优化原则和方法、操作系统运行架构以及不同锁实现方案有了系统了解和深入的认识
三、思考
1.要测试和理解系统才能对系统进行性能优化
2.性能优化要形成闭环,性能测试到性能优化再到性能测试
3.在系统进行设计和开发时可以进行一些原则上的约束,比如SQL 语句规范、代码规范等等,提前规避一些基本的性能问题,还有一些无法预见的要提前做好监控和监测,在性能出现问题时能及时响应和快速定位问题,还有一些出于前期成本投入和时间紧张问题导致系统架构先期简单设计和部署,要预留好系统进行架构优化和扩展的准备,在后期进行性能优化时不至于推到重来
四、后续计划
通过本课程学习和梳理的性能测试方法、性能优化原则和方法在实际项目中进行运用和实践
评论