当尝试使用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!
我试图增加堆大小,但仍然得到相同的错误 即使我试图删除所有听众,但没有任何改变。
答案 0 :(得分:36)
看起来你只是缺少Java堆空间。这是正常的,因为默认情况下JMeter的堆分配非常低。它可以通过-Xmx
参数控制。
jmeter.bat
或jmeter.sh
脚本中有一行建议将JMeter启动为
JVM_ARGS="-Xms512m -Xmx512m" jmeter.sh
您可以尝试增加最大堆,直到您停止接收这些错误为止。我建议将其设置为80%的硬件RAM。
还要考虑JMeter Performance and Tuning Tips article以确保禁用内存消耗的侦听器,不要覆盖,有效使用后处理器等。
答案 1 :(得分:9)
增加之后,bat文件中的堆大小会从测试计划中删除所有侦听器,然后运行你的脚本并看到魔法。现在你不会得到out of memory error in jmeter 享受!
答案 2 :(得分:2)
在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
步骤2,修改HEAP =" -Xms512m -Xmx512m"在JMeter批处理文件中:
在jmeter.sh
中HEAP="-Xms512m -Xmx2048m"
在jmeter.bat中:
set HEAP=-Xms512m -Xmx2048m
答案 3 :(得分:0)
你也应该考虑运行你的测试非gui模式。
答案 4 :(得分:0)
在windows上打开bin / jmeter.bat或在linux上打开bin / jmeter.sh, 找到这一行:
set HEAP=-Xms512m -Xmx512m
此变量在启动时作为参数传递给jmeter。 像这样增加默认的堆大小:
set HEAP=-Xms1024m -Xmx1024m
如果有空的话,你可以增加更多空间,如果jmeter需要更多空间。 希望有所帮助。
答案 5 :(得分:0)
JMeter消耗大量内存的原因有很多:
调整堆只是解决这些问题的一种方法:
JVM_ARGS="-Xms512m -Xmx512m" jmeter.sh
查看JMeter Out Of Memory: 12 Ways to Fix Them以获取更多有价值的提示。
答案 6 :(得分:0)
我在Mac上为此使用的衬垫(在这种情况下,jmeter是bash脚本):
$ JVM_ARGS =“-Xms4g -Xmx4g -XX:NewSize = 4g -XX:MaxNewSize = 4g” &&导出JVM_ARGS && jmeter
答案 7 :(得分:0)
要设置更大的JVM堆空间,请找到您的jmeter脚本(通过apt安装jmeter
时在Ubuntu上的 / usr / share / jmeter / bin / jmeter )并添加以下内容在run_java行之前的行(位于https://www.blazemeter.com/blog/9-easy-solutions-jmeter-load-test-%e2%80%9cout-memory%e2%80%9d-failure/上):
HEAP="-Xms512m -Xmx4g"
此处最大堆空间已增加到4GB。
但是,您可能仍然会用完内存。当您运行大量样本并且有一个侦听器为每个样本收集数据时(例如侦听器->在树中查看结果),可能会发生这种情况。删除这种(结果)侦听器,并专注于汇总结果侦听器(例如 Listener-> Summary Report )。即使对于较大的压力测试,这也会占用更少的堆空间。