1-响应时间
响应时间指从用户或事务在客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,这整个过程所消耗的时间
在性能测试实践中,为了使响应时间更具代表性,响应时间通常是指事务的平均响应时间ART
在实践中要注意,不同行业、不同业务可接受的响应时间是不同的。一般情况下,对于在线实时交易,可接受的响应时间参考如下。
❑互联网企业:500毫秒以下,例如淘宝业务为10毫秒左右。
❑金融企业:1秒以下为佳,部分复杂业务为3秒以下。
❑保险企业:3秒以下为佳。❑制造业:5秒以下为佳。
2-用户数
从不同的角度来看,用户数可以分为系统注册用户数、在线用户数和并发用户数。其中,并发用户数指在同一时间段内,同时向系统提交请求的用户数。
在系统建设的规划阶段,有时候需要预测和提供系统能够支撑的并发用户数,作为系统建设的性能要求(需求)。此时可以根据系统规划的注册用户数、同时在线用户数及用户对系统的预期使用场景等进行分析,计算系统的并发用户数
平均并发用户数的计算公式:C=n×L/T
系统的具体并发用户数取决于具体的业务逻辑和业务场景。根据经验,一般应用系统并发用户数为在线用户数的10%~20%。基于泊松分布理论,并发用户数的峰值计算公式:
其中:
❑P代表并发用户峰值,即最大并发用户数;
❑C是平均并发用户数。一般情况下,大型系统(业务量大、机器多)做压力测试会选取1万~5万个并发用户,中小型系统做压力测试选取5000个用户比较常见。
3-系统处理能力
系统处理能力一般用系统的吞吐量,即系统在单位时间内能够完成的事务数量来衡量。例如,系统每秒处理事务数也称为每秒事务数,即TPS(Transaction Per Second)。从业务的角度看,系统处理能力也可以用页面数/秒、人数/天、处理事务数/小时等单位衡量。
在衡量系统处理能力指标TPS时,需要说明相关的前提条件,如并发用户数及存储上限、网络带宽等系统资源限制情况。
在没有性能瓶颈的情况下,TPS与并发用户数之间存在一定的联系
F=VU×R/T
❑F代表TPS;❑VU是并发用户数;❑R是每个并发用户发出的事务请求数;❑T是性能测试所用的时间。
在业界,一般用TPS来衡量整个业务流程,而且其数值越大越好。对于新建设系统,若没有历史数据做参考,可以根据经验参照同行业系统,并结合具体业务,由业务部门评估TPS标准。一般行业中的TPS参考标准如下。❑金融行业:1000~50000TPS,不包括互联网化的活动。
❑保险行业:100~100000TPS,不包括互联网化的活动。
❑制造行业:10~5000TPS。
❑互联网电子商务:10000~1000000TPS。
❑互联网中型网站:1000~50000TPS。
❑互联网小型网站:500~10000TPS。
4-错误率
错误率指的是系统在负载情况下出现失败交易的概率。错误率的计算公式如下:
错误率=(失败交易数÷交易总数)×100%不同系统对错误率的要求不同,但一般不超出6‰,即成功率不低于99.4%。
在测试过程中,若系统错误率升高,则说明系统的可用性在变差
5-成功率
成功率是指系统处于某种负载压力下出现成功交易的概率。成功率的计算公式如下:成功率=(成功交易数÷交易总数)×100%不同系统对成功率的要求不同,业界中系统成功率一般不低于99.4%
6-资源占用率
资源占用率也称为资源利用率或资源使用率,指系统在负载运行期间对资源的使用程度,包括数据库服务器、应用服务器、Web服务器的CPU、内存、硬盘、外置存储、网络带宽等资源的占用率。
资源占用率是测试和分析系统性能瓶颈的主要参考。
通常低于20%的使用率表示资源空闲,20%~60%的使用率表示资源使用稳定,60%~80%的使用率表示资源使用饱和,超过80%的资源使用率表示必须尽快进行资源调整和优化
7-CPU利用率
CPU利用率是判断系统处理能力以及运行是否稳定的重要参数。如果该值持续超过95%,则表明系统瓶颈是CPU,可以考虑增加一个CPU或更换一个更快的CPU。CPU利用率一般可接受的最大上限是85%,合理使用的范围为60%~70%。
8-内存页交换速率
如果该值偶尔升高,则表明当时有线程竞争内存。如果该值持续很高,则内存可能是瓶颈,也可能是内存访问命中率低。
内存页交换速率(Swap Rate)是指操作系统在物理内存不足时,将部分内存数据转移到磁盘上的过程。它表示单位时间内发生的内存页交换的数量。
当系统的物理内存不足以容纳当前运行的进程所需的所有数据和代码时,操作系统会将部分不常用的内存页转移到磁盘的交换空间(Swap Space)中。这样可以释放物理内存供其他进程使用,同时保持系统的正常运行。
内存页交换速率的值越高,表示系统中频繁进行内存页交换的情况越严重,可能会导致性能下降。因为将数据从硬盘读取到内存或者将内存页写回到硬盘都需要一定的时间和系统资源。频繁的内存页交换可能会增加系统的响应时间,并导致额外的 CPU 开销和磁盘 I/O 开销。
通常,较低的内存页交换速率是理想的,因为它表示系统能够更好地利用物理内存,避免过多的磁盘访问。如果你发现内存页交换速率过高,可以考虑增加系统的物理内存或者优化应用程序、调整系统的内存管理策略来减少内存交换的发生。
9-内存占用率
系统一般至少有10%可用内存,内存占用率可接受上限为85%。
为了最大限度利用内存,现在的操作系统在内存中设置了缓存,因此即便内存利用率为100%也并不一定代表内存有瓶颈,衡量系统内存是否有瓶颈主要看与虚拟内存的交换空间利用率。
一般情况下,交换空间利用率要低于70%,太多的交换将会引起系统性能低下。内存资源成为系统性能瓶颈的征兆包括:❑很高的内存页交换速率;
❑进程进入不活动状态;
❑交换区所有磁盘的活动次数很高;
❑很高的全局系统CPU利用率;
❑内存不足或出错。
10-磁盘IO
磁盘是指系统用于存储数据的设备。磁盘IO操作主要包括从存储设备上读取数据以及写入数据到存储设备上这两种操作。存数据的时候对应的是写操作,取数据对应的是读操作。一般使用Disk Time(磁盘用于读写操作所占用的时间百分比)和Disk Rate(磁盘交换率)衡量磁盘的读写性能。性能测试过程中,如果被测系统对磁盘读写过于频繁,Disk Rate的值很高,则会导致大量请求处于IO等待的状态,系统负载升高,响应时间变长,吞吐量下降。上述这些现象均表明IO有问题,可能存在磁盘瓶颈,此时可考虑更换更快的硬盘系统。IO资源成为系统性能瓶颈的征兆包括:
❑过高的磁盘利用率;
❑太长的磁盘等待队列;
❑等待磁盘IO时间所占的时间百分比太高;
11-磁盘吞吐量
磁盘吞吐量是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。磁盘吞吐量一般使用每秒总字节数来度量,单位为字节/秒。磁盘指标主要有每秒读写多少MB、磁盘繁忙率、磁盘队列数、平均服务时间、平均等待时间、空间利用率等。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的重要依据,一般情况下磁盘繁忙率要低于70%。
12 网络吞吐量
网络吞吐量是指在无网络故障的情况下单位时间内通过网络的数据量,表示发送和接收字节的速率。网络吞吐量的单位一般是字节/秒。网络吞吐量用于衡量系统网络设备或系统链路的数据传输能力,可通过专门的网络监测工具获取。在实际性能测试中,如果发现系统始终报连接超时错误,而通过手工方式可以正常访问系统,那么可以使用ping指令通过应用服务器IP或网关IP来检查网络的稳定性,如果出现网络严重延迟或丢包,则说明网络不稳定,需要检查网络。网络吞吐量也可以表示网络的带宽占用率,通过该值和网络的带宽比较,可以判断出网络连接速度是不是瓶颈。如图2-6所示,随着横轴并发用户数的增加,网络吞吐量也在增加,网络吞吐量的增长率与并发用户数的增长率基本相同。
一般情况下,网络吞吐量不能超过设备或链路最大传输能力的70%,如果网络吞吐量指标接近网络设备或链路的最大传输能力,则需要考虑升级网络设备。
13-系统稳定性
系统的稳定性指标通常使用系统的最短稳定时间来表示,即系统在最大容量的80%或标准压力(系统的预期日常压力)下能够稳定运行的最短时间。一般来说,对于正常工作日(8小时)运行的系统,至少应该保证稳定运行8小时以上。对于7天24小时不间断运行的系统,至少应该够保证稳定运行24小时以上。在系统稳定运行的时间段内观察系统的TPS曲线,TPS曲线应该是稳定的,不应出现大幅度波动,且系统各项资源指标没有出现泄漏或异常情况。如果系统不能稳定运行,随着系统上线后业务量增长和长时间运行,系统将会面临性能下降甚至崩溃的风险。
14- 系统扩展性
系统扩展性指应用软件或操作系统以群集方式部署时,增加的硬件资源与获得的处理能力之间的关系。系统扩展性指标的计算公式如下:
评估系统的扩展能力应通过多轮测试获得扩展性指标的变化趋势。一般扩展能力非常好的应用系统,扩展性指标的变化曲线应是线性或接近线性的。现在很多大规模的分布式系统的扩展能力非常好。理想的系统扩展能力是资源增加几倍,性能就提升几倍。扩展性指标的值至少为70%。
15-内核参数
内核参数操作系统的内核参数主要包括信号量、进程、文件句柄等,如表2-3所示。系统运行期间,一般保证这些参数的值不超过设置的参考值。
中间件指标
对于常用的中间件(如Tomcat、WebLogic),指标主要包括JVM、ThreadPool、JDBC
❑GC频率不能过高,特别是Full GC。在系统性能较好的情况下,一般JVM最小堆大小和最大堆大小分别设置为1024MB比较合适。
❑当前正在运行的线程数不能超过设定的最大值。在系统性能较好的情况下,一般线程数最小值设置为50,最大值设置为200。
❑当前运行的JDBC活动连接数不能超过设定的最大值。在系统性能较好的情况下,一般JDBC最小值设置为50,最大值设置为200。
17 数据库指标
对于常用的数据库(如MySQL),指标主要包括SQL、吞吐量、命中率、连接数等
❑SQL耗时越小越好,一般情况下为微秒级别;
❑命中率越高越好,一般情况下不能低于95%;
❑锁等待次数越少越好,等待时间越短越好。
18-前端指标
前端指标主要包括页面展示和网络连接消耗的时间
在实践中,前端页面要尽可能小,因为这样页面展示就会越快,花费的时间就会越短,用户体验就会越好。
性能测试和监测的度量指标样例表
本文《企业性能测试:体系构建、落地指导与案例解读》