JMeter的'循环计数'行为

时间:2014-01-22 07:41:22

标签: performance jmeter performance-testing

这与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.

我对堆分析的推断:当我在堆中看到10,000个会话实例时,我推断JMeter正在使用我的上述配置模拟10,000个用户,而不是模拟100个用户,每个用户都有100个URL访问。

问题:JMeter会预期这种循环计数行为还是我错过了什么?

1 个答案:

答案 0 :(得分:3)

如果您不添加HTTP Cookie Manager,则每个请求都将被服务器视为不同的用户。

要模拟100个VU,只需将Cookie管理器添加到测试计划中即可。

每个“VU”将循环100次。