• 13
  • 13
分享

性能测试,是结合被测系统应用架构、业务场景和实现细节、逻辑,对软件响应时间、处理速率、容错能力等进行分析测试,找到系统的性能瓶颈,并确认问题得到解决的过程。

由于工作需要,对性能测试缺陷分类进行了整理,这篇博客,聊聊常见的性能缺陷以及表现方式。。。

性能测试缺陷分类

缺陷类型缺陷描述
硬件磁盘空间
CPU
IO读写速率
内存
网络带宽
网络波动
CDN
延时
丢包
应用
JVM
代码逻辑
配置JDK版本
底层配置
参数配置
数据库索引
表空间
慢SQL
数据量
中间件超时
线程池
缓存策略
最大连接数
通信实现方式
负载均衡

一、硬件

磁盘空间:磁盘空间不足导致系统运行变慢,文件、日志等无法生成存放导致的性能瓶颈;

CPU:CPU的核心功能是解释计算机指令以及处理数据,性能主要体现在其运行程序的速度上。影响运行速度的性能指标包括工作频率、Cache容量、指令系统和逻辑结构等参数;

IO读写速率:即input和output,输入和输出,主要考虑数据处理时的读写速度,页交换等情况;

内存:所有的程序都是运行在内存中的,其作用是用于暂时存放CPU中的运算数据,以及与外部存储器交换的数据,内存不足会限制程序的数据处理速度,因此这也是很重要的一项性能关注指标;

二、网络

带宽:高并发情况下,如果带宽不足,可能会导致网络资源竞争,超时等情况;

网络波动:这里是从网络的稳定性来描述,即性能测试的环境,需要一个稳定的网络环境;

CDN:即内容分发服务,有时候不同的CDN策略也会影响到“用户”感知到的系统性能表现;

延时:延时的值越大,对系统性能表现影响越大(比如格斗类的PVP游戏),且性能测试的结果也存在更大的偏差;

丢包:数据在网络上是以数据包的形式传输的,如果丢包,则可能造成报错或异常的情况;

三、应用

1、JVM

堆内存分配:根据系统硬件条件来进行合理的堆内存分配,一般来说JVM的堆内存分配不要超过系统内存的25%较好;

垃圾回收算法:JAVA的动态垃圾回收机制,是基于不同的几种回收算法来进行的,根据具体的情况,选择合适的垃圾回收策略;

OOM:即内存溢出(out of memory),这个算是性能测试中很常见的一个问题,通常是由于代码问题造成的内存泄漏、GC不够彻底、内存被耗尽引起;

2、代码逻辑

常见的情况有不合理的线程引用和内存分配;

四、配置

版本:在性能测试过程中,一定要确保被测系统的版本和实际生产保持一致,否则由于版本不同带来的些许差异可能会对性能测试带来很大的偏差和影响;

底层配置:涉及到操作系统、服务器等硬件的一些配置方式不合理,带来的性能瓶颈;

参数配置:系统架构设计中,各个不同的参数配置带来的性能瓶颈;

五、数据库

索引:索引的存在就像一个标签目录一样,在执行数据库操作时提供更为快速的执行效率,减少磁盘IO操作和执行的数据库系统时间;

锁:为了保证事务的原子性和隔离性,有了锁的存在,但有时候由于某些原因造成的表锁,也是性能瓶颈的一种表现;

表空间:不合理的表空间设计,导致的数据库性能问题;

慢SQL:慢SQL会导致数据库操作时间变长,增加IO读写以及引起一些列的资源竞争等问题,常见的慢SQL原因如下(以MySQL为例):

图片 1.png

数据量:对同一张表来说,1W条数据和1000W条数据,对其进行操作时的性能表现也是不同的,因此在性能测试时对于数据的正确性可用性,以及数据量也是需要重点关注的;

六、中间件

超时:设置合理的请求或响应超时时间,是很有必要的,这点要根据具体的业务场景和系统架构来考虑,具体的超时时间,建议进行配置测试来设定;

线程池:之前的博客介绍过线程池的相关资料,线程池配置太小,很容易被使用完,太大的话又浪费资源,合理的线程池,建议进行配置测试来确定;

缓存策略:缓存的优点是减少请求响应过程中的传输时间,但有时候在高并发情况下,缓存很容易失效而导致缓存穿透,瞬间对服务端带来很大的压力;

最大连接数:关于连接数,之前的博客也介绍过,合理的连接数配置是很重要的,否则连接数太少容易导致队列等待、超时,连接数太多则浪费了系统资源;

通信实现方式:同步(sync)和异步(Async);

负载均衡策略:现在很多的系统都进行了服务集群,随之而来的就是负载均衡策略的实现,如果负载均衡不够“均衡”,在大数量的冲击下,容易导致某些服务的异常或者挂起;


作者:老张

原文链接:https://www.cnblogs.com/imyalost/p/9611566.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 11月27日消息:迅雷网游加速器于官网发布停运通知:很遗憾的通知各位用户,由于平台运营策略调整,结合整体运营情况考虑,我们怀着万分遗憾的心情宣布:迅雷网游加速器将于2022年12月1日正式停运,关停加速服务和各类活动。我们对此次停运给大家造成的不便,表示深深的遗憾和歉意!我们衷心期待您继续支持和关注迅雷旗下更多优秀产品!据了解,迅雷网游加速器普通会员每月15月,高级会员为每月30元,加速会员和高级会员可享光纤节点加速、《剑灵》《QQ炫舞》等184款游戏金牌网吧特权以及热门游戏高速下载等特权。其中高级会员还享有同等时长的迅雷白金会员、国际节点加速等特权。今年第三季度,迅雷总营收达8830万美元(...
            0 0 837
            分享
          • 1、引言在日常工作中,我们总是需要操作linux进行日志的查看,以确定报错原因。并且,作为查看日志的方式,我在面试的过程中,也会经常问求职者;但是,绝大部分的求职者就知道 cat 命令, 技术稍微好一点的可能会了解 实时查看的 tail命令。其他的方式,就很少了解了。今天,我就整理一下,关于linux的实时查询的就是方式。2、tail2.1 单文件查询tail 最常用的 :#实时查询info.log文件200条信息 tail  -f 200 info.log如果文件更新频次很快,无法及时捕捉信息, 可以与grep组合使用#查询info.log文件中&nb...
            1 0 1561
            分享
          • 前言直接入手大家可能没什么概念,迷迷糊糊,先抛出几个问题给大家,快速帮助大家了解接口测试的基本概念。接口测试测什么?什么是接口测试?和单元测试的区别?接口测试的价值和意义?怎么测试接口?怎么写用例,怎么运行用例,测试框架?一、接口测试测什么?说明一下:本人之前在某绿厂工作过,这边项目的诉求是整机的接口进行测试。简单的说一下我这边对接口测试的理解,面对用户使用的app,而app可能使用到的接口大致分成以下几类:三方接口(百度地图,腾讯,阿里,三方开源的依赖库,网络接口(http)等)应用对外提供的接口(自定义的ContentProvider,AIDL等)应用内部明显分层的跨Moudle接口(模块...
            0 0 2420
            分享
          • 一、安装Fiddler网上说要先安装.NETFramwork4,应该是由于本机已装,所以在安装Fiddler时并没有相关提示。Fiddler安装包:telerik.com/download/fi二、Fiddler通过代理连上手机首先电脑和手机要使用同一个无线网。1、Fiddler工具->选项卡,General选项卡Connections注意:fiddler监听端口设置为:88882、需要安装fiddler证书使用手机浏览器访问http://[电脑IP地址]:[fiddler设置的端口号],即可以下载fiddler的证书并安装。查看电脑IP的方法:直接在cmd下ipconfig,或者鼠标滑...
            0 0 2531
            分享
          • 信息时代,随着用户数量不断增加,业务量不断增长,企业原有数据库不足以有效支撑业务的发展,在此情况下,企业更多的是寻求一款更加稳定的数据库进行替代。本文以Sybase数据库和Oracle数据库为例。Oracle数据库是目前世界上流行的关系数据库,采用多进程多线索体系结构,而Sybase数据库采用单进程多线索体系结构。两者均采用多线索的模式,该模式能用较少的线索管理大量的用户进程,降低了对系统资源的占用,提高了系统资源的利用率。多进程较单进程的优势在于,能实现数据库事务的并行处理,提高并发事务处理的响应速度,避免了单服务器结构中很容易造成服务器进程瓶颈,进而避免了因此而引起的单服务器进程死锁。因此...
            0 1 4070
            分享
      • 51testing软件测试圈微信