先看图:
上述图中,三线,三区,两点,三状态
- 三条曲线:吞吐量的曲线(紫色),使用率/用户数曲线(绿色),响应时间曲线(深蓝色)
- 三个区域:轻负载区(Light Load),重负载区(Heavy Load),塌陷区(Buckle Zone)
- 两个点:最优并发用户数(The Optimum Number of Concurrent Users),最大并发用户数(The Maximum Number of Concurrent Users)
- 三个状态描述:资源饱和(Resource Saturated),吞吐下降(Throughput Falling),用户受影响(End Users Effected)
TPS:
描述每秒事务数(Transaction Per Second),在不同的行业或者业务中定义的粒度都是不相同的,不管在哪里使用TPS,都因该有一个前提,所有相关的人都需要知道T的具体定义
如何定义TPS?
一般来说,会根据场景的目的来定义TPS的粒度,如果是接口层性能测试,T可以直接定义为接口级;如果是业务级别的性能测试,T可以直接定义为每个业务步骤和完成整的业务流;
如果单独测试接口1,2,3,则T就是接口级别的,如果我们要从用户的角度来下一个订单,那1,2,3应该在一个T中,则是业务级的。
所以,性能中TPS中的T的定义取决于场景目标和T的作用,一般我们都会这样来定义事物
- 接口级别脚本
事务start(接口1)---> 接口1脚本 ---> 事务end(接口1)
事务start(接口2)---> 接口2脚本 ---> 事务end(接口2)
事务start(接口3)---> 接口3脚本 ---> 事务end(接口3)
- 业务级别脚本
事物start(业务A)---> 接口1脚本-接口2(同步调用)--->接口1脚本-接口3(异步调用)--->事务end
- 用户级别脚本
事物start(业务A)---> 点击0-接口1脚本-接口2(同步调用)--->点击0-接口1脚本-接口3(异步调用)--->事务end
一般来说,我们会从上倒下的顺序一一的测试,这样路径清晰地执行容易定位问题
在性能测试过程中,TPS之所以重要的原因,是因为他可以反应出一个系统的处理能力
QPS:
一开始是用来描述 MySQL 中 SQL 每秒执行数 Query Per Second,所有的 SQL 都被称为 Query,其实描述的是服务的DB层数据库中SQL每秒的执行条数,如果描述的前端每秒查询数,就不包括插入更新删除更新操作了,这样描述系统整体的性能就不全面了,所以并不建议使用,以免产生误解。
RPS:
每秒请求数,Request per second,比较宽泛,常用于描述HTTP Resquest
HPS:
每秒点击数,Hits Per Second,hit一般用来描述http request,也有用来描述在界面上的点击次数,如果当他描述HTTP Resqust时,与RPS盖面一致
CPS/CPM
Calls Per Second/ Calls Per Minutes,每秒 / 每分钟调用次数
RT:
响应时间,response time
如上图,RT = T2 - T1,计算响应时间比较简单,但是响应时间的定位比较复杂;
压测工具中线程数和用户数与TPS
实际上,并发的线程并不能等价为真实用户,如下图开始解释
上图的4个箭头,每个箭头都代表着相同的事务,每个线程都可以在1s内完成4个事务,所以总的TPS为16