性能测试中的性能调优流程规范有哪些

目录

一、需求调研

二、准入

1)待优化版本有稳定的压测环境和压测结果数据。待优化版本有稳定的压测环境和压测结果数据。)

2)压测结果未满足预期的性能业务目标或资源使用目标。压测结果未满足预期的性能业务目标或资源使用目标。)

3)相关的调优工具已配备。相关的调优工具已配备。)

4)被测应用、关联应用、关联数据库已受监控。被测应用、关联应用、关联数据库已受监控。)

三、调优实施

1)了解性能瓶颈现象。了解性能瓶颈现象。)

2)分析问题根因和影响。分析问题根因和影响。)

3)分析优化方案性价比,确定优化方案。分析优化方案性价比,确定优化方案。)

4)验证优化效果。验证优化效果。)

四、准出

1)优化后性能满足性能指标。优化后性能满足性能指标。)

2)优化后是否影响其他业务功能。优化后是否影响其他业务功能。)

五、知识库沉淀在性能调优过程中,我们需要总结一下有用的经验,并形成知识库沉淀下来。

1)整理并记录调优过程文档。整理并记录调优过程文档。)

2)项目结束前将所有历史问题进行复盘。项目结束前将所有历史问题进行复盘。)

3)定期进行团队内外部赋能,建立人才梯度培养机制。定期进行团队内外部赋能,建立人才梯度培养机制。)


性能优化流程可以划分为需求调研、准入、调优实施、准出、知识库沉淀这5个阶段。不同企业的组织架构和人员能力会有所区别,具体进行调优的人员可能是性能测试人员,可能是开发人员,可能是架构师,也可能是专职的性能调优人员。

一、需求调研

性能调优和性能测试一样,首先都要进行需求调研工作。需要先了解清楚待调优系统的优化目标、业务流程、系统架构信息和资源配置信息。

优化目标又可以细分为业务目标和资源目标。业务目标又分为响应时间(交易平均响应时间、99%交易响应时间等)、TPS、成功率等指标。资源目标可以细分为CPU利用率、内存占用率、磁盘10使用率、网络带宽使用率等指标。性能优化是近乎于无止境的,必须要有明确的目标,避免性价比过低的投入。

关于业务流程,了解业务流程的好处是可以评估压测策略设计是否合理。例如秒杀场景,需要通过"高并发+集合点"的方式来模拟瞬间峰值压力。

基于系统架构信息,结合业务特性,可以评估当前架构是否合理。还是以秒杀场景为例,通常会采用本地缓存或Redis等低延时的缓存中间件来存储商品数量。如果直接读写数据库,并且没有做好超大压力下的限流熔断措施,系统很可能顶不住瞬间峰值压力而崩溃。

对于资源配置信息,合理的资源规划是必不可少的。例如在应用层,如果采用Kubernetes等容器化部署方式可以很方便地扩缩容,以抵御突如其来的峰值流量。但数据库服务器端往往没法做到快速地扩容,因此需要做好提前规划。

二、准入

在准入阶段,需要考虑准入条件,即满足哪些条件才适合开始性能调优工作。常见的准入条件如下。

1)待优化版本有稳定的压测环境和压测结果数据。

对于压测和调优分属两个不同团队的组织架构,通常专门调优的团队的人员规模不会太大,往往需要对全公司多条业务线负责。而且有经验的性能测试人员也很清楚,压测环境准备、数据准备、压测执行和压测结果整理都是比较花费时间的,因此建议在有稳定的压测环境和压测结果数据时,再让调优团队介入分析,提升调优效率。

2)压测结果未满足预期的性能业务目标或资源使用目标。

性能调优是没有极限的,为避免陷入无休止低性价比的盲目调优中去,需要查看使用率等性能指标是否满足预期业务目标。如果未满足,则进行调优;如果已满足,则业务方需要给出合理的理由再进行后续调优。

3)相关的调优工具已配备。

调优工具所展示的数据是调优人员判断性能瓶颈的依据,导致一种性能异常现象的根因可能有多种,调优人员需要通过工具获取数据来确认性能瓶颈的根因到底是什么,才能快速给出解决方案并进行优化。例如死锁问题可以通过JVisuaIVM来分析,内存漏问题可以通过MAT来分析。

4)被测应用、关联应用、关联数据库已受监控。

通常在压测过程中我们都会对被测应用进行监控,此时需要注意,被测应用很可能与其他服务或数据库间有依赖关系,这些相关应用和数据库需要一并接入监控。监控应尽可能详细,包括硬件资源监控、JVM监控、数据库监控等。如果系统架构比较复杂,理不清楚依赖关系,可以通过APM类工具来协助梳理链路。有经验的调优人员也可以通过网络或线程Dump来分析是否存在外部依赖,例如通过netstat命令来分析服务是否与外部IP或端口有交互,通过线程Dump也可以看出是在哪个业务方法中出现了与外部服务的交互。

三、调优实施

调优的实施过程如下。

1)了解性能瓶颈现象。

性能瓶颈定位就如同侦探破案,是个从现象到本质的分析过程,第一步一定是收集问题的外在表象,例如某个接口响应慢或某个服务资源消耗过高等。

2)分析问题根因和影响。

了解现象后,通过监控和分析工具提供的数据不断深挖问题的本质,大部分情况下工具只会展示数据,而不会直接告诉我们结果,所以需要结合这些数据推理出导致这些现象的根因并分析该问题对业务和系统整体性能的影响程度和影响面。

3)分析优化方案性价比,确定优化方案。

根据性能问题的优化代价(可能是改配置,可能是优化代码甚至可能是调整系统架构),以及问题的影响程度和影响面,结合人力资源、硬件资源、项目周期等条件选择最符合实际、性价比最高的优化方案。

4)验证优化效果。

完成优化后,需要验证实际优化效果是否符合预期,如果不符合则需要进一步优化整个流程可能需要多轮优化和验证。

四、准出

准出条件即满足哪些条件才算完成性能调优工作,常见的准出条件如下。

1)优化后性能满足性能指标。

优化完成后需要通过复测结果来验证优化效果,确认优化后性能指标是否满足需要。如果指标已经满足,并且暂时未发现极高性价比的优化点时,应及时结束调优,为系统后续发布流程空出时间。

2)优化后是否影响其他业务功能。

所有的性能优化都不应以牺牲功能正确性为代价,在不确定性能优化是否会影响业务逻辑时,应在优化后先进行功能回归测试,确认功能不受影响。

五、知识库沉淀在性能调优过程中,我们需要总结一下有用的经验,并形成知识库沉淀下来。

该阶段的主要工作如下:

1)整理并记录调优过程文档。

定位性能瓶颈、出具调优方案、记录优化效果,逐步形成企业内部调优知识库的资产。

2)项目结束前将所有历史问题进行复盘。

在调优过程中可能会走一些弯路,走向错误的排查方向,通过复盘可以总结现象和根因间的规律,总结类似问题的排查方向和技巧。

3)定期进行团队内外部赋能,建立人才梯度培养机制。

定期将调优知识库以及与问题相对应的排查技巧、现象与根因间的规律等进行分享或培训,避免其他业务线或项目组踩同样的"坑",提升团队整体的问题排查思路和技术水平。可以对问题进行分级,将出现频率较高、排查路径和调优方法比较明确的问题及其解决方案,优先整理并分享出来。

相关推荐
vivo互联网技术1 小时前
动效开发不踩坑:几种动效实现方案对比与实战选型
前端·性能优化·动效
Lust Dusk1 小时前
postman工具介绍(附下载教程)
测试工具·安全·web安全·postman
elirlove12 小时前
图片页面展示技术实践:从数据管理到性能优化再到安全防护
安全·性能优化
翼龙云_cloud3 小时前
阿里云代理商:部署 DeepSeek V4-Flash解析 快速部署与性能优化
运维·阿里云·性能优化·云计算·ai智能体
忧云3 小时前
Wireshark 中文整完整安装与实操教程
测试工具·wireshark·抓包工具·tcp抓包
JohnnyDeng943 小时前
【Android】Android渲染机制:Choreographer与VSYNC深度解析
android·性能优化·kotlin·jetpack
小二·4 小时前
MySQL 8.0 性能优化与索引原理
android·mysql·性能优化
我是一颗柠檬4 小时前
【Java项目技术亮点】读写分离+主从延迟处理:MySQL高并发下的性能优化方案
java·分布式·mysql·性能优化
Gong-Yu4 小时前
MySQL数据库运维——性能优化进阶1️⃣
运维·数据库·mysql·性能优化