我使用的是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个用户……
问候
Sylvie
发布于 2014-10-15 03:29:18
问题是由于2.11版中的已知错误造成的:
当If控制器在第一次迭代中有一个总是为假的条件时,
侦听器不会显示迭代计数(参见错误52496 )。解决方法是在与If控制器相同(或更高)的级别添加采样器。例如,一个等待时间为0(不生成样本)的Test Action采样器,或者一个所有字段都设置为False (以减少样本大小)的Debug sampler。
还打开为:
此错误现已修复,因此将在2.12版本中提供
发布于 2014-09-30 19:27:03
2014/09/16 10:31:37 WARN - jmeter.control.GenericController:检测到StackOverflowError
当测试计划中存在逻辑错误时,可能会出现此错误。请仔细检查是否在测试计划中添加beanshell侦听器,以便在逻辑控制器中打印额外的日志,例如循环/迭代控制器。
发布于 2015-03-20 16:53:26
我认为在"set HEAP=-Xms512m -Xmx12144m“中,两个值需要相同。我认为如果你尝试使用"set HEAP=-Xms2048m -Xmx2048m“,这个错误就会消失。
https://stackoverflow.com/questions/25907876
复制相似问题