性能测试---不同视角看性能和相关术语

  在取的数据之前就把事实理论化是一个严重的错误。不理智的人扭曲事实来适应理论,而不是改变理论来适应事实。

                                  --夏洛克·福尔摩斯“波西米亚丑闻” 


  部分转载自老_张博客http://www.cnblogs.com/imyalost/p/7117320.html

  性能测试的定义:对响应时间的评估、分析,结合应用的架构和实现细节找出问题,并最终确认问题得到解决的过程。

  影响软件性能的因素:<广义>网络、I/O、内存、CPU

            <狭义>网络环境、数据库服务器、应用服务器、业务逻辑的实现方式、系统采用的架构、代码的优化程度、使用者的使用方式

           

 

  软件性能测试的应用领域:能力验证、规划能力、性能调优、瓶颈发现、性能基准比较

  有关性能方面测试岗位兴起,那么便有必要观察其他岗位的人是如何看待性能问题的:

  

   视角:

    资源分析(涉及资源:CPU、内存、磁盘、网卡、总线以及之间的关联):

 

      适合分析的指标:IOPS、吞吐量、使用率,饱和度。

 

    工作负载分析(所施加的工作负载和应用程序是如何响应的):


      分析对象:

          请求:所施加的工作负载

          延时:应用程序的响应时间

          完成度:查找错误      

     

  日常性能测试术语也结合书本和优质博客做一波总结:

  QPS:(意为每秒查询率)是对一个特定查询服务器在规定的时间内所处理流量多少的衡量标准;服务器在一秒的时间内处理了多少个请求。通常的HTTP请求,显然QPS越大代表服务器的负荷越高、处理能力越强。

   

  IOPS:每秒发生的输入/输出操作的次数,是数据传输的一个度量方法。对于磁盘的读写,IOPS指的是每秒读和谐的次数。

  

  TPS:每秒处理事务数,一般以request/second为单位

     (对于TPS和QPS的区别还是值得一提的,TPS代表处理事务;QPS代表处理流量,请求QPS是查询,而TPS是事务,事务是查询的入口,也包含其他类型的业务场景,因此QPS应该是TPS的子集!)

 

  事务:从端到端,一个完整的操作过程,比如一次登录、一次筛选条件查询,一次支付等。

 

  RT(Response Time):系统对请求做出响应的时间。

 

  ART(Average Response Time):平均响应时间。

 

  Thinking Time:思考时间,在性能测试中,模拟用户的真实操作场景。用户操作的事务与事务之间是有一定间隔的,引入这个概念是为了并发测试(有交叉业务场景)时,业务场景比率更符合真实业务场景。

 

  PV(Page View):<1>每秒用户访问访问页面的次数(此参数用于分析平均每秒有多少用户访问页面)

           <2>页面浏览量,通常是衡量一个页面甚至网站流量的重要指标;细分的话,有独立访问者数量、重复访问者数量、单独页面访问数量、用户停留时间等类型。

 

  吞吐量:指在一次性能测试过程中网络上传输的数据量的总和,也可以这样说在单次业务中,客户端与服务器端进行的数据交互总量。

      对交互式应用来说,吞吐量指标反映服务器承受的压力,容量规划的测试中,吞吐量是重点关注的指标,它能够说明系统级别的负载能力,另外,在性能调优过程中,吞吐量指标也有重要的价值。

      <协助设计性能测试场景,以及衡量性能测试场景是否达到预期的设计目标协助分析性能瓶颈>

      评价工作执行的速率,尤其是数据传输方面,这个术语用于描述数据传输速度(字节/秒或比特/秒)。在某些情况下(如数据库),吞吐量指的是操作的速度(每秒操作数或每秒业务数)

  吞吐量的计算公式:F = N(vu)·R/T

  F表示吞吐量;N(vu)表示VU的个数;R表示每个VU发出的请求(单击)的数量;T表示性能测试所用的时间。但是如果遇到性能瓶颈,该公式便不再符合关系。

 

  负载:对被测系统不断施加压力,直到性能指标超过预期或某项资源使用达到饱和,以验证系统的处理极限,为系统性能调优提供依据。

     <吞吐量与负载之间的关系:①上升阶段:吞吐量随着负载的增加而增加,吞吐量和负载成正比;

                    ②平稳阶段:吞吐量随着负载的增加而保持稳定,无太大变化或波动;

                    ③下降阶段:吞吐量随着负载的增加而下降,吞吐量和负载成反比;>

  

  响应时间:一次操作完成的时间,包括用于等待和服务的时间,也包括用来返回结果的时间。

 

  延时:描述操作里用来等待服务的时间。在某些情况下,它可以指的是整个操作时间,等同于响应时间。

 

  吞吐率:吞吐量/传输时间,即单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数量,它是衡量网络性能的重要指标

      通常情况下,吞吐率用“字节数/秒”来衡量,当然,也可以用“请求数/秒”和“页面数/秒”来衡量。

 

  并发:①狭义上的并发:所有用户在同一时间点进行同样的操作,一般指同一类型的业务场景,比如1000个用户同时登陆系统;

     ②广义上的并发:多个用户与系统发生了交互,这些业务场景可以是相同的也可以是不同的,交叉请求和处理较多。

 

  压力:系统在一定饱和状态下,例如CPU、内存等饱和情况下,系统能够处理的会话能力,以及系统是否会出现错误。

     特点:主要目的是检查系统处于压力情况下应用的性能表现,重点在于有无出错信息产生,系统对应用的响应时间等。

 

  连接池:连接池是一个进程,多个连接在一个进程中存储、管理,它是共享、可复用的。

      当客户端发起请求,先检查是否有闲置连接,如果有,则分配该连接给其使用;如果没有,则请求进入等待队列(等待空闲连接分配,这个取决于调度配置)或新建一个连接对象供其使用(取决于连接池有多少连接以及允许的最大连接数);

      每次客户端发起请求,如果都新建连接,会消耗很多的资源,连接池的存在及其特性,减少了连接的建立所消耗的资源以及节省了很多连接创建时间,给系统提供了更好的伸缩性,也有助于服务器性能的提升。

 

  标准方差:各数据偏离平均数的距离(离均差)的平均数,它能反应一个数据集的离散程度。离散程度越大,数据越不可靠。

       性能测试中引入这个术语,是为了对高峰期、平缓期的系统响应时间分布,不同业务场景的响应时间分布,以及I/o数在时间段上的分布等情况进行分析,以判断系统的稳定性。

 

  使用率:对于服务所请求的资源,使用率描述在所给定的时间区间内的资源的繁忙程度。对于存储资源来说,使用率指的就是所消耗的存储容量。

      计算方式: (基于时间) U=B/T

            U是使用率,B是T时间内系统的繁忙周期,T是观测周期

 

  资源使用率:CPU使用率:指用户进程与系统进程消耗的CPU时间百分比,长时间情况下,一般可接受上限不超过85%。

        内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存使用率可接受上限为85%。

        磁盘I/O:磁盘主要用于存取数据,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据的时候对应的是写IO操作,取数据的时候对应的是是读IO操作,一般使用% Disk Time(磁盘用于读写操作所占用的时间百分比)度量磁盘读写性能。

        网络带宽:一般使用计数器Bytes Total/sec来度量,其表示为发送和接收字节的速率,包括帧字符在内;判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。

  

  缓存:用于复制或者缓冲一定量数据的高速存储区域,目的是为了避免对较慢的存储层级的直接访问,从而提高性能。处于经济考虑,缓存区的容量要比更慢一级的存储容量要小

  缓存命中率:所需数据在缓存中找到的次数相比于没有找到的次数

        命中率 =命中次数/(命中次数+失效次数)

        缓存的热、冷和温:

          冷:冷缓存是空的,或者填充的是无用的数据。冷缓存的命中率为0(或者接近为0,当它开始变暖的时候)

          热:热缓存填充的都是常用的数据,并有着很高的命中率,例如,超过99%

          温:温缓存指的是填充了有用的数据,但是命中率还是没达到预想的高度。

          热度:缓存的热度指的是缓存的热度或者冷度。提高缓存热度的目的就是提高缓存的命中率。

        当缓存初始化后,开始是冷的,过一段时间后逐渐变暖。如果缓存较大或者下一级的存储较慢(或者两者都有),会需要一段较长的时间来填充缓存使其变暖。

 

  系统指标:并发用户数:单位时间内与系统发生交互的用户数。

       在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求。

       平均响应时间:系统处理事务的响应时间的平均值;事务的响应时间是从客户端提交访问请求到客户端接收到服务器响应所消耗的时间.

       事务成功率:性能测试中,定义事务用于度量一个或者多个业务流程的性能指标,如用户登录、保存订单、提交订单操作均可定义为事务,单位时间内系统可以成功完成多少个定义的事务,在一定程度上反应了系统的处理能力,一般以事务成功率来度量;

       超时错误率:主要指事务由于超时或系统内部其它错误导致失败占总事务的比率。

  

  估算用户并发数的公式:C=nL/T

  

  C是平均用户并发数,n是login session的数量(所谓login session定义为“用户从登陆进入系统到退出的时间段”);L是login session的平均长度;T指考察的时间段长度。

  C’≈C+3√C

  C’指并发用户数的峰值,C是平均并发用户数。该公式是假设用户的login session产生符合泊松分布而估算得到的。

 

  性能缺陷术语记录:

    内存泄漏:指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

 

    内存溢出:指你应用的内存已经不能满足正常使用了,堆栈已经达到系统设置的最大值,进而导致崩溃.、

 

    线程锁:java中引入了对象互斥锁的概念,保证共享数据操作的完整性.每个对象都对应于一个可称为‘互斥锁’的标记,每个标记保证在任一时刻,只能有一个线程访问对象.用关键字:synchronized给对象加互斥锁.其实原理还是锁住资源,同一时刻保证一个线程能够调用,这样的话有时候会导致死锁问题.线程1锁住资源A等待资源B,线程2锁住资源B等待资源A,两个线程都在等待自己需要的资源,而这些资源被另外的线程锁住,这些线程你等我,我等你,谁也不愿意让出资源,这样死锁就产生了.

    

posted @ 2018-03-07 13:38  紫陌花间客  阅读(461)  评论(0编辑  收藏  举报