QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒可以相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,做为域名系统服务器的机器的性能常常用每秒查询率来衡量。java
TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求而后服务器作出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。QPS vs TPS:QPS基本相似于TPS,可是不一样的是,对于一个页面的一次访问,造成一个TPS;但一次页面请求,可能产生屡次对服务器的请求,服务器对这些请求,就可计入“QPS”之中。如,访问一个页面会请求服务器2次,一次访问,产生一个“T”,产生2个“Q”。服务器
响应时间:执行一个请求从开始到最后收到响应数据所花费的整体时间,即从客户端发起请求到收到服务器响应结果的时间。响应时间RT(Response-time),是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。多线程
并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。并发
系统的吞吐量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个request 对CPU消耗越高,外部系统接口、IO速度越慢,系统吞吐能力越低,反之越高。系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间。性能
QPS(TPS):(Query Per Second)每秒钟request/事务 数量
并发数: 系统同时处理的request/事务数
响应时间: 通常取平均响应时间
理解了上面三个要素的意义以后,就能推算出它们之间的关系:测试
QPS(TPS)= 并发数/平均响应时间
并发数 = QPS*平均响应时间线程
咱们经过一个实例来把上面几个概念串起来理解。按二八定律来看,若是天天 80% 的访问集中在 20% 的时间里,这 20% 时间就叫作峰值时间。blog
一、天天300w PV 的在单台机器上,这台机器须要多少QPS?
( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)接口
二、若是一台机器的QPS是58,须要几台机器来支持?
139 / 58 = 3事务
对同一个系统而言,支持的线程数越多,QPS越高。假设一个RT是80ms,则能够很容易的计算出QPS,QPS = 1000/80 = 12.5
多线程场景,若是把服务端的线程数提高到2,那么整个系统的QPS则为 2*(1000/80) = 25, 可见QPS随着线程的增长而线性增加,那QPS上不去就加线程呗,听起来颇有道理,公司也说的通,可是每每现实并不是如此。
咱们想象的QPS、RT关系以下
实际的QPS、RT关系以下
恰好消耗完服务器的瓶颈资源的临界线程数,公式以下
在达到最佳线程数的时候,线程数量继续递增,则QPS不变,而响应时间变长,持续递增线程数量,则QPS开始降低。
每一个系统都有其最佳线程数量,可是不一样状态下,最佳线程数量是会变化的。
瓶颈资源能够是CPU,能够是内存,能够是锁资源,IO资源:超过最佳线程数-致使资源的竞争,超过最佳线程数-响应时间递增。
关注公众号:java宝典