码字不易,欢迎大家收藏关注!

高并发系统系统指标

高并发系统核心指标

一、QPS,每秒查询

QPS:Queries Per Second是衡量信息检索系统(例如搜索引擎或数据库)在一秒钟内接收到的搜索流量的一种常见度量。该术语在任何请求-响应系统中都得到更广泛的使用,更正确地称为每秒请求数(RPS:Request Per Second)。

高性能、高并发、高可用(简称“三高”)要求的系统必须注意其QPS,才能知道何时扩容系统以处理更多请求。

二、TPS,每秒事务

TPS:是Transactions Per Second的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户端向服务器发送请求然后服务器做出响应的过程。客户端在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

QPS vs TPS:QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“QPS”之中。如,访问一个页面会请求服务器2次,一次访问,产生一个“T”,产生2个“Q”。

来自维基百科的解释如下:

在非常普通的意义上,术语每秒事务数是指每秒由某些实体执行的原子动作的数量。从更严格的角度来看,DBMS供应商和用户社区通常使用该术语来表示每秒执行的数据库事务数。最近,该术语已被用来描述一种加密货币的交易率,例如运行比特币区块链的分布式网络。能够适应实际交易量的交易速率的发展是加密货币技术研究的重要领域。

三、RT,响应时间

RT(Response-time)响应时间:执行一个请求从开始到最后收到响应数据所花费的总体时间,即从客户端发起请求到收到服务器响应结果的时间。该请求可以是任何东西,从内存获取,磁盘IO,复杂的数据库查询或加载完整的网页。

暂时忽略传输时间,响应时间是处理时间和等待时间的总和。处理时间是完成请求要求的工作所需的时间,等待时间是请求在被处理之前必须在队列中等待的时间。

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

四、Concurrency,并发数

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

并发意味着可以同时进行多个处理。并发在现代编程中无处不在,网络中有多台计算机同时存在,一台计算机上同时运行着多个应用程序。

五、吞吐量

系统的吞吐量(承压能力)和处理对CPU的消耗、外部接口、IO等因素紧密关联。单个处理请求对CPU消耗越高,外部系统接口、IO速度越慢,系统吞吐能力越低,反之越高。

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

  1. QPS(TPS):(Queries Per Second)每秒钟请求/事务数量。

  2. 并发数:系统同时处理的请求/事务数。

  3. 响应时间:一般取平均响应时间。

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

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


面试资料

我们学习软件测试必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

上面是我整理的配套资源,这些资源对于软件测试的的朋友来说应该是最全面最完整的备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

一文2000字搞懂高并发性能指标:QPS、TPS、RT、并发数、吞吐量相关推荐

  1. 一文带你搞懂C#多线程的5种写法

    一文带你搞懂C#多线程的5种写法 1.简介 超长警告! 在学习本篇文章前你需要学习的相关知识: 线程基本知识 此篇文章简单总结了C#中主要的多线程实现方法,包括: Thread 线程 ThreadPo ...

  2. 一文多图搞懂KITTI数据集下载及解析

    转载自一文多图搞懂KITTI数据集下载及解析-阿里云开发者社区 KITTI Dataset 1.图片下载:点击下载:https://s3.eu-central-1.amazonaws.com/avg- ...

  3. 如何查询你电脑的IP地址?一文带你搞懂IP地址

    上一章介绍了数据链路层--以太网数据帧的报文格式(你知道以太网数据帧在网络中如何发送和接收的吗?一文带你搞懂它),本章介绍下网络层--IP地址. 大家都知道计算机都会有一个IP地址,只有配置了IP地址 ...

  4. RPC框架:从原理到选型,一文带你搞懂RPC

    大家好,我是华仔,RPC系列的文章是我去年写的,当时写的比较散,现在重新进行整理.对于想学习RPC框架的同学,通过这篇文章,让你知其然并知其所以然,便于以后技术选型,下面是文章内容目录: RPC 什么 ...

  5. 一文带你搞懂从动态代理实现到Spring AOP

    摘要:本文主要讲了Spring Aop动态代理实现的两种方式. 1. Spring AOP Spring是一个轻型容器,Spring整个系列的最最核心的概念当属IoC.AOP.可见AOP是Spring ...

  6. RPC框架:一文带你搞懂RPC

    RPC是什么(GPT答) ChatGPT回答: RPC(Remote Procedure Call)是一种分布式应用程序的编程模型,允许程序在不同的计算机上运行.它以一种透明的方式,将一个程序的函数调 ...

  7. 【图文详解】一文全面彻底搞懂HBase、LevelDB、RocksDB等NoSQL背后的存储原理:LSM-tree日志结构合并树...

    LSM 树广泛用于数据存储,例如 RocksDB.Apache AsterixDB.Bigtable.HBase.LevelDB.Apache Accumulo.SQLite4.Tarantool.W ...

  8. 一文带你搞懂什么是测试开发!

    需要说明的是,原文发表于作者的公众号中,文章篇幅虽长,但内容朴实.且能帮助读者进一步理解测试开发工作,请读者耐心品完~ 01 开始前说点什么 1. 自我反省 公众号开通了也有两年多了,除了刚开通的那段 ...

  9. ipv6单播地址包括哪两种类型_IPV6中为啥没有ARP了呢?一文带你搞懂NDP邻居发现协议...

    前言 前面我们介绍了ICMPv6协议 除了提供ICMPv4常用的基本功能之外,还有邻居发现(ND)的功能.一文带你看懂ICMPv6和ICMPv4的区别 那么究竟什么是邻居发现协议(ND)呢? 邻居发现 ...

  10. 20张图,带你搞懂高并发中的线程与线程池!

    来源 | 码农的荒岛求生 从这篇开始将会开启高性能.高并发系列,本篇是该系列的开篇,主要关注多线程以及线程池. 一切要从CPU说起 你可能会有疑问,讲多线程为什么要从CPU说起呢?原因很简单,在这里没 ...

最新文章

  1. 循环遍历Java字符串字符的规范方法——类似python for ch in string
  2. Java 最坑爹的 10 大功能点!
  3. vim 有用命令-20190217
  4. 【企业管理】商业伦理逻辑思考模型
  5. Go语言通过odbc驱动连接华为高斯数据库
  6. spring boot mybatisplus集成_spring-boot系列之集成测试
  7. php 判断文件类型,php 判断图片文件的真实类型
  8. 超详细的Java面试题总结(三)之Java集合篇常见问题
  9. 演示如何利用log4net记录程序日志信息
  10. j2me游戏改成android,将j2me移植成android
  11. 怎么远程传输大文件?
  12. 屏幕录像专家V7.5 + 注册机
  13. android 雷达搜索动画,Android特效专辑(九)——仿微信雷达搜索好友特效,逻辑清晰实现简单...
  14. xp系统计算机蓝屏,12种XP系统蓝屏错误代码的含义和解决办法
  15. 免费云笔记软件哪个好?
  16. cocos-lua环境搭建
  17. C语言实现两个多项式加法与乘法
  18. Java获取时间格式(年月日时分秒毫秒)
  19. 【宇麦科技】群晖NAS套件之Drive的客户端安装与配置(二),新手必读!
  20. 比尔·盖茨:大家最好读读这六本书

热门文章

  1. java刷票脚本_我来分享一段自己写的刷票脚本 Version 1.0
  2. linux防恶意软件防病毒 防护工具
  3. 熊出没之奇幻空间里面的机器人图片_《熊出没之奇幻空间》里面令人触动的两个角色...
  4. vipkid、哒哒英语、vipjr在线英语品牌投资回报率哪个高?
  5. iPhone前置排线教程
  6. 诺基亚9 PureView正式发布
  7. FTP上传和下载文件名称中文乱码问题
  8. 如何制作一个商城小程序?
  9. java去除水印,Java 删除/复制Word文档水印
  10. 百度竞价关键词选词技巧