跳转至

性能测试

定义:针对系统的性能指标,建立性能测试模型,制定性能测试方案,制定监控策略,执行性能场景,分析判断性能瓶颈并调优,最终得出性能结果来评估系统的性能指标是否满足既定值。

参考了极客时间·高楼讲师的性能测试专栏

20211125161809

给运维做系统容量规划提供依据,最小化成本,给开发提供应用调优参考,满足用户使用需求。

性能测试分析能力阶梯图

20230829234919

如果只测不调,只能叫性能验证,通常第三方性能测试机构的工作就是如此

性能分析

  • 趋势分析
  • 相关性分析
  • 证据链分析

20220808163611

瓶颈的精准判断

性能分析一定要分析曲线的趋势,通过趋势的合理性来判断性能瓶颈所在的原因,光靠平均值、最大值、最小值、中位数是无法确切的分析处压测过程中服务器的具体情况,只有通过分析曲线趋势,增加对趋势的敏感程度才是压测过程中更好的保障和前提。

  • TPS曲线:判断容量有多大
  • RT曲线:判断业务有多快,性能调优的重要分析对象

性能分析的第一步,通过 TPS 曲线判断是否有性能瓶颈,通常在最大 TPS 之前早就会出现

另外要判断瓶颈是否与压力有关,TPS 随着压力的变化而变化,那就是有关系,不管压力增不增加,TPS 都会出现曲线趋势问题,那就是无关。

线程递增策略

在某些工具中,线程也被称作虚拟用户

除了秒杀,在大多数场景中,递增都是必不可少的过程,而且要连续

递增的经验值

20230830001640

在每个阶梯递增的过程中,出现了抖动,这就明显是系统设置的不合理导致的,有两种可能性

  • 资源的动态分配不合理,像后端线程池、内存、缓存等等
  • 数据没有预热

响应时间拆分

20230830150131

构建分析决策树

分析决策树是对架构的梳理,是对系统的梳理,是对问题的梳理,是对查找证据链过程的梳理,是对分析思路的梳理。它起的是纵观全局,高屋建瓴的指导作用。

从压力工具中,只需要知道 TPS、响应时间和错误率三条曲线,就可以明确判断瓶颈是否存在。

再通过分段分层策略,结合监控平台、日志平台,或者其他的实时分析平台,知道架构中的哪个环节有问题,然后再根据更细化的架构图一一拆解下去。

20230830145629

  • MySQL

20230830145649

  • 操作系统

20230830145721

工具

  • 压力工具:JMeter
  • 监控工具
  • 剖析工具
  • 调试工具

20211125164448

报告

至少要有调优前后的 TPS、响应时间以及资源对比图

监控

监控要有分层、分段的能力,要有全局监控、定向监控的能力

监控是为了取证,分析是为了调优