高并发中 QPS、TPS、RT、Load、PV、UV都是什么意思!_load 与 吞吐量-程序员宅基地

技术标签: java基础  高并发  QPS  TPS  并发数  

目录

一、概述

二、指标

1、QPS(Queries Per Second)

2、TPS (Transactions Per Second)

2、RT(Res(onse Time)

3、并发数

4、吞吐量(Throughput)

5、PV(Page View)

6、UV(Unique Visitor)

7、Load(系统负载)

三、结束


一、概述

分布式、微服务、Service Mesh目前都是大家耳熟能详的词语了,现在随便一个互联网公司说出来大家都是在搞微服务。

但我们搞来搞去,怎么样来衡量一个应用当前的状态到底是怎么样的?到底需不需要扩容?是需要横向扩容还是进行项目重构?

这时候我们就需要一堆监控指标来协助我们进行分析当前的应用状态,以便在某些事故发生前进行资源上的调配或优化。

下面咱们就来说道说道这几个重要的指标,一定要记牢,不管面试还是自己用都是必须滴。

要牢记一点,所有的指标都是根据时间单位来算的,比如每秒XX、每分钟XX,要记住这个大前提,下面咱们都按秒来算。

二、指标

1、QPS(Queries Per Second)

概念:服务器每秒处理查询次数,是一台服务器每秒能够处理的查询次数。用户发起查询请求到服务器做出响应这算一次,一秒内用户完成了50次查询请求,那此时服务器QPS就是50。

2、TPS (Transactions Per Second)

概念:服务器每秒处理的事务数,一个事物是用户发起查询请求到服务器做出响应这算一次。纳尼?这难道不是QPS的概念吗?划重点,这里就要说清楚一个概念了,在针对单接口,TPS可以认为是等价于QPS的,如访问 ‘order.html’ 这个页面而言,是一个TPS。而访问 ‘order.html’ 页面可能请求了3此服务器(如调用了css、js、order接口),这实际就算产生了三个QPS

所以,总结下就是,在针对单接口的时候TPS = QPS ,否则QPS就要看实际的请求次数了。

2、RT(Res(onse Time)

概念:响应实际,就是从客户端请求发起到服务器响应结果的时间。RT这个参数是系统最重要的指标之一,它的大小直接反应了当前系统的响应状态。基本和咱们用户体验息息相关,现在好一点监控系统一般都有三个RT,即平均、最大、最小。

一般系统RT 100ms 以内是比较正常的,300ms 勉强可以接受,1s的话再加上一些其他的外因,给用户的体验就是实实在在的不爽了。

3、并发数

概念:系统能同时处理的请求的数量,很多人经常会把并发数和TPS理解混淆。举例,请求一个index.html 页面,客户端发起了三个请求(css、js、index接口),那么此时TPS =1 、QPS =3 、并发数 3。

SO,计算公式 :QPS=并发数/RT || 并发数=QPS*RT

4、吞吐量(Throughput)

概念:每秒承受的用户访问量,吞吐量(系统能承受多少压力)和当前请求对CPU消耗、内存、IO使用等等紧密相关。单个请求消耗越高,系统吞吐量越低,反之越高。

一个系统的吞吐量和其TPS 、QPS、并发数息息相关,每个系统针对这些值都有一个相对极限值,只要其中某一个达到最大,系统的吞吐量也就到达极限了。如此时压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,各种资源切换等等的消耗导致系统性能下降。

关系:

所以,理解上面几个关系后,就可以推算出:

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

5、PV(Page View)

概念:即每个页面的浏览次数,用户每次刷新就算一次。

6、UV(Unique Visitor)

概念:独立访客数,每天访问的用户数,此数据需要根据用户唯一标识进行去重。

7、Load(系统负载)

概念:此数据指的是Linux系统的负载情况,也就是咱们平时所用Top命令时,最上面显示的数据信息( load average: 0.1, 0.2, 0.5)。此时会显示1分钟、5分钟、15分钟的系统平均Load,很显然load average 的值越低,你的系统负荷越小。

简单的说下这个值应该怎么看,如果你是单核cpu,那此值为1的时候就是系统已经满负荷状态了,需要你马上去解决。但实际经验告诉我们,当系统负荷持续大于0.7的时候(也就是70%),就需要你马上来解决问题了,防止进一步恶化。

为什么需要三个值 load average: 0.1, 0.2, 0.5,其实就是给你个参考。比如只有1分钟的是1,其他俩都是0.1,这表明只是临时突发的现象,问题不大。如果15分钟内,系统负荷都是1或大于1,那表明问题持续存在啊。所以你应该主要观察15分钟的系统负荷。

三、结束

好了,简单又开心的概念说完了。可以继续进行我的王者大业了——荣耀王者在等待着我。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhangkaixuan456/article/details/108760562

智能推荐

windows 加 switchyomega + burp 抓https包-程序员宅基地

文章浏览阅读4.6k次。很简单,下载证书后导入到受信任根目录证书下载,直接在代理状态浏览器访问burp点击CA就可以下载了 设置该证书全部信任,,switchyomega 设置如下即可 就可以抓https的包了 ...

用C语言写循环赛日程表,循环赛的方法与编排-程序员宅基地

文章浏览阅读1k次。一、循环赛的种类与特点(一)循环赛的种类循环赛又称循环法。是指参赛队(或个人,下同)之间,都要互相轮流比赛,最后按照各参赛队在全部比赛中的胜负场数、得分多少排定名次的比赛方法。它在对抗性项目比赛中经常被采用。循环赛包括单循环、双循环或分组循环三种。单循环是所有参赛队(人)相互轮赛一次;双循环是所有参赛队(人)相互轮赛二次;分组循环是参赛队(人)较多时,采用种子法,把强队(人)分散在各组,先进行小组..._c语言循环赛互打一场比赛 甲队两胜

springboot项目访问html页面,发现端口不一致&继承WebMvcConfigurationSupport类会导致自动配置失效_springboot项目前端端口号不同怎么办-程序员宅基地

文章浏览阅读1.6k次,点赞4次,收藏6次。最后的解决方法“在config--WebMvcConfig中不要继承WebMvcConfigurationSupport,而是实现WebMvcConfigurer接口”,且不要在idea中直接点击浏览器图标打开对应的html页面,要自己在浏览器输入url。在本次debug过程中,更加清楚地明白了,springboot项目启动过程中,只扫描引导类同包或子包下的程序,而在resources目录下的静态资源文件(没放到),需要被映射,才能被扫描到。_springboot项目前端端口号不同怎么办

k8s.配置管理.configmap&secret_configmap @value-程序员宅基地

文章浏览阅读80次。configmap 和secret 都需要提前创建configmap和secret都可以为pod提供挂载和变量的方式变量的方式有envfrom全部变量和valuefrom单个变量的引用configmap和secret 需要和引用的pod或者资源对象在同一个ns下。_configmap @value

System.TypeInitializationException: 'The type initializer for 'MySql.Data.MySqlClient.Replication.Re...-程序员宅基地

文章浏览阅读2.2k次。下午在调试的时候报错数据库连接就报错我就很纳闷后面用原来的代码写发现还是报错System.TypeInitializationException:'The type initializer for 'MySql.Data.MySqlClient.Replication.ReplicationManager' threw an exception.'应该是出在Mysql包上的问题..._system.typeinitializationexception:““mysql.data.mysqlclient.mysqlpoolmanag

树莓派上部署jeecg-boot快速开发平台_jeecgboot linux部署-程序员宅基地

文章浏览阅读249次。系统安装Ubuntu Server(可百度)更换软件源打开位置cd /etc/apt/编辑sources.listsudo nano sources.list使用清华的软件源镜像deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main restricted universe multiversedeb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted univ_jeecgboot linux部署

随便推点

对Java和Linux的认识,Java类的认识-程序员宅基地

文章浏览阅读279次。Java使用类来构造自己的数据类型,类其实就是对一类数据和行为的数据封装;可以达到低耦合功能;Java注意啦:用类也是我们为了定义自己数据类型的一种方法,所以结构体,共用体也是一样的;都是为了处理数据而用的方法!类的存放问题: java源代码文件是以类为中心的,一个类的定义源码必须只在一个源文件实现;一个“文件名.java”文件名必须与文件中用public class 修饰的类名一致,java语法..._linux和java

快给你的Vue项目添加一个编辑图片组件吧_vue-image-editor-程序员宅基地

文章浏览阅读8.2k次,点赞20次,收藏59次。快给你的Vue项目添加一个编辑图片组件吧给大家推荐一款功能极其强大的图片编辑插件 tui.image-editor快速体验首选在你的前端项目中安装:npm i tui-image-editor// oryarn add tui-image-editor现在你就去新建一个.vue文件,复制进去下面这段代码:<template> <div id="tui-image-editor"></div></template><scr_vue-image-editor

Flutter混合开发-Null check operator used on a null value_flutter null check operator used on a null value-程序员宅基地

文章浏览阅读4.8k次。标题Flutter与Android混编在Android与Flutter混编中导入flutter的GetX框架时,配置getPages参数出错,在编译时不报错,但是运行之后,debug模式下出现红底白色的错误,错误显示为 Null check operator used on a null value,看一眼懵了,本地开发版本使用的是flutter2,配置的Getx库也确实在很早的版本中就支持了Null safety ,且配置的getPages为数组并且可为空,按照常理怎么也不可能出现这个错误!尝试的方案_flutter null check operator used on a null value

查看WIN10 SDK的版本_win10 sdk 版本好哪里查-程序员宅基地

文章浏览阅读4.4k次。查看WIN10 SDK的版本_win10 sdk 版本好哪里查

MFC C++改变控件字体大小颜色的方法_cfont设置字体大小-程序员宅基地

文章浏览阅读1.4k次。MFC C++改变控件字体大小颜色的方法_cfont设置字体大小

requests(网络请求库神器 )库快速上手_requests 在线请求工具-程序员宅基地

文章浏览阅读202次。关于requests(网络请求库神器 )库快速上手urllib、urllib2、urllib3、httplib、httplib2 都是和 HTTP 相关的 Python 模块,看名字就觉得很反人类,更糟糕的是这些模块在 Python2 与 Python3 中有很大的差异,如果业务代码要同时兼容 2 和 3,写起来会让人崩溃。好在,还有一个非常惊艳的 HTTP 库叫 requests,它是 ..._requests 在线请求工具