說「如果請求的平均服務時間爲X且請求的平均服務時間爲Y,那麼併發請求的最大數服務將是Y/X「?假設平均服務時間已知,Web服務器可以提供的最大併發請求數
我想我問的是,如果有任何隱藏的因素,我沒有考慮到!?
說「如果請求的平均服務時間爲X且請求的平均服務時間爲Y,那麼併發請求的最大數服務將是Y/X「?假設平均服務時間已知,Web服務器可以提供的最大併發請求數
我想我問的是,如果有任何隱藏的因素,我沒有考慮到!?
如果您正在專門討論Web服務器,那麼不,您的公式不起作用,因爲Web服務器旨在處理多個同時請求,使用forking or threading。
這將公式變成難以量化的東西 - 根據我的經驗,Web服務器可以處理LOTS(即數百或數千個)併發請求,這些併發請求很少或沒有時間,但傾向於非常顯着地降低併發性請求消耗更多時間。
這意味着「平均服務時間」並不是非常有用 - 它可以隱藏很大的變化,實際上是異常值對您影響最大。
許多因素不考慮
這就是說,一個簡單的方法來得到一個粗略的估計是與Apache AB工具(阿帕奇基準)
例如,在一個時間內得到1000次100個請求主頁:
ab -c 100 -n 1000 http://www.example.com/
廣義上是,但您的服務提供商(您的案例中的網絡服務器)能夠並行處理多個請求,因此您應該考慮這一點。我假設你測量了端到端的服務時間,並沒有通過並行數據流的平均數。另一件你沒有做也不能實際衡量的是延遲到/從你的網站。
你要走的是Erlang單元(不是使用相同名稱的語言),它用於描述系統可以承受多少負載。 Erlangs是無用的(它只是一個數字),起源於老式電話POTS,它用來描述每個時間段處理X次呼叫所需的線路數量,阻塞概率較低。除erlang之外,engset更多地用於高容量系統,例如移動系統。
它也被用於昂貴的顧問報告到實時計算機系統和數據庫來描述可能發生性能下降的點。維基百科有關於這個http://en.wikipedia.org/wiki/Erlang_(unit)的文章和「固定和移動通信,網絡系統和服務」一書在性能分析方面有很好的篇章。
雖然針對電話系統,只需更換詞web服務器,它的行爲相同。 Web服務器是相同的概念,提供的負載以隨機間隔到達具有有限並行容量的系統。在你的情況下,你可以用負載工具比並行容量更容易計算總負載,然後返回計算公式。這是廣泛完成的,以獲得整體系統模型的信心水平。
當你有一個隨機到達負載超過並行流(即Web請求)和服務時間只能被平均或估計(即它在現實生活中變化)時,Erlang/engsetformulas非常有用。然後,您可以計算阻塞概率,這是新請求在服務當前請求時需要等待的概率,以及等待的時間。它還有助於分析您是否需要並行處理更多請求,或者使每個請求更快(在erlang中#線和持續時間說)
接下來您可能會考慮排隊系統分析,因爲一旦請求塊(隊列),模型略有改變。
我相信你提到的因素都包含在我的「平均服務時間」中,不是嗎? – Mehran
大部分是但不一定 - 如果您有足夠的併發用戶,則只有一些限制。例如,如果每分鐘有一個請求 - 數據庫不一定會鎖定 - 如果同時有多個請求,它將掛起。在小使用情況下可能不會成爲問題的其他因素也可能會出現。這就是說,以粗略的估計開始總是好的 –
您的觀點已經被採納,我非常感謝,但我的問題更多的是一個邏輯上的討論,而不是一個實際的討論。只要將我的*平均服務時間*視爲實際真正的服務時間(現場計算的時間),現在嘗試考慮可能起作用的任何額外因素。現在怎麼樣? – Mehran