写点什么

架构师训练营第七周总结

用户头像
王铭铭
关注
发布于: 2020 年 07 月 22 日

1、性能测试:是性能优化的前提和基础,也是性能优化结果的检查和度量标准。其中网站性能测试主要指标:响应时间、并发数、吞吐量、性能计数器等。

(1)响应时间:指应用系统从发出请求开始到收到最后相应数据所需要的时间。(最重要指标

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

(3)吞吐量:指单位时间内系统处理的请求的数量。(系统的处理能力) 吞吐量=(1000/响应时间)*并发数,其中响应时间以毫秒(ms)计算。

(4)性能计数器:描述服务器或操作系统性能的一些数据指标(包括System Load、对象与线程数、内存使用、CPU使用、磁盘与网络I/O等)。性能计数器中的指标也是系统监控的重要参数,需要对其设置报警阈值,当性能计数器中的指标超过阈值时,需要进行报警以及时处理系统异常。

2、性能测试方法:

可细分为性能测试、负载测试、压力测试、稳定性测试。

性能测试:以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期;

负载测试:对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值,此时继续对系统施加压力,系统处理能力不但不能提高,反而会下降;

压力测试:超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或不能再处理任何请求,以此获得系统最大压力承受能力。

稳定性测试:被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,是系统运行一段较长时间,以此检测系统是否稳定。为了更好地模拟生产环境,稳定性测试应不均匀地对系统施加压力。

3、性能测试主要应用场景:

4、性能优化的一般方法

  • 性能测试,获得性能指标

  • 指标分析,发现性能与资源瓶颈点

  • 架构与代码分析,寻找性能与资源瓶颈关键所在

  • 架构与代码优化,优化关键技术点,平衡资源利用

  • 性能测试,进入性能优化闭环

5、系统性能优化的分层思想

  • 机房与骨干网络性能优化:异地多活的多机房架构;专线网络与自主CDN建设;

  • 服务器与硬件性能优化:使用更优的CPU,磁盘,内存,网卡;

  • 操作系统性能优化

  • 虚拟机性能优化

  • 基础组件性能优化:将基础组件进行升级;

  • 软件架构性能优化:缓存(优化读操作)、异步(优化写操作)、集群

  • 软件代码性能优化:并发编程、资源复用、异步编程、数据结构

6、进程与线程

(1)程序是静态的。程序运行起来以后,被称为进程,进程是有生命的。

(2)进程运行的三种状态

运行:进程正在CPU上运行

就绪:进程获得了除CPU以外的一切所需资源,只要得到CPU,就能运行

阻塞:也称为等待或睡眠状态,当进程正在等待某一事件发生(如IO完成,锁等),此时即使把CPU分配给进程也无法执行

(3)进程与线程:不同进程轮流在CPU上执行,每次都要进行进程间CPU切换,代价很大,因此服务器应用通常是单进程多线程。一个进程里面的所有线程共享进程的内存地址空间,而每个线程也会拥有自己私有的内存地址范围(栈空间),其他线程不能访问。

(4)线程安全:当某些代码修改内存堆(进程共享内存)里的数据的时候,如果有多个线程在同时执行,就可能会出现同时修改数据的情况。

(5)临界区:多个线程访问共享资源的这段代码被称为临界区,解决线程安全问题的主要方法是使用锁,间临界区的代码加锁,只有获得锁的线程才能操作临界区代码。

(6)阻塞导致高并发系统崩溃:锁或者IO会引起线程阻塞,阻塞导致线程既不能继续执行,也不能释放资源。进而导致资源耗尽,最终导致系统崩溃。

7、锁

(1)CAS(V,E,N)

V表示要更新的变量;E表示预期值;N表示新值

如果V变量对应的值等于E值,则将V的值更新为N,若V值与E不同,什么都不做。CAS是一种系统原语,原语的执行必须是连续的,在执行过程中不允许被中断。

(2)

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

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

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



用户头像

王铭铭

关注

还未添加个人签名 2020.01.14 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第七周总结