QPS、PV 、RT(响应时间)之间的关系

在进行系统性能压测和系统性能优化的时候,会涉及到QPS,PV,RT相关的概念,本文总结一下QPS,PV,RT之间的关系,放在博客备忘,本文参考了之前在淘宝工作时候的一些资料。

QPS是什么?

QPS:单个进程每秒请求服务器的成功次数
QPS = req/sec = 请求数/秒

QPS如何统计?

QPS统计方式 [一般使用 http_load 进行统计] 
QPS = 总请求数 / ( 进程总数 * 请求时间 )

根据QPS推算PV:

单台服务器每天PV计算:
公式1:每天总PV = QPS * 3600 * 6
公式2:每天总PV = QPS * 3600 * 8

根据QPS,PV推算服务器数量

服务器数量 = 每天总PV / 单台服务器每天总PV

峰值QPS和机器计算公式:
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间 
峰值时间每秒请求数(QPS):( 总PV数 * 80% ) / ( 每天秒数 * 20% )
峰值机器数量:峰值时间QPS / 单台机器的QPS

例子:
问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
问:如果一台机器的QPS是58,需要几台机器来支持? 答:139 / 58 = 3

最佳线程数:

性能压测的情况下,起初随着用户数的增加,QPS会上升,当到了一定的阀值之后,用户数量增加QPS并不会增加,或者增加不明显,同时请求的响应时间却大幅增加。这个阀值我们认为是最佳线程数。

为什么要找最佳线程数

  1. 过多的线程只会造成,更多的内存开销,更多的CPU开销,但是对提升QPS确毫无帮助
  2. 找到最佳线程数后通过简单的设置,可以让web系统更加稳定,得到最高,最稳定的QPS输出

最佳线程数的获取:

  1. 通过用户慢慢递增来进行性能压测,观察QPS,响应时间
  2. 根据公式计算:服务器端最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间) * cpu数量
  3. 单用户压测,查看CPU的消耗,然后直接乘以百分比,再进行压测,一般这个值的附近应该就是最佳线程数量。

影响最佳线程数的主要因素:

  1. IO

IO开销较多的应用其CPU线程等待时间会比较长,所以线程数量可以开的多一些,相反则线程数量要少一些,其实有两种极端,纯IO的应用,比如proxy,则线程数量可以开到非常大(实在太大了则需要考虑线程切换的开销),这种应用基本上后端(比如这个proxy是代理搜索的)的QPS能有多少,proxy就有多少。

  1. CPU

对于耗CPU的计算,这种情况一般来讲只能开到CPU个数的线程数量。但是并不是说这种应用的QPS就不高,往往这种应用的QPS可以很高,因为耗CPU计算的应用,往往处理单次请求的时间会很短。

QPS和线程数的关系

    1. 在最佳线程数量之前,QPS和线程是互相递增的关系,线程数量到了最佳线程之后,QPS持平,不在上升,甚至略有下降,同时响应时间持续上升。

    2. 同一个系统而言,最佳线程数越多,QPS越高

QPS、PV 、RT(响应时间)之间的关系的更多相关文章

  1. QPS、RT、PV、UV之间的关系

    QPS: 每秒查询率(Query Per Second) ,每秒的响应请求数,也即是最大吞吐能力. QPS = req/sec = 请求数/秒 QPS统计方式 [一般使用 http_load 进行统计 ...

  2. 并发数/QPS/PV/ 服务器响应时间公示

    QPS:每秒查询率(Query Per Second) ,每秒的响应请求数,也即是最大吞吐能力.QPS = req/sec = 请求数/秒QPS统计方式 [一般使用 http_load 进行统计]QP ...

  3. [Kubernetes]PV,PVC,StorageClass之间的关系详解

    在Kubernetes中,容器化一个应用比较麻烦的地方莫过于对其"状态"的管理,而最常见的"状态",莫过于存储状态. 在[Kubernetes]深入理解Stat ...

  4. QPS/QPS/PV/UV/服务器数量/并发数/吐吞量/响应时间计算公式

    QPS:每秒查询率(Query Per Second) ,每秒的响应请求数,也即是最大吞吐能力.QPS = req/sec = 请求数/秒QPS统计方式 [一般使用 http_load 进行统计]QP ...

  5. 峰值QPS/QPS/PV/UV/服务器数量/并发数/吐吞量/响应时间计算公式

    QPS:每秒查询率(Query Per Second) ,每秒的响应请求数,也即是最大吞吐能力.QPS = req/sec = 请求数/秒QPS统计方式 [一般使用 http_load 进行统计]QP ...

  6. TPS和响应时间之间是什么关系

    在这个图中,定义了三条曲线.三个区域.两个点以及三个状态描述. 三条曲线:吞吐量的曲线(紫色).使用率 / 用户数曲线(绿色).响应时间曲线(深蓝色).三个区域:轻负载区(Light Load).重负 ...

  7. 性能分析之用户数(线程数)/响应时间/TPS的关系

    最近在写一些东西的时候,把一些内容整理了一下. 在考虑压力工具中的用户数(有些工具中称为线程数,本文后续都用"用户数"来说明).响应时间.TPS三者之间的关系时,想到之前也有人问起 ...

  8. 并发用户数与 TPS 之间的关系

    1.  背景 在做性能测试的时候,很多人都用并发用户数来衡量系统的性能,觉得系统能支撑的并发用户数越多,系统的性能就越好:对TPS不是非常理解,也根本不知道它们之间的关系,因此非常有必要进行解释. 2 ...

  9. 并发用户数与TPS之间的关系

    1.  背景 在做性能测试的时候,很多人都用并发用户数来衡量系统的性能,觉得系统能支撑的并发用户数越多,系统的性能就越好:对TPS不是非常理解,也根本不知道它们之间的关系,因此非常有必要进行解释. 2 ...

随机推荐

  1. H3C S5120-52P-WiNet交换机配置

    配置console口登录验证密码 <H3C>system-view [H3C]user-interface aux 0 [H3C-ui-aux0]authentication-mode p ...

  2. http 本地服务器设置任意IP访问对应的文件夹

    使用软件:wamp 一.配置apache的host访问路径 打开下面“wamp\bin\apache\Apache2.4.4\conf\”路径下的httpd.conf文件,然后我希望将“自定义IP”的 ...

  3. Caused by: java.lang.ClassNotFoundException: javax.xml.bind.Validation

    Caused by: java.lang.ClassNotFoundException: javax.xml.bind.Validation JAXB API是java EE 的API,因此在java ...

  4. centos7 安装zookeeper3.4.8集群

    1.下载上传文件到centos中 2.解压文件夹 3.cd conf 文件下,cp  zoo_sample.cfg  zoo.cfg 4.vim zoo.cfg # The number of mil ...

  5. E - TOYS

    来源 poj 2318 Calculate the number of toys that land in each bin of a partitioned toy box. Mom and dad ...

  6. CSS3实战开发: 折角效果实战开发

    <!DOCTYPE html> <html> <head> <meta charset="utf-9"> <meta name ...

  7. 极验(geetest)验证码

    最近在做项目的时候,需要用到登录验证,在网上看到了一个很不错的验证插件,在此记录一下使用流程. 极限验证码   官网:http://www.geetest.com/,到GitHub下载服务端代码htt ...

  8. python金融与量化分析------Matplotlib(绘图和可视化)

    -----------------------------------------------------------Matplotlib:绘图和可视化------------------------ ...

  9. Arm v8 中断处理

    转 https://blog.csdn.net/firefox_1980/article/details/40113637

  10. SQL 2017 远程连接被拒绝

    1.防火墙端口 2.数据库要能帐号登录 可是还是不行 打开:SQL Server 2017 配置管理器->SQL Server 服务 ->SQLServer(你的实例名)-> 右键- ...