Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jmeter测试失败,内存不足错误_Java_Jmeter - Fatal编程技术网

Java jmeter测试失败,内存不足错误

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

当尝试与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.bat
jmeter.sh
脚本中有一行建议按如下方式启动jmeter

JVM_ARGS="-Xms512m -Xmx512m" jmeter.sh
您可以尝试增加最大堆,直到停止接收这些错误。我建议将其设置为大约80%的硬件RAM


还考虑确保禁用内存消耗侦听器、不重写、使用后处理器有效等。

< P>增加后,BAT文件中的堆大小将从测试计划中删除所有侦听器,然后运行脚本并查看魔法。现在您将无法获得。
享受吧
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。