高并发常识:TPS、QPS等

一、概述

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

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

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

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

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

二、指标

1、RT(Res(onse Time)

一、TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)

TPS是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模块的TPS值。

Tps即每秒处理事务数,包括了

1)用户请求服务器

2)服务器自己的内部处理

3)服务器返回给用户

这三个过程,每秒能够完成N个这三个过程,Tps也就是N;

二、QPS:每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。

对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。

Qps基本类似于Tps,但是不同的是,对于一个页面的一次访问,形成一个Tps;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。

例如:访问一个页面会请求服务器3次,一次放,产生一个“T”,产生3个“Q”

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)

一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

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

QPS(TPS):每秒钟request/事务 数量

并发数: 系统同时处理的request/事务数

响应时间: 一般取平均响应时间

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

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

5、PV(Page View)

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

6、UV(UniqueVisitor)

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

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分钟的系统负荷。

创作不易,如果这篇文章对你有用,请点个赞谢谢♪(・ω・)ノ!

#常识##java##日常##工作##高并发#
日更 文章被收录于专栏

希望自己可以达到个人介绍中的状态,为此而每天努力。

全部评论

相关推荐

全程一个小时1. 介绍一下短链接系统,项目的架构,为什么做这个项目2. 说一下你在做这个项目过程中遇到的挑战、难点(短链接判重,短链接跳转,消息消费的幂等性)3. 你的项目在什么场景下会产生缓存穿透?这些并发场景是真实存在的,还是模拟出来的?4. 你是怎么解决缓存穿透的?5. 你说缓存穿透缓存了空值,过期时间设置了么?为什么要这么设置?如果过期了该怎么办?6. 那你说一下你项目的QPS是多少?(不知道,面试官:你自己项目的QPS都不知道吗?是你自己做的吗?)7. 布隆过滤器的实现原理8. 你是怎么保证消息不被重复消费的?9. synchronized的底层实现?字节码,moniter,偏向锁,轻量级锁,自旋锁10. 介绍一下aqs的底层原理11. 说一下new一个对象的过程 (我扯到类加载上面去了,问我你知道什么是内存吗?之后我又说首先开辟空间,初始化成员变量,指针指向对象?还是不对。问我堆是怎么划分的,才知道在问什么)12. 介绍一下HashMap的实现13. 说一下HashMap的put流程 (说了一堆很详细,看出来面试官已经不耐烦了)14. 介绍一下MySQL事务的特性,并分别说明他们底层的实现(ACID 把C 和 D还说反了)15. 算法:反转区间链表16. 算法:第K大的数 (应该拿优先队列写的,二分 + partition给我写懵了)17. 你平时是怎么学习的?18. 反问总结:第一次碰到这么严格的面试官,心态炸了
点赞 评论 收藏
转发
1 5 评论
分享
牛客网
牛客企业服务