java多线程    Java入门    vsftp    ftp    linux配置    centos    FRP教程    HBase    Html5缓存    webp    zabbix    分布式    neo4j图数据库    

QPS, TPS, RT, 并发数理解

一、QPS:Query Per Second 每秒查询数量

二、TPS:Transactions Per Second (每秒传输的事物处理个数),即服务器每秒处理的事务数。

区别,假设一个商品页面加载一次,会查询商品接口和广告接口各一次,那么计算tps的时候+1,计算qps的时候+2

假设一个系统最多会有7万用户,一天举行了一次直播,大家都来登录系统,在5分钟内全部完成登录系统,平均每分钟1.4万,每秒233个用户。TPS为233,假设登录过程查询2次,那么QPS 为466.

曾经做个广告监测系统,十台机器,高峰的时候一台并行3000个线程,按qps的理论,每台机器扛了最少3000个并发。那时候最多的时候一天能到一亿次PV。

三、RT 相应时间

响应时间:执行一个请求从开始到最后收到响应数据所花费的总体时间,即从客户端发起请求到收到服务器响应结果的时间。

响应时间RT(Response-time),是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。

四、并发数

并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。

五、吞吐量

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

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

系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间。

QPS(TPS):(Query Per Second)每秒钟request/事务 数量

并发数: 系统同时处理的request/事务数

响应时间: 一般取平均响应时间

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

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

并发数 = QPS*平均响应时间

六、实际举例

我们通过一个实例来把上面几个概念串起来理解。按二八定律来看,如果每天 80% 的访问集中在 20% 的时间里,这 20% 时间就叫做峰值时间。

公式:( 总PV数 80% ) / ( 每天秒数 20% ) = 峰值时间每秒请求数(QPS)

机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器

1、每天300w PV 的在单台机器上,这台机器需要多少QPS?

( 3000000 0.8 ) / (86400 0.2 ) = 139 (QPS)

2、如果一台机器的QPS是58,需要几台机器来支持?

139 / 58 = 3

七、最佳线程数、QPS、RT

1、单线程QPS公式:QPS=1000ms/RT

对同一个系统而言,支持的线程数越多,QPS越高。假设一个RT是80ms,则可以很容易的计算出QPS,QPS = 1000/80 = 12.5

多线程场景,如果把服务端的线程数提升到2,那么整个系统的QPS则为 2*(1000/80) = 25,

可见QPS随着线程的增加而线性增长,那QPS上不去就加线程呗,听起来很有道理,公司也说的通,但是往往现实并非如此。

2、QPS和RT的真实关系

我们想象的QPS、RT关系如下,

实际的QPS、RT关系如下,

3、最佳线程数量

刚好消耗完服务器的瓶颈资源的临界线程数,公式如下

最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间)* cpu数量

特性:

在达到最佳线程数的时候,线程数量继续递增,则QPS不变,而响应时间变长,持续递增线程数量,则QPS开始下降。

每个系统都有其最佳线程数量,但是不同状态下,最佳线程数量是会变化的。

瓶颈资源可以是CPU,可以是内存,可以是锁资源,IO资源:超过最佳线程数-导致资源的竞争,超过最佳线程数-响应时间递增。

https://cloud.tencent.com/developer/article/1920110

https://xie.infoq.cn/article/17722ca486186020ef630e146


This entry was posted in JAVA. Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/qpstpsrt/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

Leave a Reply