衡量一个软件系统性能的好坏,在性能测试中会使用一些性能指标来进行分析和描述,以下是一些最常用的性能指标。
请求或者某个操作从发出的时间到收到服务器响应的时间的差值就是响应时间。在性能测试中,一般统计的是事务处理的响应时间。
图1-2-1是一次标准HTTP请求可能经过的处理路径和节点,那么响应时间的计算方式就是所有路径消耗的时间和每个服务器节点处理时间的累加,通常是网络时间+应用程序的处理时间。
事务是自定义的某个操作或者一组操作的集合。例如在一个系统的登录页面,输入用户名和密码,从单击“登录”按钮开始到登录完成跳转到页面,并且新的页面完全加载完成,这一个操作我们就可以定义为一个事务。
TPS是Transaction Per Second的缩写,即系统每秒能够处理的交易和事务的数量,一般统计的是每秒处理的事务数。
QPS是每秒查询率(Query Per Second)的缩写,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
在真实的用户操作中,用户的每个相邻操作之间都会有一定的间隔时间(在性能测试中,我们称为用户思考时间),所以,并发用户一般有绝对并发和相对并发之分,绝对并发是指某个时间点同时一起向服务器发出请求的并发用户数,相对并发是指一段时间内向服务器发出请求的并发用户总数。单就性能指标而言,系统的并发用户数是指系统可以同时承载的、正常使用系统功能的用户总数量。
针对并发用户我们举例说明。在京东购物网站上购买一件商品的流程包括登录,浏览商品,把商品加入购物车,去购物车结算,确认商品清单,确认收货地址信息,最后提交订单去支付。如果200人同时按照这个流程购买一件商品,因为每个人购买商品的步骤有快有慢,所以在同一时间点向服务器发出请求的用户肯定不会有200人,会远远小于200人。如果我们假设为20人,那么上面说的200个用户就是相对并发用户数,而20个用户就是绝对并发用户数。
PV(Page View的简写)即页面的浏览量或者点击量。用户每次对系统或者网站中任何页面的访问均会被记录一次,用户如果对同一页面进行多次访问,那么访问量会进行累加。PV一般是衡量电子商务网站性能容量的重要指标。PV的统计可以分为全天PV、每个小时的PV以及峰值PV(高峰1小时的PV)。
UV(Unique Visitor的简写)指系统的独立访客。访问系统网站的一台电脑客户端会称为一个访客,每天00:00点到次日00:00点内相同的客户端只能被计算一次。同样UV的统计也可以分为全天UV、每个小时的UV以及峰值UV(高峰1小时的UV)。
PV和UV通常是衡量Web网站的两个非常重要的指标,PV/s一般是由TPS通过一定的模型转化为PV的,比如如果把每一个完整的页面都定义为一个事务,那么TPS就可以等同于PV/s。PV和UV之间一般存在一个比例,PV/UV可以理解为每个用户平均浏览访问的页面数,这个比值在不同的时间点会有所波动,比如双11电商大促销时,PV/UV的比重会比平时高很多。
每秒的页面点击数我们称为点击率(也就是通常说的hit),该性能指标反映了客户端每秒向服务端提交的请求数。通常一个hit对应了一次HTTP请求,在性能测试中,我们一般不发起静态请求(指的是对静态资源的请求,比如JS、CSS、图片文件等),所以hit通常是指的动态请求。在性能测试中,我们之所以不发起静态请求是因为静态请求一般是可以走缓存,比如CDN等,很多静态请求一般都不需要经过应用服务器的处理,要么直接走CDN缓存,要么直接请求到Web服务器就被处理完成了。
吞吐量是指系统在单位时间内处理客户端请求的数量。从不同的角度看,吞吐量的计算方式可以不一样。
- 从业务角度:吞吐量可以用请求数/s、页面数/s等来进行衡量计算。
- 从网络角度:吞吐量可以用字节/s来进行衡量计算。
- 从应用角度:吞吐量指标反映的是服务器承受的压力,即系统的负载能力。
一个系统的吞吐量一般与一个请求处理对CPU的消耗、带宽的消耗、IO和内存资源的消耗情况等紧密相连。
每个请求或者事务对系统资源的消耗,用来衡量请求或者事务对资源的消耗程度,例如对CPU的消耗可以用占用CPU的秒数或者核数来衡量,对内存的消耗可以用内存使用率来衡量,对IO的消耗可以用每秒读写磁盘的字节数来衡量。在性能测试中,资源的开销是一个可以量化的概念,资源的开销情况对性能指标有着重要的影响,我们一般做性能优化时,都是尽可能让每一个请求或者事务对系统资源的消耗减少到最小。
本文节选自《软件性能测试、分析与调优实践之路(第2版)》,获作者和出版社授权发布。