QPS:QueriesPerSecond是衡量信息检索系统(例如搜索引擎或数据库)在一秒钟内接收到的搜索流量的一种常见度量。该术语在任何请求-响应系统中都得到更广泛的使用,更正确地称为每秒请求数(RPS:RequestPerSecond)。
高性能、高并发、高可用(简称“三高”)要求的系统必须注意其QPS,才能知道何时扩容系统以处理更多请求。
QPSvsTPS:QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“QPS”之中。如,访问一个页面会请求服务器2次,一次访问,产生一个“T”,产生2个“Q”。
来自维基百科的解释如下:
在非常普通的意义上,术语每秒事务数是指每秒由某些实体执行的原子动作的数量。从更严格的角度来看,DBMS供应商和用户社区通常使用该术语来表示每秒执行的数据库事务数。最近,该术语已被用来描述一种加密货币的交易率,例如运行比特币区块链的分布式网络。能够适应实际交易量的交易速率的发展是加密货币技术研究的重要领域。
并发数是指系统同时能处理的请求数量,这个也反应了系统的负载能力。
并发意味着可以同时进行多个处理。并发在现代编程中无处不在,网络中有多台计算机同时存在,一台计算机上同时运行着多个应用程序。
系统的吞吐量(承压能力)和处理对CPU的消耗、外部接口、IO等因素紧密关联。单个处理请求对CPU消耗越高,外部系统接口、IO速度越慢,系统吞吐能力越低,反之越高。
理解了上面三个指标的意义之后,就能推算出它们之间的关系:
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关系如下,
上面是我整理的配套资源,这些资源对于软件测试的的朋友来说应该是最全面最完整的备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。