主页 > 创业  > 

性能测试分析和调优

性能测试分析和调优
步骤 性能调优的步骤

性能调优的步骤:

1.确定问题:根据性能测试的结果来分析确定bug。–测试人员职责

2.分析原因:分析问题产生的原因。----开发人员职责

3.给出解决方案:可以是修改软件配置、增加硬件资源配置、修改代码等-----开发人员职责

4.验证问题:按照给出的解决方案,重新进行测试—测试人员职责

5.分析验证结果—既要保证有问题指标得到解决,又要保证其他指标没有新问题

注意:

性能分析和调优需要经过很多轮,才能得到最终解决。 性能问题产生的原因分析:

在实际的性能测试中,会遇到各种各样的问题,比如TPS压不上去,导致这种现象的原因很多,作为测试人员应配合开发人员进行分析尽快找出瓶颈的所在。 性能问题可以产生的原因:

硬件服务器资源指标: 硬件服务器资源指标 1、服务器的硬件

CPU、内存、磁盘、外设(键盘、鼠标、显示器、散热器、机箱)

运行速度从快到慢:CPU>>内存>>磁盘

存储空间从大到小:磁盘>>内存>>CPU

2、CPU时间的介绍

CPU:单位HZ

将CPU划分为若干个时间片,为每个程序分配对应的时间片,保证所有的程序占用时间片来串行执行。

CPU使用率:表示一段时间内,正在使用的CPU时间段/总的CPU时间段*100%

已使用的时间片=用户CPU+系统CPU总时间片=用户CPU+系统CPU+空闲CPU用户CPU:所有应用程序运行时消耗的CPU系统CPU:操作系统运行消耗的CPU

CPU使用率分为用户态、系统态和空闲态

用户态:表示cpu处于应用程序执行的时间系统态:表示系统内核执行的时间空闲态:表示空闲系统进程执行的时间

查看CPU使用率的命令:top

测试关注点:

当CPU使用率高时,确定是用户CPU高,还是系统CPU高如果是用户CPU高,说明某个软件程序的CPU资源占用率高,需要定位代码程序运行的效率如果是系统CPU高,同步观察是否是其他资源(磁盘IO、内存、网络等)不足 内存和虚拟内存 内存和虚拟内存

内存:又称主存储器/物理内存,计算机中所有程序的运行都在内存中进行

虚拟内存:是计算机系统内存管理的一种技术,当计算器内存不足时,可以使用虚拟内存进行补偿。

在程序运行时,可以将程序的一部分装入内存,而将其余部分留在外存(磁盘),就可以启动程序来执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存,然后继续执行程序。同时,操作系统将内存中暂时不使用的内容换出到外存上,从而腾出空间存放将要调入内存的信息这样,系统好像为用户提供了一个比实际内存大得多的存储器,称为虚拟内存。

命令:

查看总量:top查看虚拟内存的使用量:vmstat

测试关注点:

实际内存:查看内存使用百分比,检查是否超过80%虚拟内存:查看swap的si和so是否为0,如果不为0,说明内存可能不足。 磁盘IO 磁盘IO

磁盘IO瓶颈:影响性能的时磁盘的读写速度(Input和Output速率),不是磁盘大小。

查看磁盘IO使用的命令:iostat -x 1 1 第一个1表示1s取一次数据,第二个1表示取1次数据

%iowait:CPU等待输入输出完成时间的百分比%util:表示一秒钟有百分之多少的时间用于I/O

测试关注点:

如果%iowait高,说明磁盘IO传输数据的任务很多,在等待,说明磁盘传输速度不足,存在瓶颈如果%util高,说明磁盘长时间占用CPU在发送数据,说明磁盘传输速度不足,存在瓶颈。 网络 网络

网络瓶颈:影响性能的是网络的传输速度,与网络的总带宽进行对比,接近总带宽,说明网络存在瓶颈。

查看网络使用的命令:sar -n DEV 1 2 rxkB/s:每秒接收的数据量(千字) txkB/s:每秒发送的数据量(千字) 测试关注点:

实际统计的发送速率和接收速率,与网络的总带宽进行对比,查看使用的百分比(如果无限接近100%,说明存在网络性能瓶颈)

补充介绍:

宽带:用户(业务)维度来描述网络速率的方式。例如20M宽带、100M宽带、1000M宽带 速率单位:b(bit)/s带宽:数据在网络中传输的速率,在技术中都是通过带宽来描述速率。 速率单位:B(Byte)/s 1B = 8bit实际情况:1000M宽带——对应着的宽带速率为1000/8=125M 数据库监控 数据库监控

数据库瓶颈分析——慢查询

1、慢查询:

慢查询

概念:找出查询速度慢的sql语句

慢:查询时间超过设置的阈值

慢查询的相关参数:

slow_query_long:慢查询开关

slow_query_long_file:慢查询日志存放位置

slow_query_time:慢查询时间阈值 修改完重新新建查询

查询慢查询的相关参数:show avriables like “”

设置慢查询的相关参数:set global 参数名=值

设置完成,并运行脚本抓取到慢查询的日志信息为:

测试关注点:

基于当前记录下来的慢查询sql进行进一步的分析,判断是否存在问题,需要修改。

2、数据库连接池

数据库连接池

数据库连接池:事先建立好连接,当程序请求sql执行时,直接分配空闲连接,使用完成后释放连接。节省了SQL语句执行前后连接的建立和关闭的时间。

作用:可以提高对数据库操作的性能

工作原理:

查看方法:

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

测试关注点:

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

3、mysql锁

数据库死锁

数据库瓶颈分析——数据库死锁

锁的介绍:

一个用户修改数据时,对该数据进行加锁操作,其他用户不能进行修改。只有当第一个用户修改完成后,其他用户才能修改

MySQL主要有两种锁:表级、行级。

表级锁:开销小,加锁快;不会出现死锁,锁定粒度最大,并发度最低。行级锁:开销大,加锁慢;会出现死锁,锁定粒度最小,并发度也最高。

死锁:

两个进程同时使用资源时,出现的相互争抢的现象死锁后需要等待很长的时间,要么有程序校验机制来释放,要么手动释放。

数据库中锁的介绍: 测试关注点:

show open tables where in_user>=1:查看当前正在使用的表(可能是锁定的表)show pricesslist:查看执行时间长的线程,找到对应的sql Java应用瓶颈分析—JVM内存 JVM内存

JVM(JAVA Virtual Machine)JAVA虚拟机管理JAVA程序运行时,所管理的内存

堆内存:存储动态数据,创建对象时申请的空间。给程序员使用非堆内存:存储静态数据。共JVM运行使用。 JAVA应用:

JVM监控—Jvisualcm.exe @TOC

1、在java程序启动时,添加启动参数 2、进入jdk的bin目录下,选择“exeisualvm.exe” 3、点击远程,右键选择“添加远程主机”,并设置服务器IP 4、点击主机IP,右键点击“添加JMX连接”,并设置JVM监控的端口 5、点击IP+Port,右边选择“监视”,可以查看JVM内存的实际使用情况

压测机: 压测机

压测机影响性能测试结果的原因主要是:

Jmeter单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,也会导致TPS压不上去

监控的方法:

windows压测机——任务管理器linux压测机——PerFMon 或者top命令

解决方法:

添加资源 添加多台压测机,进行分布式测试 性能测试报告 性能测试报告

性能调优案例 性能调优案例

案例1——获取首页数据(CPU高)

场景描述:进入首页后,加载首页的相关数据,包括:轮播图、频道、优惠券、团购专区品牌商直供、新品首发、热卖商品、专题精选等数据。

测试结果数据:

分析过程:

每发送一个HTTP请求,需要查询27个SQL语句,当TPS为100时,每秒要处理2700个SQL语句

解决方案:

增加CPU通过分批次、异步加载的方式,第一次进入首页时只加载第一屏的内容,下拉时再加载后续的数据

案例2——查看商品详情(网络)

场景描述: 进入商品详情页面时,加载商品的详细信息测试结果数据: 原因: 已使用的网络带宽已接近于总带宽解决方案: 增加网络带宽减少进入商品详情页时的数据请求量

案例3——搜索商品(慢查询)

场景描述: 进入首页,在搜索框中输入关键字搜索商品

测试结果数据:

搜索关键字“床”时,出现慢查询SQL语句查看慢查询语句cat/var/lib/mysql/localhost-slow.log,包含如下SQL语句:

分析步骤:

当搜索关键字匹配到大量的商品时,第3条SQL语句会返回大量重复数据第4条SQL语句中的in查询条件中同样包含大量重复的商品分类id因此:第4条SQL会出现查询时间较长,是由于第3条SQL返回的ID有大量重复

本案例解决方案:

案例4——JVM内存溢出

场景描述: 请求测试接口(wx/index/oom),模拟内存溢出测试结果数据: 解决方案: 开发定位出泄露的点,修改代码。
标签:

性能测试分析和调优由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“性能测试分析和调优