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.bat
或jmeter.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种修复方法, 获取更多有价值的提示 。