我正在使用JMeter 2.11。以下参数在jmeter.bat文件中定义:
set HEAP=-Xms512m -Xmx12144m
set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m
我以50个用户的批处理模式运行我的场景。似乎有些线程在20分钟或1小时内被阻塞,之后再次运行。例如,我们在单元组6中有以下内容:
<httpSample t="13" lt="13" ts="1410856270124" s="true" lb="/hopex/service.aspx?data=generationType-standard|generator-E98AEA3A4F717715" rc="200" rm="OK" tn="Groupe d'unités 1-6" dt="text" by="412">
<java.net.URL>http://172.16.1.23/hopex/service.aspx?data=generationType-standard|generator-E98AEA3A4F717715</java.net.URL>
</httpSample>
**executed at 16/09/2014 10:31:10**
<httpSample t="0" lt="0" ts="1410856270138" s="true" lb="/hopex/statesessionprovider.aspx" rc="200" rm="OK" tn="Groupe d'unités 1-6" dt="text" by="238">
<java.net.URL>http://172.16.1.23/hopex/statesessionprovider.aspx</java.net.URL>
</httpSample>
**executed at 16/09/2014 10:31:10**
<sample t="0" lt="0" ts="1410856274818" s="true" lb="Timer between steps" rc="200" rm="OK" tn="Groupe d'unités 1-6" dt="text" by="1478"/>
**executed at 16/09/2014 10:31:15**
<httpSample t="3" lt="3" ts="1410860493293" s="false" lb="/Hopex/service.aspx?data=generationType-standard|generator-E98AEA3A4F717715" rc="500" rm="Internal Server Error" tn="Groupe d'unités 1-6" dt="text" by="298">
<java.net.URL>http://172.16.1.23/Hopex/service.aspx?data=generationType-standard|generator-E98AEA3A4F717715</java.net.URL>
</httpSample>
**executed at 16/09/2014 11:41:33**
似乎定时器在10H31执行,下一个请求在11H41发送,也就是说在定时器之后的1H10。我们的服务器应用程序日志显示由于IIS而从未处理过上一个请求 Web应用程序会话超时。所以这意味着JMeter在发送请求之前暂停了一个多小时。应该注意的是,如果我们从我们的场景中删除JMeter while语句,它就可以工作。
我从JMeter日志中检索此信息。似乎问题来自JMeter堆栈溢出。
2014/09/16 10:30:49 WARN - jmeter.control.GenericController: StackOverflowError detected
2014/09/16 10:30:49 WARN - jmeter.control.GenericController: StackOverflowError detected
2014/09/16 10:30:49 WARN - jmeter.control.GenericController: StackOverflowError detected
2014/09/16 10:30:51 WARN - jmeter.control.GenericController: StackOverflowError detected
2014/09/16 10:31:00 INFO - jmeter.reporters.Summariser: summary + 196 in 30s = 6.5/s Avg: 154 Min: 0 Max: 11347 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0
2014/09/16 10:31:00 INFO - jmeter.reporters.Summariser: summary = 5974 in 1103s = 5.4/s Avg: 406 Min: 0 Max: 47864 Err: 0 (0.00%)
2014/09/16 10:31:01 WARN - jmeter.control.GenericController: StackOverflowError detected
2014/09/16 10:31:32 INFO - jmeter.reporters.Summariser: summary + 154 in 32s = 4.9/s Avg: 94 Min: 0 Max: 10982 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0
2014/09/16 10:31:32 INFO - jmeter.reporters.Summariser: summary = 6128 in 1135s = 5.4/s Avg: 399 Min: 0 Max: 47864 Err: 0 (0.00%)
2014/09/16 10:31:37 WARN - jmeter.control.GenericController: StackOverflowError detected
我尝试使用-XSS更改JMeter.bat参数但我们有副作用。我还使用这些参数运行测试:
set HEAP=-Xms512m -Xmx12144m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
set TENURING=-XX:MaxTenuringThreshold=2
set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000
set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m
没有任何变化,同样的问题也适用。 有没有人知道如何删除那些JMeter错误? 这对我们来说非常阻塞,因为这意味着JMeter无法同时正确处理50个用户......
此致
西尔维
答案 0 :(得分:3)
问题是由于版本2.11中的已知错误:
如果控制器的条件在第一次迭代时始终为假,则监听器不会显示迭代计数(请参阅错误52496)。解决方法是在If Controller的同一级别(或更高级别)添加一个采样器。例如,具有0等待时间的测试操作采样器(不生成样本),或调试采样器,所有字段都设置为False(以减小样本大小)。
也打开:
此错误现已修复,因此将以2.12
的形式提供答案 1 :(得分:0)
2014/09/16 10:31:37 WARN - jmeter.control.GenericController:检测到StackOverflowError
如果测试计划中存在逻辑错误,则会出现此错误。请仔细检查添加beanshell监听器,以便在测试计划中的逻辑控制器(例如循环/迭代控制器)中打印额外的日志。
答案 2 :(得分:0)
我相信在&#34;设置HEAP = -Xms512m -Xmx12144m&#34;两个值都必须相同。 我想如果你试试&#34;设置HEAP = -Xms2048m -Xmx2048m&#34;错误将消失。
答案 3 :(得分:0)
使用-Xss选项
增加jmeter堆栈大小