2013-12-18 267 views
13

当尝试使用50个或更多用户的身份运行JMeter的它给人的OutOfMemoryError:JMeter测试失败

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! 

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

+2

它是GUI模式或不?你有多少个听众?看看这些提示http://jmeter.apache.org/usermanual/best-practices.html#lean_mean – olyv

回答

34

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

中有jmeter.batjmeter.sh脚本中的线,建议发起的JMeter作为

JVM_ARGS="-Xms512m -Xmx512m" jmeter.sh 

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

还要考虑JMeter Performance and Tuning Tips article以确保您禁用占用内存的听众,不overscript,有效地利用后处理器等

9

增加后,在bat文件堆大小删除所有监听器测试计划,然后运行你的脚本,看看magic.Now你不会得到out of memory error in jmeter 享受!

+0

不错的选择,听众需要大量的内存+1。 – Chetan

0

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

0

打开斌/ jmeter.bat在Windows或Linux上斌/ jmeter.sh, 找到这一行:

set HEAP=-Xms512m -Xmx512m 

这个变量作为自变量在启动JMeter的传递。 增加默认堆大小是这样的:

set HEAP=-Xms1024m -Xmx1024m 

,如果您有可用,如果JMeter的需要更多你可以添加更多的空间。 希望有所帮助。

0

可以有,为什么JMeter是消耗大量内存的原因有很多:

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

扭捏堆仅仅是一个办法来解决这些问题:

JVM_ARGS="-Xms512m -Xmx512m" jmeter.sh

甚至更​​多有价值的提示退房JMeter Out Of Memory: 12 Ways to Fix Them。在Jmeter 3.x中的

0

。有两个步骤来解决这个问题。

步骤1,修改JMeter的批处理文件

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

这是在jmeter.sh默认值JVM内存,根据您的环境:

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