关于性能测试和优化的一些总结和思考
性能测试的作用和目的
性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。
性能测试一般有两个视角:
- 主观视角:用户感受到的性能 
- 客观视角:性能指标衡量出来的性能 
性能优化重点应该放在主观视角上。一味追求客观视角的性能性价比可能是极低的。
性能测试常用指标
- 响应时间:指应用系统从发出请求开始到收到最后响应数据所需要的时间。响应时间是系统最重要的性能指标,直观的反应了系统的快慢。(主观视角) 
- 并发数:系统能够同时处理请求的数目,这个数字也反映了系统的负载特性。 
- 吞吐量:指单位时间内系统处理的请求数量。吞吐量=并发数/响应时间(s)。常用度量单位:RPS(请求数每秒)、TPS、PPS(页面数每秒)、QPS、HPS(HTTP 请求数每秒)。 
- 性能计数器:描述服务器或操作系统系统性能的一些数据指标。如:系统负载、内存使用、磁盘与 IO 等。 
性能测试方法
常规测试
- 性能测试:验证性能是否能达到预期。 
- 负载测试:检测系统能达到的最大安全临界值,一般是某种资源耗尽后开始出现性能下降的点。 
- 压力测试:获得系统能承受的的最大压力点。 
- 稳定性测试:模拟生产环境下长时间运行,检测系统运行的稳定情况。 
各测试阶段一般程序如下关系:
 
  
 全链路压测
在特定业务场景下,将相关链路完整串联起来同时施压。目的是,暴露瓶颈、探测系统整体处理能力以及大促前的容量规划。
挑战:
- 业务众多,且牵涉到整条链路上的所有基础设施和中间件,如何保证流量畅通无死角? 
- 测试数据如何构造,更贴近真实? 
- 如果直接在生产环境进行模拟,如何保证线上安全? 
- 大促活动流量如何模拟? 
数据构造:
 
 数据隔离:
 
 流量构造:
 
 性能优化的两个基本原则
- 你不能优化一个没有测试的软件 
- 你不能优化一个你不了解的软件 
性能优化的一般方法
- 性能测试,获得性能指标 
- 指标分析,发现性能与资源瓶颈 
- 架构与代码分析,寻找性能与资源瓶颈原因 
- 架构与代码优化 
- 性能测试,优化闭环 
系统优化的分层思想
- 机房与骨干网络 
- 服务器与硬件性能 
- 操作系统 
- 虚拟机性能(指 java 虚拟机、编译器等) 
- 基础组件性能 
- 软件架构性能 
- 软件代码性能 
从优化顺序和层次来看,最简单粗暴的方法就是垂直扩容。
其次是使用更新版本的系统软件和中间件。
架构优化三板斧
- 缓存 
- 异步 
- 集群 












 
    
评论