写点什么

性能测试

用户头像
陈皮
关注
发布于: 2020 年 07 月 20 日

1 解决了什么问题?(性能是个啥?性能测试干了啥?)

1.1 系统性能

  1. 这个手机好流畅,这个网站一点也不卡

  2. 手机好卡啊,网站反映怎么这么慢

  3. 每到晚上就卡的不行

性能好?:



  • 用户体验好

  • 性能指标好



1.2 为什么要进行性能测试(什么是性能测试)

  • 验证系统在给定资源下是否满足处理能力预期(是否满足当前需求)

  • 分阶段测试现有资源下系统处理能力(测试出系统瓶颈点和性能拐点)



性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。



2 测试结束,怎么评估性能?

2.1 响应时间

处理速度。



指应用系统从发出请求开始到收到最后响应数据所需要的时间。响应时间是系统最重要的性能指标,直观的反映了系统的“快慢”。



2.2 并发数

系统能够同时处理的请求数。所有请求。



系统能够同时处理请求的数目,这个数字也反映了系统的负载特性。对于网站而言,并发数即系统并发用户数,指同时提交请求的用户数目,于此相对应,还有在线用户数(当前登录系统的用户数)和系统用户数(可能访问系统的总用户数)。



2.3 吞吐量

单位时间内,系统处理的请求数量。指定时间单位内,系统处理请求的并发数。



指单位时间内系统处理的请求的数量,体现件系统的处理能力。对于网站,可以用“请求数秒”或是“页面数秒”来衡量,也可以用“访问人数/天”或是“处理的业务数小时”等来衡量。



TPS(毎秒事务并发数)也是吞吐量的一个指标,此外还有HPS(每秒ITP请求数) QPS(每秒查询并发数)等。



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



2.4 性能计数器

给定基础设施,其有处理能力上限,吞吐量、响应时间、并发数都受其限制。



描述服务器或操作系统性能的一些数据指标。包括 System Load、对象与线程数、内存使用、CPU使用、磁盘与网络O等指标。这些指标也是系统监控的重要参数,对这些指标设置报警阀值,当监控系统发现性能计数器超过阀值的时候,就向维和开发人员报警,及时发现处理系统异常。



System Load: top 命令 Load Avg



3 梯度测试(分阶段测试、怎么进行性能测试、性能测试方法)

3.1 性能测试

目标值。



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



3.2 负载测试

临界值。能够负载的最大健康值。



在性能测试、优化后,现有设施满足了预期目标。继续加压,测试出安全临界值。



对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值,如某种资源已经呈饱和状态,这时候继续对系统施加压力,系统的处理能力不但不能提高,反而会下降。



3.3 压力测试

最高值。系统崩溃时的值。



在测试到系统处理能力临界值的情况下,继续增加请求,测试出系统崩溃时的最高值。



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



3.4 稳定性测试

模拟真实场景,间歇性对系统进行测试。在系统设计中使用的一些手段如缓存和时间(生命周期)有关的,测试结果可以做为缓存存货时间的一个参考。



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



4 全链路压测

TODO



5 性能优化(系统调优、性能测试完成之后干些啥?)

性能优化的前提是性能测试,性能优化的结果也是性能测试。



性能优化解决了什么问题?用户体验差、性能测试结果不理想部分进行调优,通过一些手段提高系统性能。



5.1 两个基本原则(进行系统的优化前提)

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

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



没有测试就没有优化。



5.2 主要指标(什么时候优化)

测试完成,根据测试结果,分析性能瓶颈点进行系统调优。



可视化测试结果。



  • 响应时间

  • 并发数

  • 吞吐量

  • 性能计数器



5.3 一般方法(怎么优化)

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

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

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

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

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



5.4 分层思想(从哪方面优化)

  • 机房与骨干网络

  • 服务器与硬件

  • 操作系统

  • 虚拟机

  • 基础组件(中间件)

  • 软件架构

  • 软件代码



5.4.1 多机房与网络



互联网系统硬件支持。越近消耗越小



5.4.2 服务器与硬件



系统宿主机器。硬件介质、服务器配置,服务器数量



5.4.3 操作系统



软件运行环境。系统配置



5.4.4 虚拟机(JVM)



JVM 调优



5.4.5 基础组件



组件升级、技术栈调整。



5.4.6 软件架构



三板斧



  • 缓存

  • 异步

  • 集群



5.4.7 软件代码



遵循面向对象设计原则和模式。



利用语言特性 并发编程 资源服用 异步编程 数据结构和算法



发布于: 2020 年 07 月 20 日阅读数: 60
用户头像

陈皮

关注

还未添加个人签名 2018.04.26 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
请添加“极客大学架构师训练营”标签,方便分类
2020 年 07 月 21 日 10:51
回复
没有更多了
性能测试