架构师 0 期第七周总结

用户头像
何伟敏
关注
发布于: 2020 年 07 月 23 日

系统性能测试

响应时间:指应用系统从出发请求开始到收到最后响应数据所需要的时间。直观反映了系统的快慢。

并发数:系统能够同时处理请求的数目,反映了系统的负载特性。

吞吐量:单位时间内系统处理的请求数量。吞吐量=(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



偏向锁:指一段同步代码一直被一个线程锁访问,那么该线程会自动获得锁,降低获取锁的代价

轻量级锁:指当锁是偏向锁时,被另一个线程所访问,偏向锁就会升级为轻量级锁,其他线程会通过自旋的形式尝试获取锁,不会阻塞,提高性能

重量级锁:指当锁是轻量级锁时,另一个线程虽然自旋,但自旋不会一直持续下去,当自旋到一定次数时,还没有获取到锁,就会进入阻塞,该锁膨胀为重量级锁,重量级锁会让其他申请的线程进入阻塞,性能降低。



用户头像

何伟敏

关注

还未添加个人签名 2018.03.11 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
作业请加“极客大学架构师训练营”标签,便于分类
2020 年 07 月 27 日 17:15
回复
没有更多了
架构师 0 期第七周总结