原文地址:http://www.cnblogs.com/jackei/archive/2006/11/20/565527.html
文章中介紹一個理發店理論,然后引出最佳並發用戶數和最大並發用戶數的概念
背景:
理發店共有3名理發師,每名理發師完成一次理發都耗時1小時,店里有還有一些位子供客人等位,每個客人在理發店呆的時間超過3小時就會無法忍受離開。
我理解的幾個概念
3名理發師,好比應用同時能處理幾個事務
理發耗時1小時,好比完成一次事務需要的時間
(等待位子,加上能剪發的位子,好比最大請求隊列數)
3小時,好比響應時間,超過3小時,則放棄這個請求
結合場景,從上圖可以看出,隨着理發店客人的數量增加時,響應時間一開始並沒有明顯變化,因為有3個理發師,足矣消化掉3個客人,當超過3個客人時,勢必有客人是需要等待的。
在客人數量正好為3人時,理發師的工作效率最高,客人也不需要等待,這個數我就理解為 最佳並發用戶數
而當客人數為9人時,在這個場景中,勢必有客人完成理發的時間要達到2-3小時了(來的時候,其他客人已經剪到一半了,需要等正在剪的客人0-1小時,前面排在前面的人理發1小時,自己理發1小時),而再來客人的話,必定完成理發的時間超過3小時,也就是所謂的超時放棄走人了。
這個9,我就理解為 最大並發用戶數
所謂的性能,是負載、吞吐量、可接受的響應時間和資源利用率之間的一種平衡。
下面的文字摘錄的,很受用:
對於一個確定的被測系統來說,在某個具體的軟硬件環境下,它的“最佳並發用戶數”和“最大並發用戶數”都是客觀存在。以“最佳並發用戶數”為例,假如一個系統的最佳並發用戶數是50,那么一旦並發量超過這個值,系統的吞吐量和響應時間必然會 “此消彼長”;如果系統負載長期大於這個數,必然會導致用戶的滿意度降低並最終達到一種無法忍受的地步。所以我們應該 保證最佳並發用戶數要大於系統的平均負載。 要補充的一點是,當我們需要對一個系統長時間施加壓力——例如連續加壓3-5天,來驗證系統的可靠性或者說穩定性時,我們所使用的並發用戶數應該等於或小於“最佳並發用戶數”——大家也可以結合上面的討論想想這是為什么 ^_^ 而對於最大並發用戶數的識別,需要考慮和鑒別一下以下兩種情況: 1. 當系統的負載達到最大並發用戶數后,響應時間超過了用戶可以忍受的最大限度——這個限度應該來源於性能需求,例如:在某個級別的負載下,系統的響應時間應該小於5秒。這里容易疏忽的一點是,不要把顧客因為無法忍受而離開時店內的顧客數量作為理發店的“最大並發用戶數”,因為這位顧客是在3小時前到達的,也就是說3小時前理發店內的顧客數量才是我們要找的“最大並發用戶數”。而且,這位顧客的離開只是一個開始,可能有會更多的顧客隨后也因為無法忍受超長的等待時間而離開; 2. 在響應時間還沒有到達用戶可忍受的最大限度前,有可能已經出現了用戶請求的失敗。以理發店模型為例,如果理發店只能容納6位顧客,那么當7位顧客同時來到理發店時,雖然我們可以知道所有顧客都能在可容忍的時間內剪完頭發,但是因為理發店容量有限,最終只好有一位顧客打道回府,改天再來。 對於一個系統來說,我們應該 確保系統的最大並發用戶數要大於系統需要承受的峰值負載。