在 M/M/1 佇列中 80% 的使用率並不代表 80% 的等待。使用率 ρ = λ/μ 是指單一伺服器忙碌的時間比例,而當 ρ 趨近於 1 時,等待時間會呈非線性成長。平均排隊等待時間的精確公式為 Wq = ρ/(1−ρ) × (1/μ),而系統中的平均總時間為 W = 1/(1−ρ) × (1/μ)。在使用率 80% 時,排隊等待時間是 4 個平均服務時間,系統中的總時間是 5 個平均服務時間,其中約 80% 的時間花在等待而非接受服務——這很可能就是原本直覺上想表達的意思。這種巧合並非通則:它只有在 80% 時才成立,因為 ρ 恰好等於 0.8。當使用率降到 50% 時,客戶花在等待的時間佔其在系統中總時間的 50%。當使用率提升到 90% 時,這個比例會上升到 90%,而絕對等待時間則從 4 個平均服務時間膨脹到 9 個。在 /calculator/queueing-theory-calculator/ 的排隊理論計算工具會根據您輸入的到達率與服務率,計算出全部五項標準 M/M/1 指標,讓您用自己的輸入值來驗證這些數字,而不是依賴通用的參考表。

在 M/M/1 佇列中「使用率」的意義
M/M/1 是 Kendall 標記法,代表具有兩個馬可夫性質的單伺服器佇列。第一個 M 表示到達服從卜瓦松過程,到達間隔時間為獨立的指數分配。第二個 M 表示服務時間為獨立且服從指數分配。1 表示恰好只有一個伺服器。
在相同的時間單位下,給定到達率 λ 與服務率 μ,使用率為 ρ = λ/μ。這是伺服器在長期下忙碌的時間比例。互補的機率 1−ρ 則是伺服器在長期下閒置的時間比例。穩定狀態只有在 μ 嚴格大於 λ 時才存在,因為否則佇列會無界成長,期望等待時間將變成無限大。
因此在使用率 80% 時,伺服器平均有 80% 的時間忙碌、20% 的時間閒置。這就是這個數字實際上所代表的意義。等待時間則取決於這些忙碌與閒置時段如何對應到不同的客戶身上,而 M/M/1 模型透過下一節的公式捕捉了這點。
真正的公式:為何等待時間會呈非線性成長
標準的穩態 M/M/1 結果如下:
- 使用率:ρ = λ/μ
- 佇列中平均等待人數:Lq = λ² / [μ(μ−λ)]
- 整個系統中的平均人數:L = λ / (μ−λ)
- 服務前的平均排隊等待時間:Wq = λ / [μ(μ−λ)]
- 系統中的平均總時間:W = 1 / (μ−λ)
關鍵的結構性特徵在於 (μ−λ) 這個分母。當 λ 接近 μ 時,該分母會縮小,而任何包含它的指標都會以比線性更快的速度成長。這就是為什麼使用率 80% 的佇列與使用率 50% 的佇列感受差異極大,即使這兩個數字感覺都只是「中等忙碌」。
作為參考,相對於平均服務時間 1/μ 的等待倍率,在排隊等待時為 ρ/(1−ρ),在總時間時為 1/(1−ρ)。因此使用率與客戶花在排隊與接受服務上的時間比例關係為 Wq/W = ρ,這正好就是您可能注意到的 80% 巧合。這不是關於使用率本身的巧合,而是這些公式寫法直接造成的代數結果。教科書參考資料,例如 普林斯頓大學的佇列演算法筆記以及 佛羅里達大學的基礎佇列理論筆記,都展示了相同的推導過程。
計算範例:ρ = 0.80 逐步推導
假設有個單一伺服器的櫃台,平均服務率 μ = 10 位客戶/分鐘,卜瓦松到達率 λ = 8 位/分鐘。這樣得出 8/10 = 0.80 的使用率,也就是原本問題中的情況。
平均服務時間:1/μ = 1/10 分鐘 = 每位客戶 6 秒。
系統中的平均總時間:W = 1/(μ−λ) = 1/(10−8) = 1/2 分鐘 = 30 秒。
平均排隊等待時間(服務開始前的時間):Wq = λ/[μ(μ−λ)] = 8/[10·2] = 0.4 分鐘 = 24 秒。
系統中的平均人數:L = λ/(μ−λ) = 8/2 = 4 位客戶。
佇列中平均等待人數:Lq = λ²/[μ(μ−λ)] = 64/[10·2] = 3.2 位客戶。
現在來看花在等待的時間佔總時間的比例:Wq/W = 24/30 = 80%。這就是在某種意義下「80% 的使用率會產生 80% 的等待」這個說法意外正確的原因:在恰好 ρ = 0.80 時,客戶花在等待的時間佔其在系統中總時間的 80%,而非花在接受服務。當使用率降到 50% 時,這個比例也降到 50%。在相同的 μ = 10/分鐘 櫃台下,使用率提升到 90% 時,絕對等待時間從 24 秒成長到 54 秒,而系統總時間則從 30 秒躍升到 60 秒。這些數字都不是手算才有的——只要一個步驟,排隊理論計算工具就能得出相同的結果。
如何使用排隊理論計算工具進行驗證
- 在瀏覽器中開啟排隊理論計算工具。
- 在到達率欄位中輸入正的到達率 λ。在上述計算範例中,該值為 8/分鐘。
- 在服務率欄位中輸入正的服務率 μ。在計算範例中,該值為 10/分鐘。請確保兩個欄位使用相同的時間單位,因為若將每小時的到達與每分鐘的服務混用,即使兩個輸入看似有效,所得到的數字也會毫無意義。
- 確認結果旁所顯示的假設條件:卜瓦松到達、指數服務、FIFO 規則、一個伺服器、無限容量、穩定狀態。對於不穩定的佇列,頁面會拒絕 λ 大於或等於 μ 的輸入,而不是印出看似有限的答案。
- 讀取五項指標:使用率 ρ、平均等待人數 Lq、系統中平均人數 L、平均排隊等待時間 Wq,以及平均總時間 W。時間單位會跟隨速率單位,因此以分鐘為單位的速率會產生以分鐘為單位的等待時間。
- 將結果連同其單位解釋複製到您的工作表或容量討論中。結果只保留在瀏覽器中,不會上傳任何資料。
試著使用相同的 μ,分別輸入 ρ = 0.80、ρ = 0.90,然後 ρ = 0.95,觀察 (μ−λ) 分母如何驅動 W 與 L 上升。飽和附近的數值成長是模型的特性,而非計算的瑕疵:這些公式在 ρ → 1 時數學上未定義,這也反映了佇列最終會落後的實際運作狀況。
當 M/M/1 不適用於您的系統時
M/M/1 是具有特定假設的教科書模型:卜瓦松到達、指數服務時間、一個 FIFO 伺服器、無限的母體、無限的佇列容量,以及穩態的長期運作。許多實際系統會悄悄地違反這些假設:
- 到達可能是排程性或突發性的,而非卜瓦松過程。行銷活動、輪班交接或備份作業常會產生不規則的到達模式,違反無記憶性的到達間隔假設。
- 服務時間可能接近固定、重尾分布或依類型而異。資料庫查詢、客服工單與結帳交易的分布通常與指數分配不同。
- 系統可能有多個伺服器、有限的緩衝區、優先順序類別、放棄行為、休閒時段、批次處理,或是隨時段變動的速率。
當上述任何情況適用時,M/D/1、M/G/1、M/M/c、有限容量模型或模擬可能更為合適。平均值也無法描述尾端延遲或服務水準風險;如果面向客戶的 SLA 取決於第 95 個百分位數,您需要的是能夠回報百分位數而非僅有均值的模型。針對多伺服器的情境,專屬指南 M/M/1 佇列計算工具是否能模擬多個伺服器 涵蓋了 M/M/1 與 M/M/c 之間的界線。
快速參考:使用率與佇列行為
| 使用率 ρ | 伺服器閒置比例 | 佇列行為(定性描述) |
|---|---|---|
| 25% | 75% | 佇列維持很小;排隊等待時間約為平均服務時間的三分之一 |
| 50% | 50% | 排隊等待時間等於一個平均服務時間;系統中的總時間加倍 |
| 80% | 20% | 排隊等待時間為 4 個平均服務時間;總時間為 5;約 80% 的時間花在等待 |
| 90% | 10% | 排隊等待時間為 9 個平均服務時間;總時間為 10;開始出現明顯的非線性 |
| 95% | 5% | 排隊等待時間為 19 個平均服務時間;總時間為 20;服務水準風險很高 |
精確的倍率來自公式 ρ/(1−ρ)(排隊等待)與 1/(1−ρ)(總時間)。請將您自己的 λ 與 μ 輸入排隊理論計算工具,以驗證適用於您工作負載的數字,而不是依賴通用的參考表。
如果您正在權衡各種選項,如何避免在計算 M/M/1 佇列時犯錯對此有詳細的說明。