性能测试--测试指标
测试指标一般分为业务指标、资源指标、应用指标、前端指标。
业务指标
通常来说,业务方提出性能指标,比如某段时间内网站可能会带来100万UV, 1000万PV,然后研发将这些指标转化成实际性能指标,如QPS、TPS、RT等,再根据目标来设定合理的架构策略,最后测试保障这些性能指标。
UV:Unique Visitor
PV:Page View
并发用户数
指在同一时刻内,登录系统并进行业务操作的用户数量。
并发用户数对于长连接系统来说最大并发用户数即是系统的并发接入能力。
对于短连接系统而言最大并发用户数并不等于系统的并发接入能力,而是与系统架构、系统处理能力等各种情况相关。
例如系统吞吐能力很强,加上短连接一般都有连接复用,往往并发用户数大于系统的并发接入连接数。所以对于大部分短连接类型的系统,吞吐量模式(RPS模式,Request Per Second)比较适合。
一般情况下,性能测试是将系统处理能力容量测出来,而不是测试并发用户数,除了服务器长连接可能影响并发用户数外,系统处理能力不受并发用户数影响,可以用最小的用户数将系统处理能力容量测试出来,也可以用更多的用户将系统处理能力容量测试出来。
已有系统可选取高峰时刻,在一定时间内使用系统的人数,这些人数可认为是在线用户数,并发用户数可以取10%,例如在半个小时内,使用系统的用户数为10万,那么取10%(即1万)作为并发用户数基本就够了。
新系统没有历史数据作参考,建议通过业务部门进行评估。
系统处理能力
系统处理能力是指系统在利用系统硬件平台和软件平台进行信息处理的能力,通过系统每秒钟能够处理的交易数量来评价,交易有两种理解:一是业务人员角度的一笔业务过程;二是系统角度的一次交易申请和响应过程。前者称为业务交易过程,后者称为事务。两种交易指标都可以评价应用系统的处理能力。一般的建议与系统交易日志保持一致,以便于统计业务量或者交易量。系统处理能力指标是技术测试活动中重要指标。一般有如下指标:
HPS
Hits Per Second,每秒点击次数,单位是次/秒。
QPS
Query per Second,系统每秒处理查询次数,单位是次/秒。
TPS
Transaction Per Second,系统每秒处理事务数,这个指标是衡量系统的处理能力的一个非常重要的指标。 TPS 可以参照同行业系统和结合具体业务,中小企业TPS值为50~1000笔/秒,银行TPS值为1000~50000笔/秒,淘宝TPS值为30000~300000笔/秒。
已有系统可选取高峰时刻,在一定时间内(如3~10分钟),获取系统总业务量,计算单位时间(秒)内完成的笔数,乘以2-5倍作为峰值的 TPS,例如峰值3分钟内处理订单18万笔,平均TPS是1000,峰值TPS可以是2000-5000。
新系统没有历史数据作参考,建议通过业务部门进行评估。
一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器单击请求。
无论TPS、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好,根据经验,一般情况下:
金融行业:1000TPS~50000TPS,不包括互联网化的活动
保险行业:100TPS~100000TPS,不包括互联网化的活动
制造行业:10TPS~5000TPS
互联网电子商务:10000TPS~1000000TPS
互联网中型网站:1000TPS~50000TPS
互联网小型网站:500TPS~10000TPS
事务成功率
衡量系统处于压力下,业务的成功率,一般业界成功率要大于99.4%。成功率=(成功交易数/交易总数)*100%。稳定性较好的系统,其错误应该由超时引起,即为超时率。
响应时间
Response Time,简称RT,用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。
在性能检测中一般以压力发起端至被压测服务器返回处理结果的时间为计量,单位一般为秒或毫秒。
平均响应时间指系统稳定运行时间段内,同一业务的平均响应时间。
不同行业不同业务可接受的响应时间是不同的,一般情况,对于在线实时交易:
互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。
金融企业:1秒以下为佳,部分复杂业务3秒以下。
保险企业:3秒以下为佳。
制造业:5秒以下为佳。
资源指标
理想的情况下,当系统压力上不去的时候,资源成为瓶颈(正常情况下,非其他瓶颈情况下导致),这样的话加资源,系统处理能力还会上升的。
CPU利用率
CPU指标主要指的CPU使用率利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。CPU Load: 系统正在干活的多少的度量,队列长度。系统平均负载。
CPU 利用率要低于业界警戒值范围之内,即<=75%;
CPU sys%小于或者等于30%,
CPU wait%小于或者等于5%。
单核CPU也需遵循上述指标要求。
CPU Load要小于CPU 核数。
内存利用率
现代的操作系统为了最大利用内存,在内存中存放了缓存,因此内存利用率100%并不代表内存有瓶颈,衡量系统内有有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。
硬盘I/O
磁盘吞吐量是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。磁盘指标主要有每秒读写多少兆,磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。
其中磁盘繁忙率是直接反映磁盘是否有瓶颈的重要依据。一般情况下,磁盘繁忙率要低于70%。
网络I/O
网络吞吐量是指在无网络故障的情况下单位时间内通过的网络的数据数量,单位为Byte/s。
网络吞吐量指标用于衡量系统对于网络设备或链路传输能力的需求。
当网络吞吐量指标接近网络设备或链路最大传输能力时,则需要考虑升级网络设备。
指标主要有每秒有多少兆流量进出,一般情况下不能超过设备或链路最大传输能力的70%。
应用指标
空闲线程数
数据库连接数
GC/FULL GC次数
函数耗时
前端指标
页面加载时间
网络时间
(DNS、连接时间、传输时间等)
如何评价系统的性能
针对服务器端的性能,以 TPS 为主来衡量系统的性能,并发用户数为辅来衡量系统的性能。
如果必须要用并发用户数来衡量的话,需要一个前提,那就是交易在多长时间内完成,因为在系统负载不高的情况下,将思考时间(思考时间的值等于交易响应时间)加到串联链路中,并发用户数基本可以增加一倍,因此用并发用户数来衡量系统的性能没太大的意义。同样的,如果系统间的吞吐能力差别很大,那么同样的并发下TPS差距也会很大。
总结
- 系统的性能由 TPS 决定,跟并发用户数没有多大关系。
- 系统的最大 TPS 是一定的(在一个范围内),但并发用户数不一定,可以调整。
- 建议性能测试的时候,不要设置过长的思考时间,以最坏的情况下对服务器施压。
- 一般情况下,大型系统(业务量大、机器多)做压力测试,10000~50000个用户并发,中小型系统做压力测试,5000个用户并发比较常见。
性能测试策略
做性能测试需要一套标准化流程及测试策略。
在做负载测试的时候,传统方式一般都是按照梯度施压的方式去加用户数,避免在没有预估的情况下,一次加几万个用户,导致交易失败率非常高,响应时间非常长,已经超过了使用者忍受范围内;
较为适合互联网分布式架构的方式,也是阿里的最佳实践是用TPS模式(吞吐量模式)+设置起始和目标最大量级,然后根据系统表现灵活的手工实时调速,效率更高,服务端吞吐能力的衡量一步到位,
参考资料:
https://helpcdn.aliyun.com/document_detail/29338.html