为什么80%的码农都做不了架构师?>>>
并发数可以理解为,单位时间内同时在线的人数,而这个数值是可以一直增大的;但是TPS就不一样了,TPS受限于机器的硬件资源,最常见的就是CPU load,当并发数在增大,CPU load也会上升,一般当load到达1时,满载,也代表着TPS到达一个顶峰,如果并发数继续增大,那么TPS的曲线会下降。
所以,如果用图来描述上述过程的话,并发数是一条直线,TPS是一条抛物线(当load未满载时呈现上升,满载后下降),所以我认为两者是不同的概念,不能混为一谈。
对于TPS我是认同以上的观点;一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联,单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。对于TPS的考量,这里其实有几个关键的要素:
TPS:每秒钟request/事务 数量
并发数:系统同时处理的request/事务数
RT:事务处理响应时间,一般取平均响应时间
基于此,平时我们计算TPS遵循如下关系:TPS= 并发数/RT
一个系统吞吐量通常由TPS、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某 一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。
PS:下面是性能测试的主要概念和计算公式,记录下:
一.系统吞度量要素:
一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。
单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。
系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间
QPS(TPS):每秒钟request/事务 数量
并发数: 系统同时处理的request/事务数
响应时间: 一般取平均响应时间
(很多人经常会把并发数和TPS理解混淆)
理解了上面三个要素的意义之后,就能推算出它们之间的关系:
QPS(TPS)= 并发数/平均响应时间
一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。
决定系统响应时间要素
我们做项目要排计划,可以多人同时并发做多项任务,也可以一个人或者多个人串行工作,始终会有一条关键路径,这条路径就是项目的工期。
系统一次调用的响应时间跟项目计划一样,也有一条关键路径,这个关键路径是就是系统影响时间;
关键路径是有CPU运算、IO、外部系统响应等等组成。
二.系统吞吐量评估:
我们在做系统设计的时候就需要考虑CPU运算、IO、外部系统响应因素造成的影响以及对系统性能的初步预估。
而通常境况下,我们面对需求,我们评估出来的出来QPS、并发数之外,还有另外一个维度:日PV。
通过观察系统的访问日志发现,在用户量很大的情况下,各个时间周期内的同一时间段的访问流量几乎一样。比如工作日的每天早上。只要能拿到日流量图和QPS我们就可以推算日流量。