2014-01-22 76 views
2

這與JMeter的循環計數行爲有關。JMeter的循環計數行爲

我第一次使用JMeter來加載測試我的新Web應用程序。
首先我配置了JMeter來訪問一個簡單的xhtml頁面(home.xhtml)。

Load configuration in JMeter: 
Number of threads (users): 100 
Ramp-Up period (in seconds): 1 
Loop count: 100 

通過上述配置,我試圖模擬100 users訪問主頁URL各100次。我預計這會模擬100個不同的用戶打開100個瀏覽器窗口並且每個用戶訪問每個with the same browser window的URL 100次的測試條件。所以,這應該理想地僅創建100個會話。但在測試結束時的堆轉儲中,我注意到有10,000(100 x 100)個會話對象。

會話實例的類:org.apache.catalina.session.StandardSession

此行爲導致堆出在較高負荷的Tomcat的JVM內存不足的錯誤(比如1000個用戶提供的1000循環計數)。在我的測試過程中,堆的老一代(使用JDK附帶的VisualGC工具進行監控)持續增長,最終導致內存不足。

使用的軟件:

Tomcat 7.0.47 
JSF 2.2 (Mojarra 2.1.6) 
PrimeFaces 4.0 
JMeter 2.11 (To create the load) 
VisualVM (To monitor memory consumption & take heap dump) 
Eclipse Memory Analysis Tool (MAT) 1.3 – Used to analyse the heap. 

從堆分析我的推斷:由於我在人堆裏看萬分會話的情況下,我推斷JMeter是模擬1萬個用戶與我上面的配置,而不是模擬100個用戶每個訪問100個URL。

問題:JMeter的這個循環計數行爲是預期還是我缺少某些東西?

回答

3

如果您未添加HTTP Cookie Manager,則每個請求將被視爲不同的服務器用戶。

要模擬100個VU,只需將Cookie管理器添加到您的測試計劃中即可。

每個「VU」將循環100次。

+0

+1它的工作,謝謝一堆! – PhantomReference