如何解读性能测试监控结果
共 2437字,需浏览 5分钟
·
2022-04-24 21:49
下方查看历史精选文章
大数据测试过程、策略及挑战
在性能测试系列前面几篇文章中我们比较详细的介绍了相关的知识
所有性能相关的文章,均会同步发布至性能测试专用公众号,大家可以关注,以免错过
通过前面的系列文章,我们已经知道了如何开展性能测试,但还没有告诉大家如何对性能测试结果进行分析和解读,本文将带领大家对性能测试结果进行正确的解读。在进行性能测试结果解读前,我假设你在测试需求阶段已经设定了合理的性能测试目标,并且已经在性能测试实施过程中记录了相应的结果。
我们将通过下面几个方面来解读我们的性能测试监控结果。
1. 性能测试过程分析
2. 性能测试输出结果分析
3. 瓶颈根源分析
4. 性能测试分析检查表
性能测试过程分析
在这个过程中,我们主要分析两个部分:性能测试执行阶段的实时分析和测试结束后的时候分析。
在性能测试执行阶段的实时分析,我们主要借助KPI监控工具,笔者推荐你使用zabbix构建基础指标的监控,在过程中实时查看基本指标的数据,如果发现数据波动异常,则用yourkit java profiler挂上去,深入分析各指标,通过使用这两个工具的能力,我们能深入的分析其中的问题,并结合与开发、运维的进一步深入沟通交流,以定位、分析、诊断问题所在,从而为调优确定相应的方案。
不管怎么样,我们都期望能够监控、分析以下指标:
1. 以图形或表格的方式展示性能测试中每个用例的响应时间
2. 监控每个脚本的的虚拟用户的增长以及整个测试过程所用到的虚拟用户数
3. 监控施压机的状态,以免因施压机过载出现不必要的误会
4. 监控服务的CPU\IO\MEM\网络吞吐等指标
5. 了解整个性能测试执行过程中的所有错误,包括但不限于请求失败、错误等等
测结束后的事后分析,我们需要对测试过程中所采集的数据进行全面的、深入的分析。这意味着我们在很大程度上需要依赖已经保存好的测试结果数据。
从实践来看,事后分析也要结合实时分析的来进行,主要从以下几个方面考虑:
结合实时分析过程中的一些问题,深入挖掘性能瓶颈
与开发、运维等相关人员,就一些问题进行深入探讨,定位、分析、确定解决方案
要注意的是,我们要尽可能的采用业界通用的、专业的监控工具,这样我们才能拥有尽可能完整的监控数据,避免使用偏僻的、便宜的工具。
性能测试输出结果分析
数据统计分析是所有性能测试工具的核心,也是我们对结果形成系统化的、结构化的分析的核心。所以我们必须具备一定的数据统计分析的一些基础知识。例如:
1. 统计学基础,要理解什么是平均数、中位数、标准差、正态分布、百分位数
2. 了解响应时间的一些基本准则,例如2/5/10响应时间,即2秒、5秒、10秒用户响应时间的体验是怎么样的,但要注意其中思考时间对其的影响
3. 了解吞吐率和容量,吞吐率关注一些特定用例执行的速度,容量则关注在单位时间内能够处理多少请求。
4. 关键性能监控指标,通过这些指标我们可以分析服务器或网络的性能等等
5. JVM指标,通过监控分析jvm的性能指标,我们可以进一步的深入堆栈、线程等等性能表现
6. 基准指标,主要关注服务端CPU\IO\MEM等等,以深入确定服务的负载变化情况
7. 关键网络指标,我们主要关注服务接收到的数据量等
8. 施压机性能,关注施压机的性能,以免出现因施压机的瓶颈导致了我们误判、甚至错误的分析
瓶颈根源分析
为了确定服务是否具备良好的性能,我们需要关注哪些方面呢?
1. 通过暴增/递增/递减虚拟用户等模式,来确定负载、吞吐率、响应时间等待,以了解服务在不同模式下的性能表现
2. 最好将源码与监控工具关联起来,这样有性能瓶颈的状态下,能通过工具的自动化能力,初步的将异常的指标与可能的瓶颈源码关联,便于我们深入挖掘、分析、定位、诊断瓶颈,进一步确定调优方案
3. 为了对服务进一步分析,我们经常需要获取服务瓶颈状态下的堆栈信息、线程锁等信息
4. 寻找性能拐点,通过性能拐点,我们可以快速的确定性能分析重点切入点
5. 性能过程中的错误信息,很多时候,在性能测试过程中发现的错误信息能带领我们直接找到问题所在
6. 没有对比就没有伤害,建立合适的性能测试基线,使我们对瓶颈分析的基础
性能测试分析检查表
为了系统的、结构化的分析性能,我们要根据性能测试目标,建立起相应的性能分析检查表。主要从三个方面来建立起检查表:
1. 测试前检查表
- 服务配置、监控指标等,确保服务的配置正确,相关指标能正确获取
- 确定性能测试类型,要进行哪些性能测试,虚拟用户增加模式等等
- 确保压力机可正常压测
- 性能监控工具相关阈值设置正确
- 监控工具与代码关联
- 性能监控数据可正常存入指定的服务或目录
2. 测试执行过程检查表
- 记录好每次性能测试执行的结果,通过这个都会利用工具的自动记录能力
- 记录好测试数据、结果,并进行简要的描述
- 记录好突然出现的错误、异常
- 记录好异常的指标,例如突然下降的吞吐率、过长的响应时间等
- 记录好持续增长的CPU、内存、IO消耗等
- 运维、开发人员的联系方式,做好随时请求他们的支撑
3. 测试结束后检测表
在性能测试工作结束后,我们通常还是需要做一些扫尾工作,以便后续再次开展或进一步回溯性能测试工作,主要有以下几个方面的工作:
- 不管性能测试实施结果如何,我们都需要将性能测试过程中搜集的数据进行备份,存档
- 将性能测试脚本、数据、结果存档
- 根据目标群体,撰写合适的性能测试报告
- 总结回顾本次性能测试,为后续性能测试提供参考和规避可能的坑