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