【性能测试】性能测试之性能测试指标详解(性能指标、CPU、内存、负载、
磁盘)
⽬ 录
性能测试指标是衡量系统性能的评价标准,常⽤的系统性能测试指标包括:响应时间、并发⽤户/并发、点击率、吞吐量、TPS/QPS、
PV/UV;Linux服务器常⽤的性能指标包括:CPU使⽤率、内存占⽤率、磁盘IO、系统平均负载等。
⼀系统性能测试指标
1.1 响应时间
响应时间是指某个请求或操作从发出到接收到反馈所消耗的时间,包括应⽤服务器(客户端)处理时间、⽹络传输时间以及数据库服务器处理时间。⽐如⼀个页⾯从点击/输⼊到完全加载的时间;完成⼀次增加、删除、修改或者查询动作的事务响应时间等。
⼀个请求在⽹络上的传输往往要经历多个⽹络节点才能到达⽬标服务器,我们假设请求经历了三个⽹络
节点的传输时间B1、B2、B3,客户端的处理时间为A,服务器的响应时间为C。则⼀次请求的完整路径可以描述为下图:
客户端从发出请求到接收到服务器反馈的完整链路时间为A—>B1—>B2—>B3—>C(节点处理时间都包括接收和发送两个过程)。则请求的响应时间为:
响应时间=A+B1+B2+B3+C
1.2 并发
并发是指多个⽤户在同⼀时期内进⾏相同的事务处理或操作。由于⽤户在进⾏⼀系列操作流程时有⼀定的时间间隔(即⽤户思考时间)或者服务器处理请求有先后顺序,于是,就产⽣了绝对并发和相对并发概念的区分。
绝对并发是指同⼀时刻(即同⼀时间点)并发⽤户对服务器同时发送请求。
相对并发是指⼀段时间内(即同⼀时间区间)并发⽤户对服务器发送请求。
举个例⼦,⼀个并发量为10000⼈(可同时容纳10000⼈)的动物园,这⾥的并发量是指绝对并发还是相对并发呢?我们很容易理解,这个并发指的是相对并发,因为整个动物园是⼀个交织的⽹状结构,出⼊⼝、⽼虎、狮⼦、⼤象等各个动物站点都有分流的作⽤,基本不可能出现出⼊⼝或者站点能够同时承载10000⼈的情况,出⼊⼝的并发可能只有200⼈。因此这个动物园的例⼦⾥,并发量10000是指各个节点的总和,参观者参观动物园有路径的先后顺序,是相对并发的概念。⽽出⼊⼝的并发量是200⼈,则是指同⼀时间在出⼊⼝能够同时容纳200⼈,这就是绝对并发的概念。
⼀般来说,在系统的性能测试中,系统或者模块的并发更多是指相对并发,⽽接⼝的并发更倾向于绝对并发。并发性能的概念是指系统、模块或接⼝稳定运⾏,不抛出异常情况下所能够承载的并发量。
在并发性能测试中常⽤到并发⽤户数和并发请求数两个指标。顾名思义,并发⽤户数是指同⼀时间(点或区间),系统、模块或接⼝能够承载的⽤户数量;并发请求数是指同⼀时间(点或区间),系统、模块或接⼝能够承载的请求数量。
1.3 点击量/点击率
点击量是衡量⽹站流量的⼀个指标,也就是点击数clicks,是对⽹站点击数据的统计。
点击率(Clicks Ratio)也可以叫做点进率(“Click-through Rate),它是⽹站上某⼀内容被点击的次数与整个⽹站内容被显⽰次数之⽐,即clicks/views。反应了⽹站上某⼀页⾯或内容的受关注程度,经常⽤来衡量⼴告的吸引程度。⽐如的⼀篇⽂章被浏览了10w 次,⽂章中的⼴告链接被点击了2000次,那么这条⼴告的点击率是2%(2000/100000*100%)。
在性能测试领域,点击率(hit rate)常指单位时间内(每秒钟)页⾯的点击数,即每秒钟发送的http请求数量,点击率越⼤对服务器造成的压⼒也越⼤,对服务器的性能要求也越⾼。
有些⼈容易混淆点击率和点击量的概念,⽐如我们经常会听到有⼈说某⽹站的点击率是多多万,实际上这⾥的点击率指的是点击量,曝光率或者说页⾯浏览量。
1.4 吞吐量/吞吐率
吞吐量是指系统处理客户请求数量的总和,可以指⽹络上传输数据包的总和,也可以指业务中客户端与服务器交互数据量的总和。
吞吐率是指单位时间内系统处理客户请求的数量,也就是单位时间内的吞吐量。可以从多个维度衡量吞吐率:①业务⾓度:单位时间(每秒)的请求数或页⾯数,即请求数/秒或页⾯数/秒;②⽹络⾓度:单位时间(每秒)⽹络中传输的数据包⼤⼩,即字节数/秒等;③系统⾓度,单位时间内服务器所承受的压⼒,即系统的负载能⼒。
吞吐率(或吞吐量)是⼀种多维度量的性能指标,它与请求处理所消耗的CPU、内存、IO和⽹络带宽都强相关。
1.5 TPS/QPS
TPS(Transaction Per Second)是指单位时间(每秒)系统处理的事务量。事务可以是⽤户⾃定义的⼀系列操作或者动作的集合,⽐
如“⽤户注册“事务是点击注册按钮,填写⽤户注册信息,点击提交按钮,以及加载注册成功页⾯的动作集合。
QPS(Query Per Second)是指单位时间内查询或访问服务器的次数。
硬盘性能指标TPS和QPS的区别在于⼀个事务可以包含多次查询或访问服务器,也可以只查询或访问⼀次服务器。当多次查询或访问时,⼀个TPS相当于多个QPS;当只查询或访问⼀次时,⼀个TPS则等价于⼀个QPS。
1.6 PV/UV
PV和UV是衡量web⽹站性能容量的两个重要度量指标,经常⽤在电⼦商务⽹站领域中⽤来衡量⽹站的活跃度。
PV(Page View)是页⾯的浏览量或点击量,⽤户对系统或者⽹站任何页⾯的每⼀次点击或者访问都会被记录⼀次浏览量或点击量,对相同页⾯进⾏多次访问浏览量或点击量也会进⾏累计。
UV(Unique Vistor)是系统或者⽹站的独⽴访客,⼀段时间内相同客户端(或PC)访问系统或者⽹站只会被记录⼀次,连续重复访问或者浏览多个系统页⾯次数不会进⾏累计。
PV和UV按照统计周期划分,可以划分为全天PV、每⼩时PV、全天UV和每⼩时UV等。在⼀些数据或交易量⾮常庞⼤的场景中,⽐如双11或618等全民购物活动时,常常还会统计峰值PV和峰值UV。
⼆ Linux服务器性能指标
2.1 CPU使⽤率
CPU使⽤率是单位时间内服务器CPU的使⽤统计,可以⽤除CPU空闲时间外其他时间占总CPU时间的百分⽐来表⽰,即:CPU使⽤率=1-CPU空闲时间/总CPU时间
命令:#top //top⼯具间隔3s会动态滚动更新⼀次数据
字段说明:
us (user):⽤户态的CPU使⽤时间⽐例,是⽤户运⾏程序的真正时间,它不包括后⾯的ni时间;
sy (system): 内核态的CPU使⽤时间⽐例,是操作系统的运⾏时间,操作系统运⾏时,⽤户运⾏程序往往处于等待状态;
ni (nice): 表⽰低优先级⽤户态的CPU时间⽐例,取值范围为[-20,19],数值越⼤,则优先级越低;
id (idle): 表⽰空闲的CPU时间⽐例,值越⼤,CPU空闲时间⽐例越⾼,利⽤率越低;
wa (iowait): 表⽰处于IO等待状态的CPU时间⽐例;
hi (hard interrupt): 表⽰处理硬中断的CPU时间⽐例;
si (soft interrupt): 与hi相反,表⽰处理软中断的CPU时间⽐例;
st (steal): 表⽰当前系统运⾏在虚拟机中被其他虚拟机占⽤的CPU时间⽐例。
在性能测试中,系统整体的CPU使⽤率可以⽤(1-id)来计算。当us很⾼时,说明CPU时间主要消耗在⽤户代码上,可以从⽤户代码⾓度考虑优化性能;当sy很⾼时,说明CPU时间主要消耗在内核上,可以从是否系统调⽤频繁、CPU进程或线程切换频繁⾓度考虑性能的优化;当wa很⾼时,说明有进程在进⾏频繁的IO操作,可能是磁盘IO或者⽹络IO。
⼀般情况下,如果%us+%sy<=70%,我们可以认为系统的运⾏状态良好。
2.2 内存占⽤率
Linux的系统内存管理机制遵循内存利⽤率最⼤化的原则。内核会将空余的内存划分为cached(不属于free),对于有频繁读取操作的⽂件或数据会被保存在cached中。因此,对于linux系统来说,可⽤于分配的内存不⽌free的内存,同时还包括cached的内存(其实还包括buffers的内存)。
cached和buffers都属于缓存,它们的区别主要在于cached主要⽤来缓冲频繁读取的⽂件,它可以直接记忆我们打开的⽂件内容;⽽buffers主要⽤来给块设备做的缓冲⼤⼩,只记录⽂件系统的metadata以及tracking in-flight pages信息,⽐如存储⽬录⾥⾯的内容,权限等。
top⼯具既可以查看系统CPU使⽤情况,也可以查看系统内存使⽤信息。
命令:#top
在性能测试中,经常会⽤到系统已⽤内存、物理已⽤内存、系统内存占⽤率以及物理内存占⽤率这⼏个指标,它们的计算公式如下:系统已⽤内存MemUsed=MemTotal-MemFree //包含buffers和cached
物理已⽤内存-/+Used= MemTotal-MemFree-MemBuffers-MemCached
系统内存占⽤率MemUsed%=(MemUsed/ MemTotal)*100%
物理内存占⽤率-/+Used%=(-/+Used/ MemTotal)*100%
⼀般情况下,系统内存占⽤率<=70%,我们可以认为系统的内存使⽤情况良好,如果超出则说明系统内存资源紧张。
2.3 系统平均负载
当发现系统出现卡断或者运⾏不顺畅时,我们可以通过uptime,top或者w命令来查看系统的负载情况。
命令1:#uptime
命令2:#top
命令3:#w
Linux的load average表⽰系统负载的平均值,显⽰的三个数值分别表⽰1分钟、5分钟和15分钟内的平均负载情况。这⾥的平均负载是指单位时间内,系统处于可运⾏状态和不可中断状态的平均进程数,可以简单的理解为平均负载就是系统平均活跃进程数。其中可运⾏状态是指正在使⽤CPU或者正在等待CPU的进程(处于R状态:Running或者Runnable的进程);不可中断状态的进程指的是正处于内核态关键流程中的进程,处于这个流程的进程是不可打断的,⽐如等待硬件设备的I/O响应。
举个例⼦,当平均负载的值为4:
对于只有1个CPU的系统,意味着平均有3个进程竞争不到CPU;
对于拥有4个CPU的系统,意味着CPU利⽤率为100%;
对于拥有8个CPU的系统,意味着CPU利⽤率为50%,有⼀半空闲。
可以看出,当系统平均负载的值如果超过系统CPU的数量时,那么系统有可能会遇到性能瓶颈,要视具体情况⽽定。
在性能测试中,我们也经常会通过⽐较1min、5min或者15min的值,来判断系统平均负载的变化情况:
如果1min的值⼤于5min或者15min的值,说明负载在增加;
如果1min的值⼩于5min或者15min的值,说明负载在减⼩;
2.4 磁盘IO
Linux服务器性能除了CPU和内存外,还有磁盘IO也是⼀种常⽤的性能指标。
命令:#iostat –x –k 2 3 //每隔2S输出磁盘IO的使⽤情况,共采样3次
通过ll /dev/mapper命令可以查看dm-x与磁盘逻辑卷的映射关系;
字段说明:
rrqm/s: 每秒对该设备的读请求被合并次数,⽂件系统会对读取同块(block)的请求进⾏合并;
wrqm/s: 每秒对该设备的写请求被合并次数;
r/s: 每秒完成的读次数;
w/s: 每秒完成的写次数;
rkB/s: 每秒读数据量(kB为单位);
wkB/s: 每秒写数据量(kB为单位);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论