2014-07-17 26 views
1

如果我的基準後如何計算平均的情況下,和例如我發現如下:做HTTP基準

  1. 隨着1個併發用戶,該API給150 REQ /秒。 (9000 req/minute)
  2. 超過300個併發用戶,api開始拋出異常。
  3. 一個應用每30分鐘請求1次。

它是正確的,如果我說:

  1. 最好的情況下是該API可以處理(30 * 9000 = 270.000用戶)。即在30分鐘內,將有270.000個連續請求,並且每個來自不同用戶
  2. 最糟糕的情況是當同時有300個用戶發佈請求時。

如果是這樣,那麼有沒有辦法計算出平均情況? 與計算最壞情況,算法的平均個案複雜度是否相同?

回答

1

回答這些問題的理論工具是http://en.wikipedia.org/wiki/Queueing_theory。它表示,你不太可能得到你所假設的性能水平,因爲施加到系統的負載波動,所以有繁忙的時段和安靜的時段。如果這個系統在安靜的時候無所事事,那麼它就會被迫陷入空閒狀態,而你沒有考慮到這一點。另一方面,在繁忙時期,它通常會建立長時間的等待工作隊列,直到隊列變得很長以至於客戶走開,或者隊列變得比系統能夠支持的時間更長,或者兩者都崩潰。

http://pages.cs.wisc.edu/~dsmyers/cs547/lecture_12_mm1_queue.pdf圖1第3頁的圖表顯示了響應時間與所施加的負載之間的關係,即可能是最樂觀甚至是模糊的現實情況。當你接近最大負載時,你可以看到響應時間變得非常大。

到目前爲止,最明智的做法是運行測試,將實際負載應用於您的應用程序 - 這對於人們構建諸如http://jmeter.apache.org/之類的東西已足夠重要。如果你想要一個經驗法則,我會說你不打算按照你原先計算的理論容量的50%來強調系統。