L = λ × W
在容量规划中最有用的方程
对于任何稳定的队列,无论其内部结构如何: L = λ × W,其中:
- L = 平均数队列中系统内的项目数(正在处理或等待)
- λ (lambda) = 平均到达率(单位时间内的项目数)
- W = 平均每个项目在系统内的停留时间
几何阅读: 在 λ 和 W 两个轴上绘制图表。乘积 L 是它们形成的 矩形面积。容量规划位于这个矩形内。
为什么重要: 任何三个量中的两个量都可以确定第三个量。测量吞吐量和延迟,您就知道占用情况。测量占用情况和吞吐量,您就知道延迟。这个定律非常稳健: 它适用于网络请求,餐厅桌子,超市队列以及 CPU 管道,而无需修改。
三个具体示例:
- 一个 Web 服务处理 200 req/s,平均延迟 50 ms (0.05 s)。L = 200 × 0.05 = 10 在飞行中。
- 一个咖啡馆每小时服务 60 位客人,平均停留时间 15 分钟 (0.25 h)。L = 60 × 0.25 = 15 位客人在内。
- 一个后端池处理 1500 req/s,平均延迟 200 ms (0.2 s)。L = 1500 × 0.2 = 300 在飞行中。
-sizing implications: 工作人员数量/线程数量/连接数量必须至少为 L,以保持不落后。任何少于这个意味着队列增长。
为什么延迟在超过 80% 利用率后会爆炸
在运营中最重要的曲线
在 X 轴上绘制利用率百分比(0%到100%),Y 轴上绘制平均等待时间。这个形状是容量规划中最重要的曲线之一。
M/M/1队列模型:在系统中,到达是泊松分布(随机),服务时间是指数分布(随机),平均等待时间为:
W_q = ρ / (μ × (1 - ρ))
其中 ρ 是利用率(0到1),μ 是服务率。
曲线的形状:
- 在 ρ = 0.5(50%利用)时,等待时间较短(1个服务时间)。
- 在 ρ = 0.7(70%利用)时,等待时间约为2.3个服务时间。
- 在 ρ = 0.8(80%利用)时,等待时间约为4个服务时间。
- 在 ρ = 0.9(90%利用)时,等待时间约为9个服务时间。
- 在 ρ = 0.95(95%利用)时,等待时间约为19个服务时间。
- 在 ρ = 1.0(100%利用)时,等待时间为无限大。
髋部:在80%的利用率处,曲线急剧转弯。髋部以下,容量是舒适的;髋部以上,延迟随利用率增加的速度更快。
实际阅读:目标70%的利用率保持稳态;永远不要达到100%。30%的‘额外空间’不是浪费;它是有限延迟的价格。
跨髋部扩容
两个场景:
场景A:10个实例,CPU利用率60%。p99延迟=100ms。
场景B:由于流量增长,同一集群在90%的CPU利用率下运行。p99延迟=600ms。
同一集群,相同的代码,只是利用率发生了变化。
同时进行扩容和触发
合成
现在可以将 Little's Law 应用为矩形,阅读队列曲线及其拐点,并将两者联系起来与容量决策。
应用两者。
后端层处理每秒 2000 个请求,每个副本的平均延迟为 50ms,每秒处理请求 80 个,占用 CPU 70%。峰值因子 2x;您希望-survive-3 个同时副本故障。
陪伴笔记
陪伴笔记
这个几何-lesson 将 Stateless Horizontal Scaling 的主要 lesson 转化为定量几何。
下一个陪伴geometry_of_ingress_egress_separation将网络边界分裂作为一个二部图与一个切点表示,这个切点是分裂的。
很好。