性能测试¶
定义:针对系统的性能指标,建立性能测试模型,制定性能测试方案,制定监控策略,执行性能场景,分析判断性能瓶颈并调优,最终得出性能结果来评估系统的性能指标是否满足既定值。
参考了极客时间·高楼讲师的性能测试专栏
给运维做系统容量规划提供依据,最小化成本,给开发提供应用调优参考,满足用户使用需求。
性能测试分析能力阶梯图
如果只测不调,只能叫性能验证,通常第三方性能测试机构的工作就是如此
性能分析¶
- 趋势分析
- 相关性分析
- 证据链分析
瓶颈的精准判断¶
性能分析一定要分析曲线的趋势,通过趋势的合理性来判断性能瓶颈所在的原因,光靠平均值、最大值、最小值、中位数是无法确切的分析处压测过程中服务器的具体情况,只有通过分析曲线趋势,增加对趋势的敏感程度才是压测过程中更好的保障和前提。
- TPS曲线:判断容量有多大
- RT曲线:判断业务有多快,性能调优的重要分析对象
性能分析的第一步,通过 TPS 曲线判断是否有性能瓶颈,通常在最大 TPS 之前早就会出现
另外要判断瓶颈是否与压力有关,TPS 随着压力的变化而变化,那就是有关系,不管压力增不增加,TPS 都会出现曲线趋势问题,那就是无关。
线程递增策略¶
在某些工具中,线程也被称作虚拟用户
除了秒杀,在大多数场景中,递增都是必不可少的过程,而且要连续
递增的经验值
在每个阶梯递增的过程中,出现了抖动,这就明显是系统设置的不合理导致的,有两种可能性
- 资源的动态分配不合理,像后端线程池、内存、缓存等等
- 数据没有预热
响应时间拆分¶
构建分析决策树¶
分析决策树是对架构的梳理,是对系统的梳理,是对问题的梳理,是对查找证据链过程的梳理,是对分析思路的梳理。它起的是纵观全局,高屋建瓴的指导作用。
从压力工具中,只需要知道 TPS、响应时间和错误率三条曲线,就可以明确判断瓶颈是否存在。
再通过分段分层策略,结合监控平台、日志平台,或者其他的实时分析平台,知道架构中的哪个环节有问题,然后再根据更细化的架构图一一拆解下去。
- MySQL
- 操作系统
工具¶
- 压力工具:JMeter
- 监控工具
- 剖析工具
- 调试工具
报告¶
至少要有调优前后的 TPS、响应时间以及资源对比图
监控¶
监控要有分层、分段的能力,要有全局监控、定向监控的能力
监控是为了取证,分析是为了调优