怎么理解TPS,QPS,RT,吞吐量这些性能指标
性能测试概念中:性能指标、性能模型、性能场景、性能监控、性能实施、性能报告。
性能场景中:基准场景、容量场景、稳定性场景、异常场景。
性能指标中:TPS、RT。 (记住 T 的定义是根据不同的目标来的)
通常我们都从两个层面定义性能场景的需求指标:业务指标和技术指标。这两个层面需要有映射关系,技术指标不能脱离业务指标。一旦脱离,你会发现你能回答“一个系统在多少响应时间之下能支持多少 TPS”这样的问题,但是回答不了“业务状态是什么”的问题。举例来说,如果一个系统要支持 1000 万人在线,可能你能测试出来的结果是系统能支持 1 万 TPS,可是如果问你,1000 万人在线会不会有问题?这估计就很难回答了。
所有的技术指标都是在有业务场景的前提下制定的,而技术指标和业务指标之间也要有详
QPS 一开始是用来描述 MySQL 中 SQL 每秒执行数 Query Per Second,所有的 SQL 都被称为 Query。
RPS 指的是每秒请求数。这个概念字面意思倒是容易理解,但是有个容易误解的地方就是,它指的到底是哪个层面的 Request?如果说 HTTP Request,那么和 Hits Per Second 又有什么关系呢?
HPS,这也是个在字面意思上容易理解的概念。只是 Hit 是什么?有人将它和 HTTP Request 等价,有人将它和用户点击次数等价
CPS,用的人倒是比较少,在性能行业中引起的误解范围并不大。同时还有喜欢用 CPM(Calls Per Minute,每分钟调用数)的。这两个指标通常用来描述 Service 层的单位时间内的被其他服务调用的次数,这也是为什么在性能行业中误解不大的原因,因为性能测试的人看 Service 层东西的次数并不多。为了区分这些概念,我们先说一下 TPS(Transactions Per Second)。我们都知道 TPS 是性能领域中一个关键的性能指标概念,它用来描述每秒事务数。我们也知道 TPS 在不同的行业、不同的业务中定义的粒度都是不同的。所以不管你在哪里用 TPS,一定要有一个前提,就是所有相关的人都要知道你的 T 是如何定义的
通常情况下,我们会根据场景的目的来定义 TPS 的粒度。如果是接口层性能测试,T 可以直接定义为接口级;如果业务级性能测试,T 可以直接定义为每个业务步骤和完整的业务流。
如果我们要单独测试接口 1、2、3,那 T 就是接口级的;
如果我们要从用户的角度来下一个订单,那 1、2、3 应该在一个 T 中,这就是业务级的了。
当然,这时我们还要分析系统是如何设计的。通常情况下,积分我们都会异步,而库存不能异步哇。所以这个业务,你可以看成只有 1、2 两个接口,
但是在做这样的业务级压力时,3 接口也是必须要监控分析的。所以,性能中 TPS 中 T 的定义取决于场景的目标和 T 的作用。一般我们都会这样来定事务。
响应时间
RT在性能中,还有一个重要的概念就是响应时间(Response Time)。这个比较容易理解。我们接着用这张示意图说明:
RT = T2-T1。计算方式非常直接简单。但是,我们要知道,这个时间包括了后面一连串的链路。响应时间的概念简单至极,但是,响应时间的定位就复杂了。性能测试工具都会记录响应时间,但是,都不会给出后端链路到底哪里慢。经常有人问问题就直接说,我的响应时间很慢。问题在哪呢?在这种情况下,只能回答:不知道。因为我们要先画架构图,看请求链路,再一层层找下去。比如说这样
在所有服务的进出口上都做记录,然后计算结果就行了。在做网关、总线这样的系统时,基本上都会考虑这个功能
压力工具中的线程数和用户数与 TPS