一、QPS,每秒查询
QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。

二、TPS,每秒事务
TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。QPS vs TPS:QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“QPS”之中。如,访问一个页面会请求服务器2次,一次访问,产生一个“T”,产生2个“Q”。

三、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资源:超过最佳线程数-导致资源的竞争,超过最佳线程数-响应时间递增。

压测学习总结——高并发性能指标:QPS、TPS、RT、吞吐量详解相关推荐

  1. 高并发架构系列:Redis为什么是单线程、及高并发快的3大原因详解

    Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了很多上下文切换线程的时间: 3.redis使用多路复用技术,可以处理并发的连接.非阻塞 ...

  2. Redis系列教程(四):Redis为什么是单线程、及高并发快的3大原因详解

    Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了很多上下文切换线程的时间: 3.redis使用多路复用技术,可以处理并发的连接.非阻塞 ...

  3. Redis(8)为什么是单线程、及高并发快的3大原因详解

    Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了很多上下文切换线程的时间: 3.redis使用多路复用技术,可以处理并发的连接.非阻塞 ...

  4. 阿里、字节面试必撸,阿里大能总结 410 页 Java 并发编程手册全彩版,附录高并发面试真题及答案详解

    虽然说并发编程的第一原则是不要写并发程序.但是,随着硬件的驱动和国内互联网行业的飞速发展,对软件系统的并发量要求越来越高,传统的中间件和数据库已经成为性能的瓶颈.并发编程已经成为绕不开的话题,也慢慢成 ...

  5. 高并发整体可用性:一文详解降级、限流和熔断

    水满则溢,月盈则亏,任何事物都不可能无限制的发展,我们的系统服务能力也一样. 当随着流量的不断增长,达到或超过服务本身的可承载范围,系统服务的自我保护机制的建立就显得很重要了. 本文希望可以用最通俗的 ...

  6. Java多线程学习处理高并发问题

    在程序的应用程序中,用户或请求的数量达到一定数量,并且无法避免并发请求.由于对接口的每次调用都必须在返回时终止,因此,如果接口的业务相对复杂,则可能会有多个用户.调用接口时,该用户将冻结. 以下内容将 ...

  7. 数据库学习:高并发数据库设计

    数据库学习:高并发数据库设计 随着乐视硬件抢购的不断升级,乐视集团支付面临的请求压力百倍乃至千倍的暴增.作为商品购买的最后一环,保证用户快速稳定的完成支付尤为重要.所以在15年11月,我们对整个支付系 ...

  8. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    Spring MVC 学习总结(二)--控制器定义与@RequestMapping详解 目录 一.控制器定义 1.1.实现接口Controller定义控制器 1.2.使用注解@Controller定义 ...

  9. Keras深度学习实战(3)——神经网络性能优化技术详解

    Keras深度学习实战(3)--神经网络性能优化技术详解 0. 前言 1. 缩放输入数据集 1.1 数据集缩放的合理性解释 1.2 使用缩放后的数据集训练模型 2. 输入值分布对模型性能的影响 3. ...

  10. 嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210)

    嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210) 一.SD卡介绍 1. SD卡背景知识和特点 SD卡.MMC卡.MicroSD.TF卡:这些卡其实内部就是Flash存储颗粒,比 ...

最新文章

  1. android make 没反应
  2. VSFTP配置参数详解
  3. Redis之Hash数据结构
  4. mysql 分组后取每个组内最新的一条数据
  5. Flask第一篇——URL详解
  6. C++ Socket通信类的封装(还有点小bug)
  7. LightGBM大战XGBoost,谁将夺得桂冠?
  8. 101个MySQL调试和优化技巧
  9. linux怎么定义程序执行有限级别,linux 内核是什么?
  10. 怎么设置php 中图片的大小写,php中强制字母转换大小写的方法有哪些
  11. 5个可以网上赚钱的副业,聪明人早就开始做了,现在了解也不迟!
  12. 正则表达式提取字符串全部汉字或者全部英文
  13. 《手机与数字娱乐产品可用性的分析》
  14. matlab中如何输入积分,在matlab中怎么输入特殊符号,Matlab的符号积分
  15. ctf(EasySQL)
  16. Mybatis日志源码探究
  17. (,)的用法逗号表达式
  18. MS7024 TV Encode digital数字信号转AV/SV配置说明
  19. 松勤软件测试试题,如果让你测试一个完全不熟悉的系统,你会怎么办?
  20. 维基百科没有告诉你关于宝马的什么

热门文章

  1. QQ群发消息怎么发?最全攻略分享
  2. 浏览器自定义横向滚动条_自定义滚动条–跨浏览器解决方案
  3. 4 Three.js一个案例详解
  4. solr5.3 实现同义词 扩展词典 停止词典 功能介绍
  5. 武汉有哪些牛逼的互联网公司?
  6. python爬取微博评论_详解用python写网络爬虫-爬取新浪微博评论
  7. 关于无法完全停止windowsUpdate的解决方法
  8. html缓存的图片放在哪里,浏览器图片缓存在哪
  9. 从删库到恢复到跑不了路-数据恢复工程师解说顺丰删库事件
  10. 斯坦福大学公开课 :机器学习课程笔记-[第1集] 机器学习的动机与应用