Java jmeter测试失败,内存不足错误
当尝试与50个或更多用户一起运行jMeter时,会出现OutOfMemoryError:Java jmeter测试失败,内存不足错误,java,jmeter,Java,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 As
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.bat
或jmeter.sh
脚本中有一行建议按如下方式启动jmeter
JVM_ARGS="-Xms512m -Xmx512m" jmeter.sh
您可以尝试增加最大堆,直到停止接收这些错误。我建议将其设置为大约80%的硬件RAM
还考虑确保禁用内存消耗侦听器、不重写、使用后处理器有效等。
< P>增加后,BAT文件中的堆大小将从测试计划中删除所有侦听器,然后运行脚本并查看魔法。现在您将无法获得。享受吧在Windows上或BIN/JMETER .SH上,你应该总是考虑运行你的测试非GUI模式。 找到这一行:
set HEAP=-Xms512m -Xmx512m
该变量在启动时作为参数传递给jmeter。
按如下方式增加默认堆化:
set HEAP=-Xms1024m -Xmx1024m
如果有可用空间,并且jmeter需要更多空间,则可以添加更多空间。
希望能有所帮助。JMeter消耗大量内存的原因可能有很多:
- 使用和滥用
- 在UI模式下运行测试:改为在批处理模式下运行测试
- JMeter SaveService配置不当:您是否在JTL中保存请求和响应
- 每个JMeter load generator的线程数是否过多?通常每个引擎少于1000就可以了,但这也取决于脚本的复杂性。请参阅在分布式模式下运行JMeter
JVM_ARGS=“-Xms512m-Xmx512m”jmeter.sh
查看Jmeter 3.x中的更多有价值的提示。解决这个问题有两个步骤 步骤1,修改JMeter批处理文件中的JVM内存
## ==============================================
## Environment variables:
## JVM_ARGS - optional java args, e.g. -Dprop=val
##
## e.g.
## JVM_ARGS="-Xms512m -Xmx512m" jmeter etc.
##
## ==============================================
根据您的环境,这是jmeter.sh中的默认值:
JVM_ARGS="-Xms512m -Xmx2048m"
在jmeter.bat中:
set JVM_ARGS=-Xms512m -Xmx2048m
set HEAP=-Xms512m -Xmx2048m
步骤2,要修改JMeter批处理文件中的HEAP=“-Xms512m-Xmx512m”:
在jmeter.sh中
HEAP="-Xms512m -Xmx2048m"
在jmeter.bat中:
set JVM_ARGS=-Xms512m -Xmx2048m
set HEAP=-Xms512m -Xmx2048m
我在Mac上的一行代码(本例中jmeter是bash脚本):
$JVM_ARGS=“-Xms4g-Xmx4g-XX:NewSize=4g-XX:MaxNewSize=4g”&导出JVM_ARGS&jmeter要设置更高的JVM堆空间,请在Ubuntu上找到jmeter脚本(/usr/share/jmeter/bin/jmeter,当通过apt安装
jmeter
时),并在run_-java行之前添加以下行(在上找到):
HEAP=“-Xms512m-Xmx4g”
这里最大堆空间增加到4GB
但是,您可能仍然会耗尽内存。当您运行大量样本,并且有一个侦听器为每个样本收集数据时,就会发生这种情况(例如侦听器->在树中查看结果)。删除此类(结果)侦听器并将重点放在摘要结果侦听器上(例如,侦听器->摘要报告)。即使对于大型压力测试,这也会占用更少的堆空间。是GUI模式还是非GUI模式?您使用了多少个侦听器?看看这些提示另一篇文章提出了12种可能的解决方案:选得好,听众需要大量的内存+1。