zoukankan      html  css  js  c++  java
  • 性能测试指标

    学习网站:

    http://www.51testing.com/html/35/128935-243090.html

    http://www.51testing.com/html/39/n-3711439-2.html

    一、性能测试指标

    性能测试是通过测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。

    目的:验证软件系统是否能够达到用户提出的性能指标,发现系统中存在的性能瓶颈并加以优化。

    性能指标分为两个方面:

    系统指标(与用户场景和需求相关指标)

    资源指标(与硬件资源消耗相关指标)

    系统指标说明

    1.响应时间、平均响应时间

    一个请求做出响应所需要的时间

    响应时间=网络响应时间+应用程序响应时间=(N1+N2+N3+N4)+(A1+A2+A3)

    平均响应时间:所有请求花费的平均时间

    如:如果有100个请求,其中 98 个耗时为 1ms,其他两个为 100ms

    平均响应时间: (98 * 1 + 2 * 100) / 100.0 = 2.98ms,但是,2.98ms并不能反映服务器的整体效率,因为98个请求耗时才1ms,引申出百分位数

    百分位数:以响应时间为例,指的是 99% 的请求响应时间,都处在这个值以下,更能体现整体效率。

    2.并发用户数

    并发主要是针对服务器而言,在同一时刻与服务器进行交互(指向服务器发出请求)的在线用户数。

    在线用户:指某段时间内,用户访问系统的用户数,如多个用户在浏览网页,但没有对同时对服务器进行数据请求,需要与并发用户数区分开。

    并发用户数C,计算公式C=nL/T

    n:每天访问系统的用户数

    L:在线用户从登陆到退出的时间

    T:用户每天使用系统大概多长时间

    峰值C1,即最大并发数,计算公式C1=C+³√C

    注:理解最佳并发用户数和最大并发用户数

    看了《LoadRunner没有告诉你的》之理发店模式,对最佳并发用户数和最大的并发用户数的理解小小整理了一下。

    所谓的理发店模式,简单地阐述一下,一个理发店有3个理发师,当同时来理发店的客户有3个的时候,那么理发师的资源能够有效地利用,这时3个用户数即为最佳的并发用户数;当理发店来了9个客户的时候,3个客户理发,而6个用户在等待,3个客户的等待时间为1个小时,另外的3个客户的等待时间为2小时,客户的最大忍受时间为3小时包括理发的1个小时,所以6个客户的等待时间都在客户的可以承受范围内,故9个客户是该理发店的最大并发用户数。具体的随着并发用户数的增加,响应时间,吞吐量,资源利用情况如下图所示:

    Light Load(较轻压力)-----最佳用户数(资源利用最高)---(较重压力,系统可以持续工作,但用户等待时间较长,满意度会下降)-----Heavy Load-------最大并发用户数--------Buckle Zone(用户无法忍受而放弃请求)

    最佳并发用户数:当系统的负载等于最佳并发用户数时,系统的整体效率最高,没有资源被浪费,用户也不需要等待
    最大并发用户数:系统的负载一直持续,有些用户在处理而有的用户在自己最大的等待时间内等待的时候

    我们需要保证的是:

    (1)最佳并发用户数需大于系统的平均负载

    (2)系统的最大并发用户数要大于系统需要承受的峰值负载

    怎么理解这两句话呢?

    (1)系统的平均负载:在特定的时间内,系统正在处理的用户数和等待处理的用户数的总和

    如果系统的平均负载大于最佳并发用户数,则用户的满意度会下降,所以我们需要保证系统的平均负载小于或者等于最佳并发用户数

    (2)峰值:指的是系统的最大能承受的用户数的极值

    只有最大并发用户数的大于系统所能承受的峰值负载,才不会造成等待空间资源的浪费,导致系统的效率低下

    3.吞吐量、吞吐率

    衡量网络性能的重要指标

    吞吐量:网络传输的数据量(处理客户的请求数)

    吞吐率:单位时间(可以是秒/分/时/天)内网络成功传输的数据量,如请求数/秒、页面数/秒

    4.事务,TPS(Transaction Per Second)每秒事务数

    事务:可以看作是一个动作或是一系列动作的集合,例如登录,从登录开始到登录结束为一个事务。

    TPS:衡量系统处理事务或交易的能力,即服务器对客户请求的能力,每秒处理的事务数,一般在LoadRunner上使用,设置事务,然后统计单位时间内系统可以成功完成多少个定义的事务。

    5.点击量、点击率(Hits Per Second)

    点击数:指Web Server收到的HTTP请求数。

    点击率:单位时间每秒用户向Web Server提交的HTTP请求数。

    区分鼠标点击数:如请求一个网页,网页含有3张图片,向Web Server请求的点击数:1+3=4,而鼠标的一次点击就可以访问网页,点击数只有1次

    资源指标说明

    1.硬件性能指标:CPU,内存Memory,磁盘I/O(Disk I/O),网络I/O(Network I/O

    CPU:主要解释计算机指令以及处理计算机软件中的数据

    Linux系统中top命令查看CPU的使用率

    CPU的利用率(<=75%)有:user(用户使用),sys(系统调用<=30%),wait(等待<=5%),idle(空闲)

    当user消耗高时,通过top命令查看哪个用户进程占用cpu的使用

    user消耗过高的原因可能有:

    (1)代码问题。如代码中耗时循环中不加sleep,即例如while的死循环中,没有加sleep时间,导致没有空余的时间将cpu的控制权给其他的进程,一直陷入该死循环中,cpu得不到休息,所以usr的消耗过高,则cpu的消耗高

    (2)gc频繁。gc则为垃圾回收,由于垃圾回收也是需要大量的计算,也消耗cpu,所以当gc频繁时也导致usr用户空间的消耗也过高,cpu消耗过高

    当sys消耗高时,通过top命令查看系统调用资源的情况

    sys消耗过高的原因可能有:
    (1)上下文切换频繁。上下文切换发生的情况有:中断处理,多任务处理,用户状态改变。

    中断处理,当cpu停止处理当前的进程转而处理中断请求的进程时发生上下文切换。多任务处理则为有多个进程请求cpu的处理,进程的数量多于cpu的核数,则分配进程时间片,根据时间片处理进程,意味着会强制停止一个进程而去处理另一个进程,形成频繁的上下文切换。用户状态改变则为user状态与sys状态的改变。

    wait较高时,即等待的进程占比高则可以考虑是否磁盘读写,磁盘瓶颈问题, 等待的进程较多时,cpu无论如何切换都是切换到等待的进程,导致cpu一直在频繁切换等待的线程而利用率较低

    内存:与cpu沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存分为物理内存、页面交换(Paging),SWAP内存(虚拟内存)

    页面交换:当物理内存即实际的内存满了的时候,将物理内存中不常用的进程调出存储到虚拟内存中,以缓解物理内存空间的压力,所以当物理内存与虚拟内存的数据交换频繁的时候,这时候就要关注下内存的性能情况。

    SWAP内存:为进程分配虚拟的内存空间,即调用硬盘的空间作为内存使用。

    内存的性能分析是又可用内存与页面交换来分析的,可用内存使用占70%-80%为上限,当超出这个数值,内存性能情况就比较危险,而且即使可用内存使用不超过80%的数值时,页面交换比较频繁时,也是要关注下内存情

    一般物理内存即使是满内存也不能代表内存出现问题,主要是看虚拟内存swap,虚拟内存应该<=70%,大于则可以考虑是否内存问题或者内存泄漏

    磁盘吞吐量,指单位时间内通过磁盘的数据量。主要关注磁盘的繁忙率,如果高于70%,则磁盘瓶颈

    网络吞吐量,指单位时间内通过网络的数据量,当吞吐量大于网路设备或链路最大传输能力,即带宽时,则应该考虑升级网络设备或者增加带宽,Linux命令netstate

    网络IO也有可能出现终止连接失败。例如当服务端出现大量的TIME_WAIT,见以下TCP终止连接的第4个步骤,在主动发起关闭连接方接收到结束符FIN时状态变为TIME_WAIT,这时在服务端发现大量的TIME_WAIT,意味着关闭连接是由服务端发起的。

    问?什么情况是由服务端发起关闭连接?答:在用户端的应用程序忘记关闭连接

    另外如果在服务端发现大量状态CLOSE_WAIT,则说明第二次关闭回不去,也就是TCP关闭连接的第三个步骤没有执行,停留在CLOSE_WAIT的状态,浏览器如果这时发起请求则会返回超时连接,因为服务端这边一直无法进行第二次关闭,将结束符返回去给用户端。
    注:普及TCP连接的三次握手,终止连接的四次握手

    TCP三次握手连接:

    (1)用户端发送SYN给服务器,用户端的状态为SYN_SEND

    (2)服务端接收到后发送ACK给用户端,服务端的状态为SYN_RECV

    (3)用户端接收到服务端发送过来的后发送了ACK给服务端,用户端的状态变为Estabilished

    TCP终止连接:

    (1)用户端的应用主动发起关闭连接,即应用调用close发送FIN给服务端

    (2)服务端接收到FIN后发送ACK给用户端,服务端的状态变为CLOSE_WAIT

    (3)服务端发送ACK给用户端的同时也将FIN作为一个文件结束符传递给接收端应用程序

    (4)用户端的应用程序接收到FIN后将调用close关闭它的套接字,确认FIN,这时用户端的状态变为TIME_WAIT

    (5)用户端发送ACK回执给服务端,连接终止

    2.中间件:常用的中间件例如web服务器Tomcat,Weblogic web服务器,JVM(java虚拟机),ThreadPool线程池,JDBC数据驱动

    注:http服务器和web服务器与应用服务器的差别是一个存储静态网页的服务器,一个是存储css,js等动态加载网页的服务器,而tomcat则属于应用服务器

    注:对中间件例如对服务器的性能测试,需要将监控的jmeter-server的文件下载在服务端上,然后开启即可监控被测服务器的性能,或者将监控的软件下载在被测服务器上,远程启动监控软件等

    3.数据库指标

    应关注SQL,吞吐量,缓存命中率,连接数等,则是关注sql语句执行时间,以微妙为单位,吞吐量TPS,缓存命中率应>=95%

    注:对数据库的性能测试通过jemter利用批量的sql语句对数据库进行操作,从而测试数据库的性能,前提是需要将jdbc的驱动加载在测试计划添加的驱动文件中,然后添加jdbc的前置处理器和jdbc的请求sample。

    4.JVM,java虚拟机,为使java的代码可以编译运行在不同的平台上顺畅,仿真模拟各种计算机来实现

    GC:自动内存管理程序,被引用的对象保存在内存中,当对象不被引用时则释放。关注的参数有Full GC完全java虚拟机垃圾部分回收频率

    5.前端指标

    前端应该关注页面展示,即首次显示时间,页面数量,页面大小,网络startRender,firstRender等

    注:关注前端的性能与后端的性能的不同点在于,前端是每个用户的直观的感受,以及前端页面的加载元素耗费时间给予用户的感受,而后端的性能关注点在于多用户使用系统时,服务器是否能够承受或者服务器的处理能力如何,能否以较好的响应时间响应。

    6.Load:系统平均负载,特定时间间隔内运行进程数,Load与cpu核数一致

  • 相关阅读:
    luogu 1865 数论 线性素数筛法
    洛谷 2921 记忆化搜索 tarjan 基环外向树
    洛谷 1052 dp 状态压缩
    洛谷 1156 dp
    洛谷 1063 dp 区间dp
    洛谷 2409 dp 月赛题目
    洛谷1199 简单博弈 贪心
    洛谷1417 烹调方案 dp 贪心
    洛谷1387 二维dp 不是特别简略的题解 智商题
    2016 10 28考试 dp 乱搞 树状数组
  • 原文地址:https://www.cnblogs.com/evablogs/p/7922042.html
Copyright © 2011-2022 走看看