JMETER:ERROR - jmeter.JMeter:未捕获异常:java.lang.OutOfMemoryError:超出GC开销限制

时间:2017-09-27 15:53:57

标签: jmeter performance-testing

我正在AWS ubuntu计算机的分布式环境中运行6450个用户测试。

当测试达到峰值负载时,我收到以下错误,

  

错误 - jmeter.JMeter:未捕获异常:java.lang.OutOfMemoryError:超出GC开销限制

Machine Details:
m4.4xlarge
HEAP="-Xms512m -Xmx20480m" (jmeter.sh file)

我在JMeter.sh中为堆大小分配了20GB。

但是,当我运行ps -eaf|grep java命令时,它会给出以下响应。

root      11493  11456 56 15:47 pts/9    00:00:03 java -server -
XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m -
XX:MaxTenuringThreshold=2 -XX:PermSize=64m -XX:MaxPermSize=128m -
XX:+CMSClassUnloadingEnabled -jar ./ApacheJMeter.jar** 

我不知道我现在要做些什么改变。

3 个答案:

答案 0 :(得分:1)

jmeter 文件中的更改不在jmeter.sh 中,因为您可以看到ps没有应用它。

还有这样的堆你可能需要添加:

  

-XX:-UseGCOverheadLimit

切换到G1垃圾收集器算法。

并检查您是否尊重这些建议:

答案 1 :(得分:0)

首先,答案在你的问题中:你说ps -eaf|grep java表明了这一点:

  

XX:+ HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m

那就是内存仍然非常低。所以你要么改变jmeter.sh,要么使用其他shell脚本来实际启动JMeter,或者你没有以有效的方式改变它,所以JMeter使用默认值。

但最重要的是,我真的怀疑你可以在一台机器上运行6450个用户,除非你的脚本很轻。未配置的机器通常可以处理200-400,而配置良好的机器最多可以处理2000个。

答案 2 :(得分:0)

您需要修改 jmeter 文件中的行,而不是jmeter.sh文件。找到HEAP="-Xms512m -Xmx512m"行并相应地更新Xmx值。

还要确保使用jmeter文件启动JMeter。

如果您的环境明确依赖于jmeter.sh文件,那么您应该稍微改变一下HEAP大小,例如:

export JVM_ARGS="-Xms512m -Xmx20480m" && ./jmeter.sh

或将相关行添加到jmeter.sh文件。

有关调整JMeter的全面信息,请参阅JMeter Best Practices9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure文章