• 什么是QPS、TPS、RT、吞吐量?


    什么是QPS、TPS、RT、吞吐量?

    ​ 疫情之下,陕西、四川等地的健康码、核酸系统都出现了短暂的崩溃,软件开发的高并发再次引起了程序员的一阵讨论。以下截取了阿里工程师tony guo的一篇朋友圈,其中的GPS等高并发指标你知道是什么含义吗?
    在这里插入图片描述

    1.QPS-每秒查询数

    ​ QPS:Queries Per Second,意思是“每秒处理请求数”。是用来衡量服务性能的重要指标,解决每秒数万次的高并发场景,在开发过程中这个指标非常关键,程序员可以在开发过程中利用Jmeter等工具测试程序的QPS,联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量,所以程序开发中的QPS是程序员最为看重的一个指标之一。

    • **定义:**对一个特定的查询服务器在规定时间内所处理流量的多少。
    • **计算公式:**QPS=并发量/平均响应时间

    QPS是用来衡量服务器的性能,我们是不断的为增加它的数量而优化改进,通过多线程、增加负载、甚至提高代码质量、优化算法等方式。当然,优化的性能是有上限的,我们需要在性能和投入上做出一定的平衡。要对现有的业务状况、未来的发展潜力以及爆发力上做出一些判断,很好的驾驭它是需要花费大量精力的,需要经验和技术能力同时发挥作用,让效率和投入达到最好的产出。

    2.TPS-每秒事务数

    ​ TPS:Transaction Per Second,也就是“每秒事务数”。它是软件测试结果的测量单位,一个事务是一个客户机向服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用时间和完成事务数,最终利用这些信息来估计得分。

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

    3.RT-响应时间

    ​ RT:Return Time,即“响应时间”:执行一个请求从开始到收到响应数据所花费的总时间。RT数值的大小直接反应了系统的快慢,所以是一个非常重要的指标。

    4.并发数

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

    5.吞吐量

    ​ 系统的吞吐量(承压能力)与request对CPU的消耗、外部接口、IO等紧密联系。单个request对CPU的消耗越高,外部系统接口、IO速度越慢。系统吞吐能力就越低,反之则越高。依据公式“QPS(TPS)=并发量/平均响应时间”可知,系统吞吐量的重要指标就是QPS(TPS)、并发数、响应时间:

    6.实际举例

    ​ 我们通过一个实例把上面的几个概念串联起来,以便理解。按二八定律来看,如果每天80%的访问集中在20%的时间里,这20%的时间就叫做峰值时间。

    • 公式:(总PV值80%)/(每天秒数20%) = 峰值时间每秒请求数(QPS) 注:PV-page view,即页面浏览量
    • **机器:**峰值时间每秒QPS/单台机器的QPS = 需要的机器

    1.每天300w的PV值在单台机器上,这台机器需要多少QPS?依据上面的公式可以得到:

    QPS = (3000000 * 0.8) / (24 * 60 * 60 * 0.2) = 139
    
    • 1

    2.如果一台机器的QPS是58,那么需要几台机器来支持这个PV量?

    139 / 58 = 3
    
    • 1

    7.最佳线程数、QPS、RT的联系

    7.1.单线程QPS公式:QPS=1000ms/RT

    ​ 对同一个系统而言,支持的线程数越多,QPS越高。假设一个RT是80ms,则可以很容易的计算出QPS,QPS = 1000/80 = 12.5

    ​ 多线程场景,如果把服务端的线程数提升到2,那么整个系统的QPS则为 2*(1000/80) = 25, 可见QPS随着线程的增加而线性增长,那QPS上不去就加线程呗,听起来很有道理,公司也说的通,但是往往现实并非如此

    7.2.QPS和RT的关系

    我们想象的QPS、RT关系如下:

    在这里插入图片描述

    实际的QPS、RT关系如下:

    在这里插入图片描述

    7.3.最佳线程数

    刚好消耗完服务器的瓶颈资源的临界线程数,公式如下:

    最佳线程数量 = ((线程等待时间+线程cpu时间) / 线程cpu时间) * cpu数量
    
    • 1

    特性:

    • 在达到最佳线程数的时候,线程数量继续递增,则QPS不变,而响应时间变长,持续递增线程数量,则QPS开始下降。
    • 每个系统都有其最佳线程数量,但是不同状态下,最佳线程数量是会变化的。

    特性:

    • 在达到最佳线程数的时候,线程数量继续递增,则QPS不变,而响应时间变长,持续递增线程数量,则QPS开始下降。
    • 每个系统都有其最佳线程数量,但是不同状态下,最佳线程数量是会变化的。
    • 瓶颈资源可以是CPU,可以是内存,可以是锁资源,IO资源:超过最佳线程数-导致资源的竞争,超过最佳线程数-响应时间递增。

    案例参考:公众号-程序员追风

  • 相关阅读:
    根据keypoint生成heatmap
    文件服务器审核
    python+selenium进行cnblog的自动化登录测试
    【SQL语法基础】使用DDL创建数据库&数据表时需要注意什么?
    【MySQL数据库笔记 - 进阶篇】(五)锁
    0基础学习VR全景平台篇 第103篇:使用英文、法文、德文等其他语言
    Java进阶书籍推荐,赶快收藏起来!
    How to control the model in the webots usingthe ros controller ?
    dsumtype的比较
    Day1--什么是网络安全?网络安全常用术语
  • 原文地址:https://blog.csdn.net/z_kakaya/article/details/126791835