jmeter测试因内存不足错误而失败

当尝试使用50或更多用户运行jMeter时,它会给出OutOfMemoryError:

2013/12/18 13:35:15 ERROR - jmeter.threads.JMeterThread: Error processing Assertion java.lang.OutOfMemoryError: Java heap space 2013/12/18 13:35:15 ERROR - jmeter.threads.JMeterThread: Error processing Assertion java.lang.OutOfMemoryError: Java heap space 2013/12/18 13:35:15 ERROR - jmeter.threads.JMeterThread: Error processing Assertion java.lang.OutOfMemoryError: Java heap space 2013/12/18 13:35:15 ERROR - jmeter.threads.JMeterThread: Error processing Assertion java.lang.OutOfMemoryError: Java heap space 2013/12/18 13:35:16 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.OutOfMemoryError: Java heap space 2013/12/18 13:35:17 ERROR - jmeter.threads.JMeterThread: Test failed! 

我试图增加堆大小但仍然得到相同的错误。
即使我试图删除所有的听众,但没有任何改变。

看起来你只是缺少Java堆空间。 这是正常的,因为默认情况下JMeter的堆分配非常低。 它可以通过-Xmx参数控制。

jmeter.batjmeter.sh脚本中有一行建议启动JMeter

 JVM_ARGS="-Xms512m -Xmx512m" jmeter.sh 

您可以尝试增加最大堆,直到您停止接收这些错误。 我建议将其设置为80%的硬件RAM。

还要考虑JMeter性能和调优技巧文章 ,以确保禁用内存消耗的侦听器,不要覆盖,有效使用后处理器等。

增加之后,bat文件中的堆大小从测试计划中删除所有监听器,然后运行你的脚本并看到魔法。现在你不会在jmeter中出现内存错误享受!

在Jmeter 3.x. 有两个步骤来解决这个问题。

步骤1,修改JMeter批处理文件中的JVM内存

 ## ============================================== ## Environment variables: ## JVM_ARGS - optional java args, eg -Dprop=val ## ## eg ## JVM_ARGS="-Xms512m -Xmx512m" jmeter etc. ## ## ============================================== 

根据您的环境,这是jmeter.sh中的默认值:

 JVM_ARGS="-Xms512m -Xmx2048m" 

在jmeter.bat中:

 set JVM_ARGS=-Xms512m -Xmx2048m 

步骤2,在JMeter批处理文件中修改HEAP =“ – Xms512m -Xmx512m”:

在jmeter.sh中

 HEAP="-Xms512m -Xmx2048m" 

在jmeter.bat中:

 set HEAP=-Xms512m -Xmx2048m 

你也应该考虑运行你的测试非gui模式。

在windows上打开bin / jmeter.bat或在linux上打开bin / jmeter.sh,找到这一行:

 set HEAP=-Xms512m -Xmx512m 

该变量在启动时作为参数传递给jmeter。 像这样增加默认的堆大小:

 set HEAP=-Xms1024m -Xmx1024m 

如果有空,可以增加更多空间,如果jmeter需要更多空间。 希望有所帮助。

JMeter消耗大量内存的原因有很多:

  • 使用和滥用UI侦听器 ,
  • 在UI模式下运行测试:改为以批处理模式运行测试
  • JMeter SaveService配置错误 :您是否在JTL中保存请求和响应?
  • 每个JMeter负载生成器的线程太多 ? 通常每个引擎少于1000个应该没问题,但这也取决于脚本的复杂性。 请参阅远程测试以在分布式模式下运行JMeter。

调整堆只是解决这些问题的一种方法:

JVM_ARGS="-Xms512m -Xmx512m" jmeter.sh

查看JMeter Out of Memory:12种修复方法, 获取更多有价值的提示