【第十三课】性能测试与优化

用户头像
Aldaron
关注
发布于: 2020 年 07 月 21 日
【第十三课】性能测试与优化

性能测试

主旨:性能优化是性能测试——了解当前服务和机器的性能与核心性能指标

性能测试的角度

  • 主观角度:用户感受到的性能

  • 客观角度:性能指标衡量的性能

核心指标

响应时间

指应用系统从发送请求开始到接收到最后响应数据所需要的时间。

是系统重要的性能指标,直观的反映了系统的“快慢”。

并发数(负载特性)

系统能够同时处理请求的数目,这个数字也反馈了系统的负载特性。

并发数即系统并发用户数,指同时提交请求的用户数目,对于此相对应的还有在线用户数和系统用户。

吞吐量

指单位时间内系统处理的请求数量,体现系统的处理能力。

可以用“请求数/秒”或者“页面数/秒”来衡量,也可以用“访问人数/天”或是“处理业务数/小时”来衡量

吞吐量指标数据

  • TPS

  • HPS

  • QPS

相互关系

响应时间 —— 越短

并发数 —— 越高

吞吐量 —— 越大

吞吐量 = (1000/响应时间ms) * 并发数

处理其二得全部

性能计数器

描述服务器或操作系统性能的一些数据指标。

  • System Load

  • 对象与线程数

  • 内存使用

  • CPU使用

  • 磁盘与网络I/O

性能测试方式

主要是通过以下几种测试方式验证系统的性能

  • 性能测试

  • 负载测试

  • 压力测试

  • 稳定性测试

性能测试(基准线-Y轴)

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

负载测试(高峰线-Y轴)

对系统不断增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值。

如某种资源已经呈饱和状态,这时候继续对系统施加压力,系统的处理能力不但不能提高,反而会下降。

压力测试(崩溃线-Y轴)

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

稳定性测试(长期运行情况-X轴)

被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定。

在生产环境,请求压力是不均匀的,呈波浪特性,因此为了更好地模拟生产环境,稳定性测试也应不均匀的对系统施加压力。

主要目的是要模拟系统在日常情况下的持久运行情况。

容易出现稳定性异常的例子:

缓存在高并发的时候存储的都是热数据,等流量下来时缓存会失效,当高并发请求再次到来时可能会出现缓存穿透的情况,系统是否能够扛的数就体现了系统的长期运行能力。



性能优化

基本原则

  • 不能优化一个没有测试的软件

  • 不能优化一个不了解的软件

❗️经验❗️

要以测试结果为依据进行测试。新的架构一定是解决实际问题而采用(不然过不了试用期 哈哈哈)

四大关键资源:CPU 内存 网络 磁盘 性能测试时需要重点关注这四点

Roadmap

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

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

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

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

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

性能测试 --> 数据指标 --> 分析瓶颈点 --> 分析框架和代码 --> 优化框架和代码 --> 性能测试



性能优化分层思想

  • Level 1: 机房与骨干网络性能优化

  • Level 2: 服务器与硬件性能优化

  • Level 3: 操作系统性能优化

  • Level 4: 虚拟机性能优化

  • Level 5: 基础组件性能优化

  • Level 6: 软件架构性能优化

  • Level 7: 软件代码性能优化

Level 1: 机房与骨干网络性能优化

优化方式:

  • 异地多活的多机房架构(多数据中心)

  • 专线网络与自主 CDN 建设(提高网络交换速度)

层次要求

这个层次需要了解整体网络与计算机的全部内容,并且在关键领域有具体的实践与经验。需要对公司主干网络有把控权。

效果

巨大。整体效果是最好的,细小的优化会收到大面积/全公司的收益提升。(要看公司规模与自己本身的位置)

投入

巨大。一般都是从现有规模优化到一个新的规模,会有较大投入。

Level 2: 服务器与硬件性能优化

优化方式:(垂直伸缩)

  • 使用更加优秀的 CPU、硬盘、网卡

层次要求

需要对当前硬件或服务的功能、适用场景、承载能力有所了解

效果

适中 - 大。对软件性能优化可能是数量级的,有时候远超代码和架构的性能优化

投入

适中 - 大。主要是金钱成本,需要投入金钱来更新新硬件或服务。引入新的服务可能会对当前架构有一定的修改。

Level 3: 操作系统性能优化

优化方式:

  • 了解操作系统在资源消耗上的开销

Level 4: 虚拟机性能优化

优化方式:

  • GC处理优化

Level 5: 基础组件性能优化

优化方式:

Level 6: 软件架构性能优化

优化方式:

  • 缓存

  • 异步

  • 集群

Level 7: 软件代码性能优化

优化方式:

  • 遵循面向对象的设计原则与设计模式。(大部分时候是因为烂代码决定了性能的上限)

  • 并发编程,多线程与锁

  • 资源复用,线程池与对象池

  • 异步编程,生产者与消费者

  • 数据结构,数组、链表、Hash表、树



用户头像

Aldaron

关注

还未添加个人签名 2018.04.28 加入

还未添加个人简介

评论

发布
暂无评论
【第十三课】性能测试与优化