TPS是怎么计算出来的?


(Transaction Per Second )即每秒事务处理量,一个表达系统处理能力的性能指标,每秒处理的消息数

【利特尔法则】(Little’s law)
该法则由麻省理工大学斯隆商学院(MIT Sloan School of Management)的教授John Little﹐于1961年所提出与证明。它是一个有关提前期与在制品关系的简单数学公式,这一法则为精益生产的改善方向指明了道路。
利特尔法则的公式描述为:Lead Time(产出时间)= 存货数量×生产节拍  或 TH(生产效率)= WIP(存货数量)/ CT(周期时间)
P.S: 稍后我们会列出负载模型中利特尔法则的应用公式。


一.系统吞度量要素:

    一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。

    单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

    系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间
        QPS(TPS):每秒钟request/事务 数量
        并发数: 系统同时处理的request/事务数
        响应时间:  一般取平均响应时间(很多人经常会把并发数和TPS理解混淆)


理解了上面三个要素的意义之后,就能推算出它们之间的关系:

        QPS(TPS)= 并发数/平均响应时间

        一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。

决定系统响应时间要素。

        我们做项目要排计划,可以多人同时并发做多项任务,也可以一个人或者多个人串行工作,始终会有一条关键路径,这条路径就是项目的工期。系统一次调用的响应时间跟项目计划一样,也有一条关键路径,这个关键路径是就是系统影响时间;关键路径是有CPU运算、IO、外部系统响应等等组成。


二.系统吞吐量评估:

    我们在做系统设计的时候就需要考虑CPU运算、IO、外部系统响应因素造成的影响以及对系统性能的初步预估。
而通常境况下,我们面对需求,我们评估出来的出来QPS、并发数之外,还有另外一个维度:日PV。
通过观察系统的访问日志发现,在用户量很大的情况下,各个时间周期内的同一时间段的访问流量几乎一样。比如工作日的每天早上。只要能拿到日流量图和QPS我们就可以推算日流量。
通常的技术方法:

        1. 找出系统的最高TPS和日PV,这两个要素有相对比较稳定的关系(除了放假、季节性因素影响之外)

        2. 通过压力测试或者经验预估,得出最高TPS,然后跟进1的关系,计算出系统最高的日吞吐量。


我们通过2个示例来看一下此法则是如何在生产环境中发生作用的。

    例1:假定我们所开发的并发服务器,并发的访问速率是:1000客户/分钟,每个客户在该服务器上将花费平均0.5分钟,根据little's law规则,在任何时刻,服务器将承担1000×0.5=500个客户量的业务处理。假定过了一段时间,由于客户群的增大,并发的访问速率提升为2000客户/分钟。在这样的情况下,我们该如何改进我们系统的性能? 根据little's law规则,有两种方案:
        第一:提高服务器并发处理的业务量,即提高到2000×0.5=1000。 或者
        第二:减少服务器平均处理客户请求的时间,即减少到:2000×0.25=500。

    例2:假设你排队参观某个风景点,该风景点固定的容纳人数是:60人。每个人在该风景点停留的平均时间是:3分钟。假设在你的前面还排有20个人,问:你估计你大概等多少时间才能进入该风景点。

        答案:1小时(3×20=60),和该景点固定的容纳人数无关。
    为了通过利特尔法则研究负载模型,我们就先要了解两个因子:响应时间(Response time)和节拍(Pacing)。实际上节拍会超越响应时间对TPS的影响。

示例1:节拍0秒,思考时间0秒
    用户执行5个事务并且每个事务的响应时间是10秒,需要花费50秒完成5个事务,即5/50=0.1 TPS (这里TPS是由响应时间控制)。
示例2:速率15秒,思考时间0秒
    用户执行5个事务且每个事务的响应时间是10秒,但实际由于节拍大于响应时间,所以它优于响应时间控制了事务发生的频率。完成5个事务需要5*15 = 75秒,产生5/75=0.06667 TPS。

在第二个示例中,平均响应时间小于节拍15秒,需要75秒完成5个迭代,产生了0.06667 TPS。

上面两个例子中我们假设思考时间为0秒。如果思考时间为2秒,总时间仍是75秒完成5个迭代,产生0.06667 TPS。

节拍为0秒,则用户数 = TPS * ( 响应时间 + 思考时间 )
节拍不为0秒且大于响应时间与思考时间的和,则用户数 = TPS * (速率)
事实上TPS是事务在w.r.t时间的速率,所以也被称为吞吐量(throughput)。
所以利特尔法则在负载模型中解释为:系统内平均用户数 = 平均响应时间 * 吞吐量
N = ( R + Z ) * X
N, 用户数
R, 平均响应时间(也可能是速率)
Z, 思考时间
X, 吞吐量(如TPS)
如:N (用户数)=1500, R (平均响应时间)=10, Z (思考时间)=0,则X (吞吐量)=1500/10=150 TPS


上一篇 下一篇

评论

登录后可发表评论