一、概述

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

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

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

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

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

二、指标

1、TPS:Transactions Per Second

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

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

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

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

1)用户请求服务器

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

3)服务器返回给用户

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

2、QPS:每秒查询率(Query Per Second)

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

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

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

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

每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。(看来是类似于TPS,只是应用于特定场景的吞吐量)。
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 80% ) / ( 每天秒数 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 0.8 ) / (86400 0.2 ) = 139 (QPS)
问:如果一台机器的QPS是58,需要几台机器来支持?
答:139 / 58 = 3

3、RT(Response Time)

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

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

4、并发数

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

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

并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。实际上,并发用户数是一个非常不准确的指标,因为用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求。一网站系统为例,假设用户只有注册后才能使用,但注册用户并不是每时每刻都在使用该网站,因此具体一个时刻只有部分注册用户同时在线,在线用户就在浏览网站时会花很多时间阅读网站上的信息,因而具体一个时刻只有部分在线用户同时向系统发出请求。这样,对于网站系统我们会有三个关于用户数的统计数字:注册用户数、在线用户数和同时发请求用户数。由于注册用户可能长时间不登陆网站,使用注册用户数作为性能指标会造成很大的误差。而在线用户数和同事发请求用户数都可以作为性能指标。相比而言,以在线用户作为性能指标更直观些,而以同时发请求用户数作为性能指标更准确些。

5、吞吐量(Throughput)

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

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

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

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

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

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

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

或者

并发数 = QPS*平均响应时间

6、PV(Page View)

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

7、UV(UniqueVisitor)

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

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

高并发常识:TPS、QPS等相关推荐

  1. 压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解

    一.QPS,每秒查询 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量 ...

  2. 都在讨论高并发,结果连并发量、TPS、QPS都分不清

    " 年年岁岁跳槽季,回回必问高并发!原因很简单,因为高并发能牵扯出太多问题,接口响应超时.CPU负载升高.GC频繁.死锁.大数据量存储等,能考察求职者的真实情况. 而很多人在第一步就倒下了! ...

  3. Linux高并发服务器开发---笔记1(环境搭建、系统编程、多进程)

    0613 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.1.1 项目介绍 4.1.2 开发环境搭建 ①安装Linux系统.XSHELL.XFTP.Visual Stu ...

  4. 【高并发、高性能、高可用】系统设计经验分享!

    知识分享,以技会友.大家好,我是Tom哥.阅读本文大约需要 15 分钟. 软件开发通常会提到一个名词 "三高",即高并发.高性能.高可用. 具体的指标定义,如:高并发方面要求QPS ...

  5. 如何解决网站大流量和高并发问题?

    大流量:上千万台客户端同时请求服务器 高并发:并发是因为单台服务器已经完全不能满足大流量的需求,所以需要多台服务器共同处理请求,来缓解单台服务器的压力.异地部署服务器也可以用来进行容灾 高并发概念(Q ...

  6. 高并发与大流量解决方案

    1.相关概念 1.1.并发与并行 1.1.1.并发(Concurrent) 在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行 就想前面提到的 ...

  7. 【高并发、高性能、高可用】“三高” 系统设计经验

    软件开发通常会提到一个名词 "三高",即高并发.高性能.高可用. 具体的指标定义,如:高并发方面要求QPS 大于 10万:高性能方面要求请求延迟小于 100 ms:高可用方面要高于 ...

  8. 高并发-高可用-高性能

    文章目录 参考 分布式事务 高可用 高并发,高可用,高性能 简介 高并发 高性能 高可用 方案设计 架构图 参考 网站视频:亿级流量网站架构核心技术:https://www.bilibili.com/ ...

  9. 高并发中 QPS、TPS、RT、Load、PV、UV都是什么意思!

    目录 一.概述 二.指标 1.QPS(Queries Per Second) 2.TPS (Transactions Per Second) 2.RT(Res(onse Time) 3.并发数 4.吞 ...

最新文章

  1. Ubuntu版-virtualbox安装笔记
  2. java 解压缩 工具类_Java实现的zip压缩及解压缩工具类示例
  3. expdp导出表结构_超强技术案例!86万张表迁移的优化历程
  4. python No-ASCII character ,编码错误
  5. 使用PyTorch创建神经网络
  6. Java项目出现的问题01----学习
  7. Win10系列:VC++ Direct3D模板介绍1
  8. 移动互联网App兼容性测试
  9. 小米平板5最快有望7月发布:骁龙870/天玑12002K双版本
  10. java工厂模式学习
  11. 带格式文本html 直接复制粘贴,通过JS将带格式的文本复制到剪贴版的两种方法...
  12. c# 解析Xml文件
  13. 【Pycharm IDE】修改字体大小/设置缩略图/设置高亮
  14. Linux信号量以及互斥体
  15. comsol积分函数_comsol内置函数
  16. 虚拟机Oracle VM VirtualBox 共享文件夹放的文件打不开,找不到指定路径问题
  17. 全月加权平均的计算(分仓核算,结果反填到单据)
  18. 生活杂谈之万网域名注册过程详解
  19. 揭阳市人民医院基于对称双数据中心的双活容灾系统建设项目
  20. Linux系统下运行QT视频播放器示例程序(Media Player Example )

热门文章

  1. springboot批量更新实体_Spring Batch批量处理支付宝账单实践-基础篇
  2. 【C++】c++ 11中的随机数 ——random
  3. 80后、90后、00后互联网人如何找工作
  4. 通信错误7android,【07-25水贴】帮我帮下怎么解决刷机错误代码7
  5. 落谷P1996 约瑟夫问题
  6. 简书iOS客户端更新日志160201-关注详情页优化/支持海外手机号登录等
  7. 04_Large_OAD
  8. Java+vue生成报纸排版新闻页面
  9. chapter1 静态分析技术-05加壳检查 PEid
  10. 如何将一张图片贴到另一张图片上