web高性能三大定理及证明

本文提出了仿照牛顿定律的web高性能三大定理,包括并发定理、延时定理和吞吐量定理,阐述了这些定理在web系统性能优化中的意义和证明。并发定理指出并发度等于请求处理耗时与吞吐量的乘积;延时定理描述了在高并发系统中请求延时随时间的线性增长;吞吐量定理揭示系统吞吐量等于各子系统最小吞吐量。通过理解和应用这些定理,可以有效提升web系统的性能。

仿照古时牛顿三大定律,这里提出web高性能三大定理,主要是对web系统性能度量值的一些内在关系的描述,这里的定理不能像牛顿三大定理那样在力学界起到基础支撑的作用,它只是为我们在设计高性能的web系统时的一些思考进行更形式化的描述。

1. 并发定理

一个系统的并发度等于请求处理耗时与系统的吞吐量的乘积

并发度: 一个系统在同时处理的请求个数。
请求处理耗时: 一个请求从进入系统处理到处理完毕经过的时间。
吞吐量: 系统在现有资源情况下单位时间中(每秒)能完成的请求数。

证明:

我们假设一个简单的情况,即每一个请求都是完全一样的,耗时也都一样,在实际系统中各项性能度量值都是不同且不断变化的,我们这个假设反映了系统的一种平均情况。

设并发度的值为Curr,请求处理耗时为Cost,吞吐量的值为QPS。

设单位时间进入系统处理阶段的请求数为N1, 单位时间系统能够完成的请求数为N2,根据吞吐量定义,N2即系统吞吐量。

在系统中N1是无法大于N2的值的, 不能处理而放在某种外部队列中的请求我们不认为其进入了处理阶段, 即进入系统请求的最大速率也等于吞吐量的值,即有N1=N2=QPS。

在某个时间点t, 它有多少正在处理的请求呢,这代表了Curr的值,它的值等于已到达系统的请求数减去已结束的请求数。
到达的请求数等于时长乘以请求到达速率,即:
到达的请求数 = t*N1 = t*N2= t*QPS
已结束的请求数应该是在t-Cost时间点之前就已经到达的请求数, 很好理解,在t-Cost时间点之前到达的请求,在t时刻刚好都处理结束了,即
已结束的请求数 = (t-Cost)*QPS

Curr = t*QPS - (t-Cost)*QPS = Cost *QPS,这证明了我们的并发定理,即:

并发度 = 请求处理耗时 *吞吐量

说明:

该定理描述了并发度与耗时及吞吐量的一种关系,但并发度往往不是系统能够决定的,比如12306这种购票网站,高峰期的并发度来源于页面操作的用户数,所以对于设计系统者来说,并发度可以理解为一个我们无法控制的常数,即

请求处理耗时 *吞吐量 = Const

一般来说,为了提高系统吞吐量,我们要降低请求处理耗时,为了降低请求的耗时,我们要提高系统吞吐量。

2. 延时定理

在一个高并发且有排队的系统中,请求延时随时间成线性增长

一个请求处理过程中需要使用各种系统资源,如网络读写,CPU计算,磁盘读写等等,在高并发的状况下,这些资源不是即时可得的,这就需要排队,另外我们可能人为设计一些应用层队列让请求排队,如nginx异步模型中的请求队列。

证明:

我们将系统中的所有队列简化为一个单一队列。

设请求延时的值为Cost, 吞吐量的值为QPS。

设单位时间进入系统的请求数为N1, 不同于并发定理中描述的N1值,这N1值表示进入了系统,但不一定进行了处理,可能在一个队列中等待处理。设单位时间系统能够完成的请求为N2,N2=QPS, 在高并发情况下, 会有N1>N2。 同时设请求不用排队的情况下耗时为T, 即纯资源计算耗时,此时队列长度为1,只有当前请求本身。 设某一个时间点t 系统队列长度为L,L表示还有多少个待处理请求,则队列末端一个请求的耗时就等于队列长度乘以单个请求的耗时,即:

Cost = L* T

而队列累积长度等于到达的请求数减去已完成的请求数,即:

L = N1*t- N2*t = (N1-N2) * t

即 Cost = (N1-N2) * t* T = ( N1-QPS)*T*t

这证明了延时定理中的耗时与时间增长的线性关系,增长系数为( N1-QPS)*T。

说明:
在一个高并发系统中,当用户请求速度大于系统吞吐量时,单个请求随时间增长耗时就越长,到后面,耗时会长到难以忍受的程度,为了避免这种情况,我们需要设定系统中的队列的最大长度,不能让队列长度无限增长。

3. 吞吐量定理

一个系统的吞吐量等于各子系统最小吞吐量的值

一个请求的处理可能分为多个阶段,比如先进行网络读写,再CPU计算,最后写磁盘,还可能与第三方服务交互,阶段间的处理对不同请求来说都是可以并行的,即一个请求在进行CPU计算时,同时另一个请求可以写磁盘,这对于具有最小吞吐量的处理阶段的系统资源来说,不会处于空闲状态,所以它也等于整个系统的吞吐量。

对于任何一个处理阶段来说,吞吐量等于处理耗时的倒数。

定理较直观,证明略

说明:

为了提高系统的吞吐量,我们需要找到具有最小吞吐量的处理阶段,即找出系统的瓶颈所在,只有对系统处理瓶颈的阶段进行优化才能提高整体吞吐量。

【路径规划】(螺旋)基于A星全覆盖路径规划研究(Matlab代码实现)内容概要:本文围绕“基于A星算法的全覆盖路径规划”展开研究,重点介绍了一种结合螺旋搜索策略的A星算法在栅格地图中的路径规划实现方法,并提供了完整的Matlab代码实现。该方法旨在解决移动机器人或无人机在未知或部分已知环境中实现高效、无遗漏的区域全覆盖路径规划问题。文中详细阐述了A星算法的基本原理、启发式函数设计、开放集与关闭集管理机制,并融合螺旋遍历策略以提升初始探索效率,确保覆盖完整性。同时,文档提及该研究属于一系列路径规划技术的一部分,涵盖多种智能优化算法与其他路径规划方法的融合应用。; 适合人群:具备一定Matlab编程基础,从事机器人、自动化、智能控制及相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于服务机器人、农业无人机、扫地机器人等需要完成区域全覆盖任务的设备路径设计;②用于学习和理解A星算法在实际路径规划中的扩展应用,特别是如何结合特定搜索策略(如螺旋)提升算法性能;③作为科研复现与算法对比实验的基础代码参考。; 阅读建议:建议结合Matlab代码逐段理解算法实现细节,重点关注A星算法与螺旋策略的切换逻辑与条件判断,并可通过修改地图环境、障碍物分布等方式进行仿真实验,进一步掌握算法适应性与优化方向。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值