[JPT_09] 性能调优与回归测试-简要总结
一、性能调优
分析测试结果的同时,可对性能问题进行确定与优化操作。一般而言,系统出现性能问题的表象特征如下:
1. 响应时间变化趋势平稳,但数值较大
测试开始响应时间数值就很大,即便减少了线程数量(减少负载),场景执行整个过程中的响应时间依然数值比较大
2. 响应时间随运行时间而逐步增大
测试过程中,负载不变,但随运行时间增加,响应时间也随之增大,直至出现访问服务器的系统错误,如:500状态
3. 响应时间随负载变化而变化
负载增加,响应时间随之增大,资源使用率增加;负载减少,响应时间随之下降,资源使用率也减少
4. 数据累积导致系统锁定而异常
起初运行正常,但任务队列的数据量累积到一定程度,即会出现系统错误,且无法消除,只能重启系统
5. 运行较长时间后系统稳定性变差
特定场景or运行周期很长以后,突然出现错误,系统运行缓慢,正常执行功能受阻
通过以上性能问题的几种场景,初步可判断系统存在性能问题,然后即可针对具体的性能问题进行具体分析,从而发现并定位性能问题,寻求有效的解决方案
如运行过程中,响应时间较大,系统越来越慢,导致出现业务错误,可能的原因有:
1)物理内存资源不足
2)内存泄漏:如用完内存没有及时释放
3)资源争用:如资源调度分配不合理
4)外部系统交互:如对外部系统的可控性较弱,等待其返回数据的过程叫漫长
5)业务失败时频繁重试,无终止状态
6)中间件配置不合理
7)数据库连接设置不合理
8)进程/线程设计错误:如进程比较占用资源...
二、回归测试
通过前文 [JPT_08] 性能测试-测试结果之简化分析 对JMeter执行性能测试的初步分析,本次性能测试过程中出现的主要问题有:
- 部分业务操作步骤[商品添加、收货信息提交、提交订单]对应的响应时间较长,需要重点关注和优化代码处理逻辑
- mysqld服务所占CPU、Memory较多,需要重点优化Mysql数据库,如:减少sql查询请求数、对于页面上常用的数据进行缓存(如:Redis),降低Mysql服务器压力
- 服务器资源中的CPU占比、Memory占比都比较高,即可使用的资源比较有限,一方面对服务器的数据处理能力变弱,一方面很可能也会引起用户的正常业务开展。若在通过其他方式优化操作之后,仍然未明显改善性能的情况下,可考虑对服务器资源进行升级和优化配置
综上,性能测试是一个比较严谨的推理过程,在没有明确的证据(可靠数据支撑)证明系统存在性能问题时,不宜轻易随意调整代码、配置、or架构。因一旦调整,就需要重新开展功能、性能的回归测试,而且可能存在影响现网业务的风险。
性能调优之后,需要执行功能&性能的回归测试,从而保证调优操作正确完成,且确保不造成额外的不利影响。