L = λ × W
在容量規劃中最有用的公式
對於任何穩定的隊列,無論其內部結構如何:L = λ × W,其中:
- L = 平均數量(在進程或等待中)
- λ (lambda) = 平均到達率(每單位時間的項目)
- W = 每個項目在系統中的平均時間
幾何學的閱讀:將λ在一個軸上,W在另一個軸上。乘積L是他們形成的矩形面積。容量規劃生活在這個矩形內。
為什麼重要:三個量中的任何兩個都可以確定第三個。測量通過率和延遲,您就知道占用率。測量占用率和通過率,您就知道延遲。這個定律非常穩健,它適用於網絡請求、餐廳桌子、超市隊列以及CPU管道,無需修改。
三個具體例子:
- 一個網絡服務處理每秒200個請求,平均延遲50毫秒(0.05秒)。L = 200 × 0.05 = 10在飛行中。
- 一家咖啡館每小時服務60名客戶,平均停留時間15分鐘(0.25小時)。L = 60 × 0.25 = 15名客戶在內。
- 一個後端池處理每秒1500個請求,平均延遲200毫秒(0.2秒)。L = 1500 × 0.2 = 300在飛行中。
規模意義:一個層級的工作人員數量/線程數量/連接數量必須至少為L才能保持不落後。如果少于L,意味著隊列的增長。
為什麼延遲在80%利用率後爆炸
在運營中最重要的曲線
在 X 轴上绘制利用率百分比(0% 到 100%),Y 轴上绘制平均等待时间。该曲线是容量规划中最重要的曲线之一。
M/M/1队列模型:在系统中随机到达(Poisson)和随机服务时间(exponential)时,平均等待时间为:
W_q = ρ / (μ × (1 - ρ))
其中 ρ 是利用率(0 到 1),μ 是服务率。
曲线的形状:
- 在 ρ = 0.5(50% util)时,等待时间较短(1 个服务时间)。
- 在 ρ = 0.7(70% util)时,等待时间约为 2.3 个服务时间。
- 在 ρ = 0.8(80% util)时,等待时间约为 4 个服务时间。
- 在 ρ = 0.9(90% util)时,等待时间约为 9 个服务时间。
- 在 ρ = 0.95(95% util)时,等待时间约为 19 个服务时间。
- 在 ρ = 1.0(100% util)时,等待时间为无限大。
髋部:在 80% 的利用率处,曲线急剧转弯。髋部以下,容量适中;髋部以上,延迟随利用率增加的速度更快。
实际阅读:目标是 70% 的利用率保持稳态;绝不达到 100%。30% 的‘额外空间’并非浪费;而是确保延迟保持在有界值的代价。
跨髋部扩容
两个场景:
场景 A:10 个副本运行在 60% 的 CPU 上。p99 延迟 = 100 毫秒。
场景 B:由于流量增长,同一集群运行在 90% 的 CPU 上。p99 = 600 毫秒。
同一集群,相同的代码,只是利用率发生了变化。
同时进行扩容和触发
整合
您現在可以將 Little's Law 應用於矩形,閱讀排隊曲線及其髖部,並將兩者連接到容量決策。
應用兩者。
後端層級處理每秒 2000 個請求,平均延遲 50 毫秒,每個副本容量 80 個請求,佔用 70% CPU。峰值因子 2x;您希望在同時失敗的副本數量為 3。
陪伴筆記
陪伴筆記
這堂幾何學課將 Stateless Horizontal Scaling 的主要課程轉化為定量幾何。
下一堂陪伴課 geometry_of_ingress_egress_separation 將網絡邊界分隔轉化為一個雙分集圖形,將分隔的節點移除。
很好。