TPS究竟如何计算

  • 什么是TPS
  • 用户数、在线用户数、并发用户数
  • TPS,响应时间与线程数
  • 一个秒杀活动的实际估算


什么是TPS

TPS,即Transaction Per Second,每秒事务数。是衡量系统性能的一个非常重要的指标。
每当网站有活动时,特别是秒杀类活动,我们都需要预估一下系统性能,其中就有tps。
然而tps的估算方式可谓众说纷纭,许多相关概念也都夹缠不清。
所以今天,我们就来好好理一理。

用户数、在线用户数、并发用户数

用户数是指咱们数据库中的总用户数。
在线用户数是指出于登录状态的用户数,相当于只是挂在系统上,并不对系统产生压力。
并发用户数则是真正产生了操作的用户,他们才是真正的压力之源。
所以,在考虑系统压力的时候,我们需要在意的只有并发用户数。

对于并发用户数,这里还有个概念需要澄清。即并发用户数并不等于系统并发数
假设有10万用户,如果他们都约好了,在同一时刻访问一个接口,那么我们才能说这个接口有10万并发数。
而真是情况下,这10万用户是在某段时间内,比如1分钟,陆续来访问的。所以系统并发数一般都是小于并发用户数的。(所以秒杀的可怕之处就在于,这10万用户真的是约好了同一时刻来访问…)

TPS,响应时间与线程数

先举一个例子:
一个高速公路有10个入口,每个入口每秒钟只能通过一辆车。
1、请问1秒钟最多能进几辆车?
答:1秒钟最多10辆,所以tps=10
2、每辆车需要多长时间进行响应?
答:1秒钟,所以响应时间是1秒钟
3、如果有50辆车过来,tps和响应时间是多少?
答:假设这50辆车排成5排过来,每排10辆。那么第一排的响应时间是1秒,第二排要等第一排过去了才轮到他,所以第二排的响应时间是2秒,以此类推, 平均响应时间是(1+2+3+4+5)/5=3秒。这50辆车在5秒内全部通过,所以平均tps就是50/5=10tps。
4、如何提高tps?
如果经过流程优化,使得0.5秒就能通过一辆车,那么tps就提高到了10/0.5=20了。
或者通过时间不变,把入口扩宽到20个,那么tps也提高到20了。
所以你看,经验公式就是tps=入口数/通过路口的时间。换成IT术语,就是tps=连接数/响应时间。

一个秒杀活动的实际估算

理清了上面那些概念,我们尝试来估算一个秒杀活动tps。
假设网站有100万注册用户,其中有10万用户有资格参加秒杀。我们就当这10万人到时候都来参加活动,那么并发用户数就是10万。
假设这10万用户会在10秒钟内尝试3次,那么tps就是100000*3/10=30000tps
接口响应时间我们定一个经验值200毫秒,那么并发连接数等于30000*0.2=6000。

一般来讲,并发连接数并不会成为瓶颈,但是在高并发时,服务器的的处理性能会严重下降。至于怎样抗住高并发,请见我的另一篇文章(还没写…)。