week07 学习总结
性能测试
性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。不同视角下 的网站性能有不同的标准,也有不同的优化手段。 主观视角:用户感受到的性能 客观视角:性能指标衡量的性能
性能测试指标
不同视角下有不同的性能标准,不同的标准有不同的性能测试指标,网站性能测试的主 要指标有响应时间、并发数、吞吐量、性能计数器等
响应时间
指应用系统从发出请求开始到收到最后响应数据所需要的时间。响应时间是 系统最重要的性能指标,直观的反映了系统的“快慢”
并发数
系统能够同时处理请求的数目,这个数字也反映了系统的负载特性。对于网站 而言,并发数即系统并发用户数,指同时提交请求的用户数目,于此相对应,还有在线 用户数(当前登录系统的用户数)和系统用户数(可能访问系统的总用户数)
吞吐量
吞吐量:指单位时间内系统处理的请求的数量,体现件系统的处理能力。对于网站,可 以用“请求数/秒”或是“页面数/秒”来衡量,也可以用“访问人数/天”或是“处理的 业务数/小时”等来衡量。 TPS(每秒事务数)也是吞吐量的一个指标,此外还有 HPS(每秒 HTTP 请求数), QPS(每秒查询数)等。
吞吐量 = ( 1000 / 响应时间 ms ) × 并发数
性能计数器
是描述服务器或操作系统性能的一些数据指标。包括 System Load、对象 与线程数、内存使用、CPU 使用、磁盘与网络 I/O 等指标。这些指标也是系统监控的重 要参数,对这些指标设置报警阀值,当监控系统发现性能计数器超过阀值的时候,就向 运维和开发人员报警,及时发现处理系统异常
性能测试方法
性能测试是一个总称,具体可细分为性能测试、负载测试、压力测试、稳定性测试。
性能测试
以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系 统在资源可接受范围内,是否能达到性能预期
负载测试
对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指 标达到安全临界值,如某种资源已经呈饱和状态,这时候继续对系统施加压力,系统的 处理能力不但不能提高,反而会下降
压力测试
超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或不能再处理 任何请求,以此获得系统最大压力承受能力。
稳定性测试
被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压 力,使系统运行一段较长时间,以此检测系统是否稳定。在生产环境,请求压力是不均 匀的,呈波浪特性,因此为了更好地模拟生产环境,稳定性测试也应不均匀地对系统施 加压力。
软件性能优化
你不能优化一个没有测试的软件
你不能优化一个你不了解的软件
性能优化的一般方法
性能测试,获得性能指标
指标分析,发现性能与资源瓶颈点
架构与代码分析,寻找性能与资源瓶颈关键所在
架构与代码优化,优化关键技术点,平衡资源利用
性能测试,进入性能优化闭环
系统性能优化的分层思想
机房与骨干网络性能优化 :异地多活的多机房架构 专线网络与自主 CDN 建设
服务器与硬件性能优化
操作系统性能优化
虚拟机性能优化
基础组件性能优化
软件架构性能优化
软件代码性能优化
软件架构性能优化三板斧
缓存
异步
集群
软件代码性能优化
遵循面向对象的设计原则与设计模式编程
并发编程,多线程与锁 资源复用,线程池与对象池
异步编程,生产者消费者
数据结构,数组、链表、hash 表、树
操作系统
程序运行时架构
程序是静态的。
程序运行起来以后,被称作进程。
操作系统多任务运行环境
计算机的 CPU 核心数是有限的。
进程分时执行
进程的运行期状态
运行:当一个进程在 CPU 上运行时,则称该进程处于运行状态。处于运行状态的进程的 数目小于等于 CPU 的数目。
就绪:当一个进程获得了除 CPU 以外的一切所需资源,只要得到 CPU 即可运行,则称 此进程处于就绪状态,就绪状态有时候也被称为等待运行状态。
阻塞:也称为等待或睡眠状态,当一个进程正在等待某一事件发生(例如等待 I/O 完成, 等待锁……)而暂时停止运行,这时即使把 CPU 分配给进程也无法运行,故称该进程 处于阻塞状态。
进程 VS 线程
不同进程轮流在 CPU 上执行,每次都要进行进程间 CPU 切换,代价非常大。因此服务 器应用通常是单进程多线程。 进程从操作系统获得基本的内存空间,所有的线程共享着进程的内存地址空间。而每个 线程也会拥有自己私有的内存地址范围,其他线程不能访问
线程安全
当某些代码修改内存堆(进程共享内存)里的数据的时候,如果有多个线程在同时执行, 就可能会出现同时修改数据的情况
临界区
多个线程访问共享资源的这段代码被称为临界区,解决线程安全问题的主要方法是使用 锁,将临界区的代码加锁,只有获得锁的线程才能执行临界区代码。
阻塞导致高并发系统崩溃
锁(I/O)会引起线程阻塞。阻塞导致线程既不能继续执行,也不能释放资源。进而导致 资源耗尽。最终导致系统崩溃。
避免阻塞引起的崩溃
限流:控制进入计算机的请求数,进而减少创建的线程数。
降级:关闭部分功能程序的执行,尽早释放线程。
反应式:异步;无临界区(Actor 模型)
评论