第七周总结
性能测试
优化的前提和基础,也是性能优化结果的检查和度量标准。
主观视角:用户感受到的性能
客观视角: 性能指标衡量的性能
性能指标:吞吐量、响应时间(反映快慢)、并发数、性能计数器
并发数 :同时提交请求的用户数目
在线用户数: 登录系统的用户数
系统用户数: 可能访问系统的总用户数
吞吐量:单位时间内系统处理的请求的数量
吞吐量 = (1000/响应时间(ms))* 并发数
性能计数器:描述服务器或操作系统性能的一些数据指标。
性能测试分为性能测试、负载测试、压力测试、稳定性测试
性能优化
软件性能优化的两个基本原则:不能优化一个没有测试的软件、不能优化一个你不了解的软件。
性能优化的一般方法:性能测试,获得性能指标;指标分析,发现性能与资源瓶颈点;架构与代码分析,寻找性能与资源瓶颈关键所在;架构与代码优化,优化关键技术点,平衡资源利用;性能测试,进入性能优化闭环。
系统性能优化的分层思想
机房与骨干网络性能优化:异地多活的多机房架构;专线与自主CDN建设
服务器与硬件性能优化,垂直伸缩
操作系统性能优化
虚拟机性能优化
基础组件性能优化
软件架构性能优化
缓存(优化读)、异步(优化写)、集群、
软件代码性能优化:并发编程、多线程与锁;资源复用,线程池与对象池;异步编程,生产消费者;算法
操作系统
进程是活的
进程的状态
就绪、运行、阻塞
进程 VS 线程
进程切换的代价大于线程切换的代价,线程共享进程的内存地址空间
线程栈
一个函数一个栈帧,栈帧存储当前函数调用过程中的参数,局部变量。栈是后进先出,貌似这个点老师说错了。
线程安全,是多个线程对共享的数据进行修改时才存在的问题。
临界区,就是保护共享资源的区域
避免阻塞引起的崩溃
限流、降级、避免阻塞
锁
锁原语 CAS --系统原语,保证判断和更改的原子性。在执行过程中不允许被中断
偏向锁 轻量级锁 重量级锁
总线锁(性能差)与缓存锁
公平锁与非公平锁(出现饿死的现象)
可重入锁 针对同一线程重复获取相同锁的情况
独占锁、共享锁、读写锁
乐观锁、悲观锁
分段锁 :更小的锁粒度
自旋锁:CPU忙等
文件与磁盘I/O
文件控制块
RAID
评论