性能测试的分析和调优

性能测试的分析和调优
步骤:确定问题(测试) —— 分析问题原因(开发) —— 给出解决方案(开发) —— 验证问题(测试) —— 分析结果(测试/开发)

从资源方面来看:

CPU:用户CPU、系统CPU

查看CPU使用率的命令:top

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


内存:实际内存、虚拟内存

查看内存使用的命令 :vmstat 3 10


磁盘:input和output速率

 查看磁盘IOs使用的命令 :iostat -x 1 1

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


网络:传输速率

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

查看网络使用的 命令: sar -n DEV 1 2

从应用服务器(JVM)配置来看的话:

JAVA 应用瓶 颈分析 —— JVM

常见的内存问题:
Ø 内存泄露 memory leak,是指程序在申请内存后,无法完全释放已申请的内存空间。
Ø 一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
Ø 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of
memory
Ø memory leak会最终会导致out of memory!

可以使用JVM 监 控 —— 使用本地 jvisualvm 远程监控服务器 :

第一步:在cmd里面输入java监控运行程序

java -server -Dfile.encoding=UTF-8 -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.176.134 -Dcom.sun.management.jmxremote.port=888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar /home/itheima/litemall/litemall-all-0.1.0-exec.jar

第二步:进入本地jdk安装目录bin目录,找到jvisualvm.exe并启动

第三步:右键“远程”选择“添加远程主机”,并输入主机IP

第四步:右键主机选择“添加JMX连接”,并输入JMX端口

第五步:连接成功后在主机下会有对应的连接显示,双击查看监控信息 

从数据库服务器配置来看:

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

慢查询定义:指执行速度低于设置的阀值的SQL语句
作用:帮助定位查询速度较慢的SQL语句,方便更好的优化数据库系统的性能

mysql> show variables like "slow_query%"

使用这个可以查看慢查询的日志开启状态以及存放位置

mysql> show variables like "long_query_time"

慢查询的时长设置

慢查询 开启 并配置:
Ø mysql> set global slow_query_log='ON'; #开启慢查询日志
Ø mysql> set global slow_query_log_file='/data/slow_query.log'; #设置慢查询日志存放位置
Ø mysql> set global long_query_time=1; # 设置慢查询时间标准,设置之后需要重启才能发现数据变化

数据库瓶颈分析 —— 数据库连接池

试关注点:
Ø MYSQL官网给出了一个设置最大连接数的建议比例:Max_used_connections / max_connections * 100% ≈ 85%,需要关注
MYSQL的最大连接数 和 系统运行时数据库已建立连接数的比例
Ø 如果已使用连接数与最大连接数比例超过85%,需要增加最大连接数设置,否则会造成连接失败
Ø 如果已使用连接数与最大连接数比例小于10%,那显然设置的过大,会造成系统资源的浪费

查看 MYSQL 最大连接数

mysql> show variables like "%max_connections%"

查询当前数据库已建立连接数:

mysql>show status like "Threads_connected"

死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象。

测试关注点(初步确定死锁)
Ø show open tables where in_use>=1 查询当前是否锁表
• 如果表锁了,这个sql可以查询出来
• 但是这个sql查出来的表,不一定是被锁住的。因为用查询,如果耗费时间很长,也会查询出来
Ø show processlist:查看执行时间最长的线程,找到对应sql,找到表

从程序来看(就是程序员写的代码)

从测试机资源来看:

压测机瓶颈分析 —— 压测机

 压 测机影响性能测试结果的原因主要是 :
Ø JMeter单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,也会导致TPS压不上去
压测机资源的监控方法:
Ø Windows测试机:自带“任务管理器”
Ø Linux测试机:PerfMon组件

增加线程数,但是QPS不增加,或者增加线程数,QPS不是等比例增加,此时就证明压测机出现瓶颈。

1、带宽影响:所有接口每秒响应数据,或者请求数据,超过了带宽可以传输的最大值。比如当前网速的下载速度是5M/s,而接口总的响应数据是6M/s,则有5M可以在一秒内响应成功,另外1M的接口只能等到下一秒

2、cpu性能影响:当总的响应数据或请求数据未超出带宽速率时,则有可能是压测机的CPU占用率太高,即CPU的性能已经不足以支撑更高的并发率导致QPS上不去。压测时可以同时查看CPU的占用率,如果一直持续在100%则说明已经达到了CPU的性能极限。

3、运行内存:压测机的运存太小,压测时无法存入更多的对象、变量、数据等,导致内存溢出,只能等待内存释放,才能继续存入。

4、磁盘容量:磁盘剩余空间不足,导致接口不能继续写入数据。

5、磁盘读写速度:压测的接口需要读取或者写入数据到本地文件

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
游戏测试性能测试是指通过一系列测试来评估游戏在不同硬件和软件环境下的性能表现,包括帧率、加载时间、响应时间等指标。而性能调优是指对游戏进行优化,以提升其性能表现和用户体验。 在进行游戏测试性能测试时,可以采用以下步骤: 1. 确定测试目标:明确测试的重点和目标,例如帧率、加载时间、内存占用等。 2. 设计测试场景:创建不同的游戏场景,包括复杂场景和高强度操作,以模拟真实游戏使用情况。 3. 选择测试工具:根据需求选择合适的性能测试工具,例如Unity Profiler、Unreal Engine Profiler等。 4. 运行测试并记录数据:执行测试场景,并记录关键指标的数据,如帧率、CPU和GPU使用率等。 5. 分析和优化:根据测试结果分析性能瓶颈,并针对性地进行优化,例如减少渲染负荷、优化算法、减少资源消耗等。 6. 重复测试和优化:反复执行测试和优化步骤,直到达到预期的性能目标。 在性能调优方面,可以采取以下方法: 1. 图形渲染优化:使用合适的渲染技术和优化算法,减少渲染负荷,提高帧率。 2. 内存管理优化:合理管理游戏资源的加载和卸载,避免内存泄漏和过度占用。 3. 算法优化:对游戏中的关键算法进行优化,提高计算效率。 4. IO优化:合理使用IO操作,减少磁盘读写次数和延迟。 5. 数据压缩和网络优化:使用压缩算法减小数据传输量,优化网络连接,减少延迟。 总之,游戏测试性能测试和性能调优是提高游戏性能和用户体验的重要环节,通过科学的测试和针对性的优化,可以使游戏在各种硬件和软件环境下都能够流畅运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值