JMeter的JVM在10分钟后崩溃

时间:2018-10-02 07:18:23

标签: java jmeter crash jvm-crash

我正在使用具有10个从属的JMeter。执行10分钟后,Java崩溃:


# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000051c39ea0, pid=2488, tid=0x0000000000000ac0
#
# JRE version: Java(TM) SE Runtime Environment (8.0_181-b13) (build 1.8.0_181-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.181-b13 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V  [jvm.dll+0x69ea0]
#
# Core dump written. Default location: C:\apache-jmeter-3.1\bin\hs_err_pid2488.mdmp
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#  

VM Arguments:
jvm_args: -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx3276m -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50 -XX:MaxTenuringThreshold=2 -XX:+CMSClassUnloadingEnabled 
java_command: ApacheJMeter.jar
java_class_path (initial): ApacheJMeter.jar
Launcher Type: SUN_STANDARD

Environment Variables:
PATH=C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Amazon\cfn-bootstrap\
USERNAME=XXX
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 85 Stepping 4, GenuineIntel

由于OutOfMemoryError,我最近不得不增加所有从属服务器和服务器计算机的Java堆大小。 所有10个从属都具有4GM RAM,服务器计算机具有16GM RAM。 当前的JMeter设置为: HEAP = -Xms512m -Xmx3276m

2 个答案:

答案 0 :(得分:2)

您正在使用Java 8,但仍在使用旧的JMeter 3.1版本,

请尝试使用最新的Version 5.0,它是JMeter best practices中第一个列出的,对于您的问题,请尽可能减少资源:

  
      
  • 使用非GUI模式:jmeter -n -t test.jmx -l test.jtl
  •   
  • 使用尽可能少的侦听器;如果使用上述的-l标志,则可以将其全部删除或禁用。
  •   
  • 在负载测试期间不要使用“查看结果树”或“在表中查看结果”侦听器,仅在脚本编写阶段调试脚本时使用它们。
  •   
  • 与其使用大量相似的采样器,不如在循环中使用相同的采样器,并使用变量(CSV数据集)来更改采样。 [包含控制器在这里无济于事,因为它将文件中的所有测试元素添加到测试计划中。]
  •   
  • 不使用功能模式
  •   
  • 使用CSV输出而不是XML
  •   
  • 仅保存所需的数据
  •   
  • 使用尽可能少的断言   使用性能最高的脚本语言(请参见JSR223部分)
  •   

答案 1 :(得分:1)

It's not a crash of JMeter, but a JVM crash.

Your configuration has many issues:

You have this:

-Xms512m -Xmx3276m -XX:NewSize=128m -XX:MaxNewSize=128m

Remove those as your tuning is wrong:

-XX:NewSize=128m -XX:MaxNewSize=128m

Also check if you are running the 10 slaves on same machine that:

(heap+metaspace size + Number of threads x Stack size) x 10 + 300m < Machine memory size

You say you have 5 threads per slave , why use distributed testing for such low number of slaves ? JMeter is capable of running 1000 threads without problems on 1 average machine.

Finally, upgrade your jmeter very old version.