2013-12-18 70 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