2008-11-26 106 views
0

我有一個Web服務,我試圖加載測試。我創建了一個程序,它產生線程來模擬連接到服務和發出請求的多個用戶。每個線程在它死亡之前都會產生「一定數量」的請求。每一個新請求都會在準備就緒後立即完成 - 在獲得響應和發出下一個請求之間幾乎沒有任何延遲。被測試的Web服務在同一臺服務器上調用另一個Web服務。Http Web服務負載測試

這個過程似乎可以正常工作到90個模擬用戶。但是,一旦我嘗試了100個模擬用戶,程序就會在大約6次處理請求後掛起。他們似乎沒有做任何事情。模擬客戶端掛起等待響應,Web服務未收到請求。它需要服務器重新啓動才能恢復。

這是怎麼回事?我可以對服務器進行連接的數量是否有限制?我應該嘗試「加大」負載(現在我只是儘可能快地發射它們)?

我正在使用我們的服務器Java Caps 5.1.3應用程序服務器和我用來使請求的庫是HttpUnit 1.6.2。


後續問題 什麼的加速時間有什麼好處?爲什麼我無法在測試開始時將所有負載都推送到服務器?

回答

2

看到這種情況可能有多種原因,您可以嘗試下面的方法來找出原因。希望他們幫助:

1.使用斜坡上升

使用一個體面的斜升說ATLEAST 1USER/2秒等。如果使用Ramp-up解決了您的問題,那麼它肯定是一個連接計數問題。

2.代碼審查

徹底檢查在某些情況下,你已經寫了負載注入代碼,unexited循環/線程。

您還可以使用分析工具,例如JENSOR找出哪個方法進入死鎖並導致服務器無響應。


此外,檢查你的web服務器上的這些參數和調整它們和測試

  • MaxThreads
  • 進程數
  • MaxSessionCount

Answer for Follow-up Question

加速模擬真實場景,同時爲Web服務器提供呼吸空間。在進行負載測試時,模式應該與真實生活相似,以獲得準確和可擴展的預測。

這在這樣發揮的最重要的部分參數如下:

  • 斜坡上升
  • 思考時間
  • 起搏的B/W迭代
  • 事務混合
  • 號併發用戶
1

我想你應該嘗試使用JMeter負載測試。它有所有的加速的東西。 This PPT presentation比較這兩個,所以你可以看到哪個更適合你。

2

回答後續問題

斜升模擬現實生活場景,並在同一時間提供了一個喘息的Web服務器。在進行負載測試時,模式應該與真實生活相似,以獲得準確和可擴展的預測。

這在這樣發揮的最重要的部分參數如下:

  • 斜坡上升
  • 思考時間
  • 起搏的B/W迭代
  • 事務混合
  • 號併發用戶