架构师 0 期第七周总结
系统性能测试
响应时间:指应用系统从出发请求开始到收到最后响应数据所需要的时间。直观反映了系统的快慢。
并发数:系统能够同时处理请求的数目,反映了系统的负载特性。
吞吐量:单位时间内系统处理的请求数量。吞吐量=(1000/响应时间ms)*并发数
性能计数器:描述服务器或操作系统性能的一些数据指标:系统负载、对象与线程数、内存使用、CPU使用、磁盘与网络IO
性能测试可细分为性能测试、负载测试、压力测试、稳定性测试
全链路压测是指在特定的业务场景下,将相关的链路完整的串联起来同时施压,尽可能模拟出真实的用户行为。
软件性能优化的两个基本原则
(1)你不能优化一个没有测试的软件(要有测试指标,用数字说话)
(2)你不能优化一个你不了解的软件(对需要优化的软件架构有深入的了解)
性能优化的一般方法
(1)性能测试,获得性能指标
(2)指标分析,发现性能与资源瓶颈点
(3)架构与代码分析,寻找性能与资源瓶颈关键所在
(4)架构与代码优化,优化关键技术点,平衡资源利用
(5)性能测试,进入性能优化闭环
系统性能优化的分层思想
(1)机房和骨干网络性能优化(异地多活、专线网络、自主CDN)
(2)服务器与硬件性能优化 (CPU、磁盘、内存、网卡等)
(3)操作系统性能优化 (关闭必要的功能)
(4)虚拟机性能优化
(5)基础组件性能优化 (升级基础组件)
软件架构性能优化三板斧
(1)缓存
从内存中获取数据,减少数据库访问;缓存结果,减少计算
(2)异步
即时响应,更好的用户体验;控制消费速度,合适的负载压力
(3)集群
如何使很多台服务器对使用者而言看起来像一台服务器
软件代码性能优化
(1)遵循面向对象的设计原则与设计模式编程
(2)并发编程,多线程与锁
(3)资源复用,线程池与对象池
(4)异步编程,生产者消费者
(5)数据结构
避免阻塞引起的崩溃
限流:控制进入计算机的请求数,进而减少创建的线程数
降级:关闭部分功能程序的执行,尽早释放线程
避免阻塞:异步IO
锁
偏向锁:指一段同步代码一直被一个线程锁访问,那么该线程会自动获得锁,降低获取锁的代价
轻量级锁:指当锁是偏向锁时,被另一个线程所访问,偏向锁就会升级为轻量级锁,其他线程会通过自旋的形式尝试获取锁,不会阻塞,提高性能
重量级锁:指当锁是轻量级锁时,另一个线程虽然自旋,但自旋不会一直持续下去,当自旋到一定次数时,还没有获取到锁,就会进入阻塞,该锁膨胀为重量级锁,重量级锁会让其他申请的线程进入阻塞,性能降低。
评论 (1 条评论)