【轉】Eric's併發用戶數估算與Little定律的等價性

轉自:http://www.cnblogs.com/hundredsofyears/p/3360305.htmlhtml

 

在國內性能測試的領域有一篇幾乎被奉爲大牛之做的經典文章,一個名叫Eric Man Wong 2004年發表了名爲《Method for Estimating the Number of Concurrent Users》,裏面介紹了一種對系統併發用戶數估算的公式,並較爲詳細的闡述了過程以及證實方法。這個公式使用很是簡單,不少性能測試工程師都在本身的項目中使用或者打算嘗試使用,以致於在不分場合以及不具體分析系統用戶行爲的狀況下使用。本文不打算深刻探討該公式的適用範圍,我會在之後的文章中探討這個問題。後端

我並不否認該公式在文章中做者指定條件下的正確性,它在必定程度上幫助我從另一種思路考慮系統的性能模型,同時經過對性能工程的學習我發現該估算公式與Little定律盡然是等價的。網絡

 

下面回顧下Eric是怎麼得出這個公式的,根據原文的意思大概是這樣session

首先咱們知道在系統中佔用系統資源的都是在系統正在活動的用戶,也就是所謂的併發用戶,對於可是並非出於系統中的用戶好比剛登出或者還沒來得及登入的用戶是不會消耗系統資源的,因此當咱們想測量系統的容量時,這部分用戶不須要考慮,能夠只考慮當前出於系統中的活躍用戶。併發

而後文章引入了一個login session的概念,固然這個東西是一直有的,但本文須要用到因此特別指明是它是等同於用戶登出系統時與登入系統時的這段時間差,也就是session的生存週期。ide

文章中這個圖很好的描述了系統在處理陸續到達用戶時的系統某一時刻的狀態,以及詮釋經過計算併發用戶數統計系統性能的概念或者思想。性能

 

最終得出C=nL/T.學習

 

證實過程以及後面的詳述不表。測試

 

 

接着再來看看什麼是Little定律。spa

說實話這個定律應該是一個最基本的,也是在不少領域中已經普遍應用的定律,可是在國內性能測試領域出現的頻率卻不高。

 

直接借用《Programing Pearls 》的翻譯:

大多數的估算都遵循這樣一個淺顯的法則:總花費就等於每一個部分的花費再乘以總的部分數。但某些時候咱們還須要更深刻地瞭解細節。俄亥俄州立大學的Bruce Weide就一條通用得出奇的規則寫下以下文字。

Denning和Buzen引入的"操做分析"(參見Computing Surveys 10第3期,1978年11月,第225~261頁)比計算機系統隊列網絡模型更加通用。他們的展現至關精彩,不過因爲文章主題的限制,他們並未深刻揭示Little定律的通用性。他們的證實方法與隊列和計算機系統都沒有關係。想象一個任意的、有某些東西進入和離開的系統。Little定律能夠表述爲"系統中的東西的平均數目等於這些東西離開系統的平均速度乘以每一個東西離開系統所花費的平均時間"。(若系統的整體出入流是平衡的,離開速率也就是進入速率。)

 

 

在創建性能模型時,通常是常使用以下公式表述Little定律:

N=X*R

 

表示系統中同時活動的用戶,包括正在處理中和隊列中的

X表示用戶相繼到達系統的速率,在平衡狀態時即爲系統吞吐量(到達=離開)

R表示每一個用戶在系統中平均的駐留時間

 

也就是說系統中平均同時被服務的用戶數量等於用戶到達系統的速度*每一個用戶在系統中待的時間

 

這條定律很是實用也具備很廣的適用性,舉一個例子:

好比說,你正在排隊等待進入一個很受歡迎的夜總會,你能夠經過估計人們進入的速率來知道本身還要等待多長時間。應用Little定律,你能夠推理:"這個地方差很少能容納60人,平均在裏面呆的時間是3個小時,因此咱們以每小時20人的速度進入。而咱們前面還有20我的,因此咱們還要等上一個小時。

 

上面的例子能夠用公式進一步表述:

R=3 hours

X=20 /hour

 

So N=3 hours * 20 /hour=60 人,該夜總會能同時容納60人 

 

你們能夠比較以上兩種方法和定律,他們的表述是徹底不一樣的,計算所須要的變量也不同,可是通過下面的case後會有讓你驚奇的發現。

 

Case

有一個論壇系統,天天的活躍用戶有500,用戶活躍時間主要集中在晚上7點到12點,平均每人登入登出一次,登錄時長爲30分鐘,請爲該系統創建性能測試模型。

 

使用Eric的估算公式解:

假設系統後端維護session,那麼這個session的長度即爲30分鐘,L=30minutes

用戶活躍時長已經得知是從7點到12點共五個小時,T=5 hours

那麼併發用戶數C=n*L/T=500*30/(5*60)=50

 

 

同時咱們也可使用Little定律對系統併發用戶數進行估算:

500個用戶須要在7點到12點這段時間陸續登入論壇可知,到達率X=500/(5*60)= 5/3 個用戶/分鐘

登錄時長30分鐘爲用戶在系統中的駐留時間,R=30分鐘

那麼系統中同時被服務也就是併發數N=X*R=5/3 *30=50

 

看似兩種全完不一樣的方法計算出來的結果徹底同樣,是巧合嗎?或者一題多解?

 

咱們再來從另外的角度分解Eric的估算公式:

C=n*L/T  能夠表示爲  C=(n/T)*L

 

n/T 是否是和咱們剛纔在上面Little中第一步同樣,是計算到達率X的。

L不就是R嗎?都等同於session的長度。

 

也就是說C=(n/T)*T=X*R=N

 

結論:由以上得知,Eric's 估算公式跟Little定律是等價的同時讀者能夠本身看看他們各自的證實過程,有必定的類似性。

咱們也能夠在能適用的範圍內放心使用這兩種估算方法,以節約資源和時間。

 

Reference 

 

http://www.ece.virginia.edu/mv/edu/715/lectures/littles-law/littles-law.pdf

 

http://emiraga.wikispaces.com/file/view/Littles.law.January.2009.pdf

相關文章
相關標籤/搜索