架构师训练营 No.7 周总结
性能测试
性能测试概述
性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。不同视角下的网站性能有不同的标准,也有不同的优化手段。
主观视角:用户感受到的性能;
客观视角:性能指标衡量的性能。
性能测试指标
响应时间:对请求作出响应所需要的时间,直接反应系统的“快慢”。响应时间=网络传输时间+应用服务器处理时间+数据库服务器处理时间=(N1+N2+N3+N4)+(A1+A3)+A2。
并发数:并发主要是针对服务器而言,在同一时刻与服务器进行交互(指向服务器发出请求)的在线用户数。反映系统的负载特性。
吞吐量:(1000/响应时间ms)x并发数,指单位时间内系统处理用户的请求数。体现系统的处理能力。另外吞吐量指标:TPS(每秒事务数)、HPS(每秒HTTP请求数)、QPS(每秒查询数)。
性能计数器:是描述服务器或操作系统性能的一些数据指标,包括System Load、对象与线程数、CPU,内存,磁盘I/O,网络I/O等,这些指标是监控系统的重要指标,当监控系统发现超过设定阀值时,就向运维和开发发出劲爆,及时发现处理异常。
性能测试方法
性能测试
以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。
负载测试
对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指标到达安全临界值,如某种资源已经呈饱和状态,这时候继续对系统施加压力,系统的处理能力不但不能提高,反而会下降。
压力测试
超过安全负载情况下,对系统继续施压,直到系统崩溃或不能处理任何请求,以此获得系统的最大压力承受能力。
稳定性测试
在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定。在实际生产环境,请求压力是不均匀的,呈波浪特性,为了更好模拟生产环境,稳定性测试也应不均匀地对系统施加压力。
性能优化
性能优化的基本原则
不能优化一个没有测试的软件
不能优化一个你不了解的软件
性能优化的一般方法
性能测试,获得性能指标
指标分析,发现性能与资源瓶颈点
架构与代码分析,寻找性能与资源瓶颈关键所在
架构与代码优化,优化关键技术点,平衡资源利用
性能测试,进入性能优化闭环
性能优化的分层思想
机房与骨干网络性能优化
服务器与硬件性能优化
操作系统性能优化
虚拟机性能优化
基础组件性能优化
软件架构性能优化:缓存、异步、集群
软件代码性能优化:遵循面向对象的设计原则和设计模式
并发编程,多线程与锁
资源复用,线程池与对象池
异步编程,生产者消费者
数据结构,数组,链表,hash表、树
操作系统
锁
锁原语CAS
偏向锁、轻量级锁、重量级锁
多CPU下的锁
总线锁与缓存锁
公平锁、非公平锁
重入锁
独享锁/互斥锁、共享锁、读写锁
乐观锁 悲观锁
分段锁
自旋锁
文件与硬盘IO
机械硬盘与固态硬盘
B+树
LSM树
文件控制块
为了能对一个文件进行正确的存取,操作系统必须为文件设置用于描述和控制文件的数据结构,称之为文件控制块(FCB)。
Linux Inode文件控制块
RAID独立硬盘冗余阵列
分布式文件系统HDFS
评论