[转帖]性能关键指标及模型分析-QPS,RT

性能,关键,指标,模型,分析,qps,rt · 浏览次数 : 0

小编点评

**RT(Response-time、响应时间):** RT是指用户请求发出和服务器返回之间的时间差。该过程包括DNS解析、网络数据传输、服务器计算、网络数据返回。RT的大小与用户体验密切相关,影响用户请求的延迟。 **QPS(Query-per-second):** QPS是指在一定并发度下,服务器每秒可以处理多少请求,通常我们算的是在资源充分利用而不过度的前提下的合理QPS。 **性能曲线模型分析:** 性能曲线模型是性能变化的曲线拐点模型图,它可以帮助我们理解性能的主要变化趋势。 * **轻压力区:**响应时间变化不大,比较平缓。 * **重压力区:**响应时间先呈现增长的趋势,然后进入拐点区后响应时间急剧增大。 * **拐点区:**系统性能达到极大,但线程数继续递增,QPS不变,但RT会增大。 * **重压力区:**资源利用率再次增加,最后达到饱和状态,资源利用率见顶后横盘不再涨。 **QPS及RT相关总结:** * QPS大小和机器数量成反比。 * RT过大却能间接带来CPU的瓶颈。 * 在大多数情况下,如果别的资源瓶颈不够明显,在高并发下RT越大越容易出现线程堆积,到一定程度就会开始线程争抢CPU资源造成资源浪费,所以很多时候RT越高会越快间接导致CPU资源变成瓶颈。

正文

 

 

一、RT(Response-time、响应时间)

响应时间是用户请求发出和服务器返回之间的时间差。

这个过程包括DNS解析、网络数据传输、服务器计算、网络数据返回,如下图例子:

 

期中,服务器计算时间又可细分为:

1.     Web Server响应的时间;

2.     App Server响应的时间;

3.     CPU执行时间;

4.     线程等待时间(DB、存储、rpc调用等导致的IO等待,sleep,wait等等)。

 

RT的大小与用户体验密切相关

开发人员能够有效去优化的,是CPU执行时间,线程等待时间两大部分。

 

 

二、QPS(Query-per-second)

定义:QPS是指在一定并发度下,服务器每秒可以处理多少请求,通常我们要算的是在资源充分利用而不过度的前提下的合理QPS。

提高QPS能将服务器资源的充分利用, QPS提升1倍理论上服务器数能减少1半。

TPS类似,本文统一用QPS来贯穿讲解。

 

3.1 QPS计算

    QPS = 并发线程数量 * 1000/线程RT

 

      缩短线程RT,QPS未必会变!因为随着RT变化支持的并发线程数也可能会跟着变,这里涉及一个新的概念:最佳线程数量。

 

3.2 最佳线程数

    最佳线程数量:刚好消耗完服务器的瓶颈资源的临界线程数

     备注:瓶颈资源可以是CPU,可以是内存,可以是锁资源,也可以是IO资源

 

 

举例:在一个4cpu的服务器上,有这样一个线程:

•       预处理数据耗时  15ms

•       调用rpc等待耗时 80ms

•       解析结果耗时      5ms

 

 

  • 如果CPU计算为瓶颈资源,那么

      最佳线程数量 = ((RT) / RT中CPU执行时间) * CPU数量=( (15+80+5) / (15+5) ) * 4 cpu  =  20

 

  • 如果调用rpc的方法加了同步锁,且这个锁是瓶颈资源,那么

       由于同步锁是个串行资源,并行数是1,所以

       最佳线程数量 = (RT / RT中的lock时间) * 1 = ((15+80+5) /80) * 1个串行锁   =   1.25

 

  • 同理,以xx为瓶颈资源为例,计算最佳线程数量

       最佳线程数量=(RT/xx瓶颈资源时间) * xx瓶颈资源的线程并行数

 

 

总结:

最佳线程数量=(线程总时间/瓶颈资源时间)*瓶颈资源最佳线程数

QPS =  1000/RT中瓶颈资源时间  * 瓶颈资源最佳线程数

 

所以理论上如果缩短的是在瓶颈资源上消耗的RT是能提升QPS的,

缩短其他RT则不行,因为最佳线程数会跟着变,且理论上会变得恰好是“刚好消耗完服务器的瓶颈资源的临界线程数”,最终还是取决于瓶颈资源。

 

    

 

三、性能曲线模型分析

典型的性能趋势变化的曲线拐点模型图如下:

 

 

1)X轴从左往右分别是轻压力区、重压力区、拐点区。

 

2)响应时间:随着线程并发数增加,在轻压力区的响应时间变化不大,比较平缓,进入重压力区后响应时间先呈现增长的趋势,然后进入拐点区后响应时间急剧增大。

 

3)吞吐量:随着并发线程数的增加,吞吐量增加,进入重压力区后逐步平稳,到达拐点区后急剧下降,这个时候系统已经达到了处理极限,再继续压系统性能就会急剧下降甚至崩溃。

 

4)资源利用率:随着并线程数的增加,资源利用率逐步上升,最后达到饱和状态,资源利用率见顶后横盘不再涨。

 

5)综合分析:

  • 随着线程并发数的增加,吞吐量与资源利用率增加,在达到最佳线程数的时候,QPS达到比较理想的顶点。

  • 在QPS达到顶点后线程数继续递增,QPS一开始不变,但RT会增大:线程增多RT增大并不是说我们的代码执行效率下降了,而是资源的竞争,导致线程等待的时间上升了。

  • 但随着并发线程的持续增加,吞吐量与资源利用率都达到了饱和,随后资源争抢加剧开始导致资源浪费,所以吞吐量急剧下降,并且响应时间急剧增长。

  • 轻压力区与重压力区的交界点是系统的最佳线程数,因为各种资源都利用充分,且响应也很快;而重压力区与拐点区的交界点就是系统的最大线程数,若超过这个点,系统性能将会急剧下降甚至崩溃。

 

 

四、QPS及RT相关总结

  1. 支撑同样的业务量,QPS大小和机器数量成反比。

 

  1. 只有在瓶颈资源上进行优化才能提升QPS,瓶颈资源可以包括CPU、内存、锁、IO、外部依赖、甚至网卡等等

 

  1. QPS和RT是性能优化的两个不同的方向,二者并无绝对必然的联系,他们的优化也有不同的思路。

 

  1. 但在大多数情况下,如果别的资源瓶颈不够明显,在高并发下RT越大越容易出现线程堆积,到一定程度就会开始线程争抢CPU资源造成资源浪费,所以很多时候RT越高会越快间接导致CPU资源变成瓶颈。   

      所以,虽然RT不是资源更不是瓶颈,但RT过大却能间接带来CPU的瓶颈。



 

备注【CPU时间片】:

      程序的任何指令的执行往往都会要竞争CPU这个最宝贵的资源,不论你的程序分成了多少个线程去执行不同的任务,他们都必须排队等待获取这个串行资源来计算和处理命令。在Linux的内核处理过程中,每一个进程默认会有一个固定的时间片来执行命令(默认为1/100秒),这段时间内进程被分配到CPU,然后独占使用。如果使用完,同时未到时间片的规定时间,那么就主动放弃CPU的占用,如果到时间片尚未完成工作,那么CPU的使用权也会被收回,进程将会被中断挂起,等待下一个时间片。

</article>

与[转帖]性能关键指标及模型分析-QPS,RT相似的内容:

[转帖]性能关键指标及模型分析-QPS,RT

一、RT(Response-time、响应时间) 响应时间是用户请求发出和服务器返回之间的时间差。 这个过程包括DNS解析、网络数据传输、服务器计算、网络数据返回,如下图例子: 期中,服务器计算时间又可细分为: 1. Web Server响应的时间; 2. App Server响应的时间; 3. C

[转帖]性能测试:关键性能指标与性能分析

关键指标 应用性能指标 响应时间(Response Time): 指从客户端发送一个请求开始计时,到客户端接收到从服务器端返回的响应结果结束所经历的所有时间。响应时间组成:请求发送时间、网络传输时间和服务器处理时间三部分组成。响应时间越短越好,目前接受的时间是2/5/8秒。 吞吐量(Throughp

[转帖]Nginx性能优化-CPU篇

性能优化方法论 软件层面提升硬件使用率 增大CPU的利用率 增大内存的利用率 增大硬盘IO的利用率 增大网络带宽的利用率 提升硬件 网卡:万兆网卡 硬盘:固体硬盘,关注IOPS和BPS指标 CPU:更快主频,更多核心,更大缓存,更优架构 内存:更快访问速度 超出硬件性能上限后使用DNS CPU基本知

[转帖]Nginx性能优化-TCP篇

https://www.cnblogs.com/Otiger/p/16220187.html 性能优化方法论 软件层面提升硬件使用率 增大CPU的利用率 增大内存的利用率 增大硬盘IO的利用率 增大网络带宽的利用率 提升硬件 网卡:万兆网卡 硬盘:固体硬盘,关注IOPS和BPS指标 CPU:更快主频

[转帖]Jmeter插件之ServerAgent服务器性能监控工具的安装和使用

https://www.cnblogs.com/pachongshangdexuebi/p/13354201.html 一、前言 性能测试时我们关注的重要指标是:并发用户数,TPS,请求成功率,响应时间,服务器的CPU,memory, I/O disk等。Jmeter的聚合报告可以查看并发数、吞吐量

[转帖]人人都应该知道的CPU缓存运行效率

https://zhuanlan.zhihu.com/p/628017496 提到CPU性能,大部分同学想到的都是CPU利用率,这个指标确实应该首先被关注。但是除了利用率之外,还有很容易被人忽视的指标,就是指令的运行效率。如果运行效率不高,那CPU利用率再忙也都是瞎忙,产出并不高。 这就好比人,每天

[转帖]tcp连接测试工具_六款最佳、免费的网络延迟测试工具

作为网络管理员或网络工程师,时刻关注网络的交付速度至关重要。不仅需要确保自己有良好的响应时间,还需要确保网络的速度足以满足用户通信所需的每一条路径。而手动测试每个路径将占用你所有的时间。所以需要获得一个测试工具,以确保延迟不会影响网络的性能。 什么是延迟 延迟是网络流量的速度指标。可接受的传输时间根

[转帖]USE方法

https://www.jianshu.com/p/2d05e94e15b7 USE方法全称"Utilization Saturation and Errors Method",主要用于分析系统性能问题,可以指导用户快速识别资源瓶颈以及错误的方法。正如USE方法的名字所表示的含义,USE方法主要关注

[转帖]网络转发性能测试方法 ( l3fwd, ovs-dpdk )

https://aijishu.com/a/1060000000212215 1 简介 本文记录l3fwd和ovs-dpdk性能测试中用到的关键脚本。 2 测试拓扑 l3fwd测试拓扑 ovs-dpdk测试拓扑 3 测试步骤 设置大页内存 #set hugepage umount /dev/huge

[转帖]基本系统调用性能lmbench测试方法和下载

简介 Lmbench是一套简易,可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具。一般来说,它衡量两个关键特征:反应时间和带宽。 Lmbench旨在使系统开发者深入了解关键操作的基础成本。 本文以银河麒麟/Ubuntu为例。 文末获取【lmbench】工具下载地址 测试方法