L = λ × W
容量規劃中最實用的方程式
對於任何穩定的排隊系統,無論其內部結構如何:L = λ × W,其中:
- L = 系統內的平均項目數量(正在處理中或等待中)
- λ (lambda) = 平均到達率(每單位時間的項目數)
- W = 每個項目在系統中停留的平均時間
幾何解讀:將 λ 繪製在一個軸上,W 繪製在另一個軸上。乘積 L 即為它們所構成的矩形面積。容量規劃就存在於這個矩形之內。
為何重要:這三個量中的任意兩個都可以決定第三個。測量吞吐量與延遲,即可得知佔用率;測量佔用率與吞吐量,即可得知延遲。該定律具有穩健性:它適用於 Web 請求、餐廳餐桌、超市排隊以及 CPU 流水線,且無需任何修改。
三個具體範例:
- 一個 Web 服務每秒處理 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 才能跟得上。若少於此數,將導致佇列增長。
為何延遲在使用率超過 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% 使用率)時,等待時間為無限大。
膝點(Knee):約在 80% 使用率處,曲線急劇彎曲。在膝點以下,容量寬裕;超過膝點後,延遲的增長速度快於使用率的增長。
實務解讀:穩態下應以 70% 使用率為目標,絕不可達到 100%。這 30% 的「緩衝空間」並非浪費,而是維持有限延遲的代價。
跨越膝點(Knee Point)的容量規劃
兩種情境:
情境 A:10 個副本(replicas)運行於 60% CPU 使用率。延遲 p99 = 100 ms。
情境 B:同一機群因流量增長而運行於 90% CPU 使用率。p99 = 600 ms。
相同的機群、相同的程式碼,僅使用率發生變化。
容量規劃與觸發機制
綜合
現在你可以將利特尔法則(Little's Law)應用為矩形,解讀排隊曲線及其膝點,並將兩者與容量決策相結合。
同時應用兩者。
後端層級每秒處理 2,000 個請求,平均延遲為 50 毫秒,每個副本在 70% CPU 使用率下的容量為每秒 80 個請求。突增係數為 2 倍;您希望系統能承受 3 個副本同時故障。
配套筆記
配套筆記
本幾何學課程將無狀態水平擴展主課程重新詮釋為定量幾何。
下一個配套課程 geometry_of_ingress_egress_separation 將網路邊界分割重新詮釋為一個二分圖,其中包含一個由該分割移除的割點。
做得很好。