性能测试项目实战四: 性能测试分析和调优

性能调优的步骤

  1. 确定问题:根据性能监控的数据和性能分析的结果,确定性能存在的问题(要求)
  2. 确定原因:确定了问题之后,对问题进行分析,找出问题产生的原因
  3. 给出解决方案:确定调整目标和解决方案(改服务器参数配置/增加硬件资源配置/修改代码)
  4. 验证问题:按照给出的解决方案,重新进行测试
  5. 分析调优结果:分析出问题的性能指标是否有提升,关注其他指标未下降

注意性能测试调优并不是一次完成的过程,针对同一个性能问题,上面的五步可能要经过多次循环才

能最终完成性能调优的目标(即:测试发现问题-找原因-调整-验证-分析-再测试。。。)

性能瓶颈分析

性能测试项目实战四: 性能测试分析和调优

1.服务器资源分析

查看CPU状态:top

性能测试项目实战四: 性能测试分析和调优

查看内存状态:vmstat

实际内存:查看内存使⽤百分⽐,检查是否超过80%

虚拟内存:查看swap的si和so是否为0,如果不为0,说明内存可能不⾜

性能测试项目实战四: 性能测试分析和调优

查看磁盘IO状态:iostat -x 1 1

关注是磁盘读⼊和写出的速度,不是磁盘⼤⼩。

%util⾼,说明磁盘⻓时间占⽤CPU在发送数据,说明磁盘传输速度不⾜,存在瓶颈

%iowait⾼,说明磁盘IO传输数据的任务很多,在等待,说明磁盘传输速度不⾜,存在瓶颈

查看网络状态:sar -n DEV 1 2

2.数据库分析

慢查询:

找出查询速度慢的sql语句,慢:查询时间超过设置的阈值

性能测试项目实战四: 性能测试分析和调优

数据库连接池:

查看方法:

  • 最大连接数:show variables like “max_connections”
  • 当前使用的连接数:show status like “threads_connected”

测试点关注点:

  • 关注:利用率 = 当前使用的连接数/最大连接数 ,建议:85%左右
  • 如果利用率超过85%,连接池可能会被占满
  • 如果利用率过低,说明资源存在浪费,可能会影响其他性能指标

mysql锁

性能测试项目实战四: 性能测试分析和调优
性能测试项目实战四: 性能测试分析和调优

3.JVM瓶颈分析

性能测试项目实战四: 性能测试分析和调优
性能测试项目实战四: 性能测试分析和调优
性能测试项目实战四: 性能测试分析和调优
性能测试项目实战四: 性能测试分析和调优

4.压测机瓶颈分析

性能测试项目实战四: 性能测试分析和调优

性能调优案例

案例1 – 获取首页数据

问题分析:

1.CPU已接近100%

2.一次请求中需要查询很多数据

解决方案:

Ø提升服务器配置

Ø分批次、异步加载首页数据,首页底部的数据(如:新品首发、热卖商品、专题精选等数据)等用户向下滑动页面时再加载

案例2 – 查看商品详情

场景描述:

Ø进入商品详情页面时,加载商品的详细信息

性能测试项目实战四: 性能测试分析和调优

问题分析:

1.网络带宽已跑满

2.一次请求中返回了全部数据

解决方案:

Ø提升服务器网络带宽

Ø分批次、异步加载商品数据

案例3 – 搜索商品

场景描述:

Ø进入首页,在搜索框中输入关键字搜索商品

测试结果数据:

Ø搜索关键字“床”时,出现慢查询SQL语句

Ø查看慢查询语句cat /var/lib/mysql/localhost-slow.log,包含如下SQL语句

性能测试项目实战四: 性能测试分析和调优

问题分析:

1.找出搜索商品接口对应的SQL语句(通过查看代码实现或者从日志中获取查询SQL)。

2. 分析具体的SQL语句

3.定位问题

Ø当搜索关键字匹配到大量的商品时,第3条SQL语句会返回大量重复数据

Ø 第4条SQL语句中的in查询条件中同样包含大量重复的商品分类id

Ø因此:第4条SQL会出现查询时间较长,是由于第3条SQL返回的ID有大量重复

解决方案:

Ø优化第3条SQL语句,因该SQL语句的查询结果大部分都是重复的,可以进行去重处理

性能测试项目实战四: 性能测试分析和调优

案例4 – JVM内存溢出

场景描述:

Ø请求测试接口(/wx/index/oom),模拟内存溢出

性能测试项目实战四: 性能测试分析和调优

问题分析:

1.JVM内存占用随着时间的推移占用越来越多,直至内存溢出,系统退出

解决方案:

Ø排查代码存在的问题,及时释放无用的对象

原创文章,作者:三酷猫,如若转载,请注明出处:https://www.sankumao.com/3175.html

(0)
上一篇 2022年9月19日 下午10:17
下一篇 2022年9月20日 上午10:50

相关推荐

  • dubbo接口测试一: 传智健康项目介绍

    产品介绍 1.项目描述 2.目标群体用户 3.项目模块 会员服务、预约服务、体检报告服务、健康评估服务、健康干预服务 4.系统框架 前端:http://mobile-health-…

    2022年9月15日
  • 使用JMeter来下载第三方插件

    说明:先下载JMeter插件管理工具包,再用此包下载JMeter插件 一、安装插件管理器 1.在Jmeter官网上下载插件管理器Plugins-manager.jar 下载地址:h…

    2022年9月18日
  • Pytest高级运用之Fixture及参数化

    fixture翻译过来就是测试夹具,主要来配置测试资源,fixture是通过装饰器标注的。 一、fixture基础入门 函数在用装饰器@pytest.fixture()标记之后,该…

    2022年9月7日
  • 3.软件测试质量模型8个要素

    质量模型鱼骨图 看案例来理解 功能 需求:10个功能,功能详情。。 测试:功能数量为10个,功能正解实现,错误处理情况 性能 需求:1、预估每日在线人数20W 测试:1、服务器每秒…

    2022年5月26日
  • 网络基础知识:请求与响应

    HTTP-请求 URL URL(网址)=协议://主机地址(IP地址或域名):端口号/路径?参数名=参数值&参数名=参数值 请求方法 面试题:介绍一下http和https的…

    2022年8月7日
  • 性能测试教程四:Jmeter断言

    断言:让程序自动判断预期结果和实际结果是否一致。 提示: – JMeter在请求的返回层面会自动判断响应状态码(如果状态码为4xx/5xx,判定为失败) –…

    2022年9月18日
  • 软件缺陷定义、判定标准及缺陷报告要素

    缺陷的定义 软件在使用过程中存在的任何问题都叫软件的缺陷,简称bug。 缺陷的判定标准 软件未实现需求(规格)说明书中明确要求的功能 –少功能 软件出现了需求(规格)说明书中指明不…

    2022年7月31日
  • Appium教程四:获取toast信息

    什么是toast Android中的toast是一种简易的消息提示框,toast提示框不能被用户点击,会根据所设置的显示时间自动消失。toas要appium1.6.3以上版本才支持…

    2022年10月9日
  • PostMan Mock用法详解

    什么是mock? Mock:模拟的、仿制的、虚假的 mock 接口,模拟一些接口,在别的接口没有开发好,但又需要使用那些接口时,可以先模拟一个接口来调用。 在postman中我们要…

    2022年10月29日
  • Appium教程一:移动自动化测试环境搭建

    一、安装JDK 二、安装android-sdk 三、安装Appium 下载地址:https://github.com/appium/appium-desktop/releases。…

    2022年9月21日