关于性能测试和优化的一些总结和思考

用户头像
2流程序员
关注
发布于: 2020 年 07 月 22 日

性能测试的作用和目的

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

性能测试一般有两个视角:

  1. 主观视角:用户感受到的性能

  2. 客观视角:性能指标衡量出来的性能

性能优化重点应该放在主观视角上。一味追求客观视角的性能性价比可能是极低的。

性能测试常用指标

  • 响应时间:指应用系统从发出请求开始到收到最后响应数据所需要的时间。响应时间是系统最重要的性能指标,直观的反应了系统的快慢。(主观视角)

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

  • 吞吐量:指单位时间内系统处理的请求数量。吞吐量=并发数/响应时间(s)。常用度量单位:RPS(请求数每秒)、TPS、PPS(页面数每秒)、QPS、HPS(HTTP请求数每秒)。

  • 性能计数器:描述服务器或操作系统系统性能的一些数据指标。如:系统负载、内存使用、磁盘与IO等。

性能测试方法

常规测试

  • 性能测试:验证性能是否能达到预期。

  • 负载测试:检测系统能达到的最大安全临界值,一般是某种资源耗尽后开始出现性能下降的点。

  • 压力测试:获得系统能承受的的最大压力点。

  • 稳定性测试:模拟生产环境下长时间运行,检测系统运行的稳定情况。

各测试阶段一般程序如下关系:



全链路压测

在特定业务场景下,将相关链路完整串联起来同时施压。目的是,暴露瓶颈、探测系统整体处理能力以及大促前的容量规划。

挑战:

  1. 业务众多,且牵涉到整条链路上的所有基础设施和中间件,如何保证流量畅通无死角?

  2. 测试数据如何构造,更贴近真实?

  3. 如果直接在生产环境进行模拟,如何保证线上安全?

  4. 大促活动流量如何模拟?

数据构造:

数据隔离:

流量构造:

性能优化的两个基本原则

  1. 你不能优化一个没有测试的软件

  2. 你不能优化一个你不了解的软件

性能优化的一般方法

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

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

  • 架构与代码分析,寻找性能与资源瓶颈原因

  • 架构与代码优化

  • 性能测试,优化闭环

系统优化的分层思想

  1. 机房与骨干网络

  2. 服务器与硬件性能

  3. 操作系统

  4. 虚拟机性能(指java虚拟机、编译器等)

  5. 基础组件性能

  6. 软件架构性能

  7. 软件代码性能

从优化顺序和层次来看,最简单粗暴的方法就是垂直扩容。

其次是使用更新版本的系统软件和中间件。

架构优化三板斧

  • 缓存

  • 异步

  • 集群

用户头像

2流程序员

关注

还未添加个人签名 2020.03.18 加入

还未添加个人简介

评论

发布
暂无评论
关于性能测试和优化的一些总结和思考