jmeter內存溢出的解決方法

 

 

1、在壓測過程當中jmeter報內存溢出,可能的緣由有不少。要注意下面三點:

一、單擊壓測過程當中使用過多的線程,官網建議1000-2000。具體看機器的配置和啓動應用的狀況。(A single JMeter client running on a 2-3 GHz CPU (recent CPU) can handle 1000-2000 threads depending on the type of test.)html

(官網:http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html)java

二、監聽器裏面配置寫入到文件,不寫入到文件的話所用監聽結果存放在內存。還要注意不要使用「察看結果樹」監聽器。apache

三、運行壓測過程當中使用no-gui模式,不要使用界面壓測,使用jmeter -n -t這樣的命令去運行。


app

2、解決方法

在咱們測試的過程當中,線程數過多時經常會致使內存溢出,接下來小編爲你們提供內存溢出的解決方法:測試

1.在jmeter的bin目錄下面找到jmeter.properties文件,以記事本形式打開進行編輯ui

2.在文件中找到如下字段進行修改spa

Windows環境下面進行修改線程

htm

set HEAP =-Xms256m -Xmx256mblog

set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m

改爲

 

set HEAP =-Xms256m -Xmx1024m

set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

友情提示:

heap最多設置爲物理內存的一半,默認設置爲512M.若是heap超過物理內存的一半,可能運行jmeter會慢,甚至出現內存溢出,緣由java比較吃內存,佔CPU。

另外注意:JDK32位的電腦Xmx不能超過1500m,最大1378m.不然在啓動Jmeter時會出現下面的報錯

 

 

下面介紹下在Linux系統上面如何進行修改:

Linux環境上面修改jmeter (不用jmeter.sh)

1.方法1:

在jmeter文件開頭加上

JAVA_HOME=/apps/jdk1.8.0_121  #若是須要指定java版本能夠,可使用加上
JVM_ARGS="$JVM_ARGS -Xms2G -Xmx10G -XX:MaxPermSize=4096m"

方法2:

替換jmeter文件的最後一句話爲:

java $JVM_ARGS -Xms2G -Xmx10G -XX:MaxPermSize=512m  -jar `dirname $0`/ApacheJMeter.jar "$@"

 若是是 jdk8+,去掉-XX:MaxPermSize=512m參數, 這個參數jdk7如下支持

若是查看JDK的位數
# java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)

若是是64位的話,最後一行會顯示64-Bit
#java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

 3、內存泄露和內存溢出的概念

內存泄露是指你的應用使用資源以後沒有及時釋放,致使應用內存中持有了不須要的資源,這是一種狀態描述;

內存溢出是指你應用的內存已經不能知足正常使用了,堆棧已經達到系統設置的最大值,進而致使崩潰,這事一種結果描述;

一般都是因爲內存泄露致使堆棧內存不斷增大,從而引起內存溢出。

在利用jmeter測試過程當中,若是內存溢出的話,通常會出現這個提示:java.lang.OutOfMemoryError: Java heap space:意思就是堆內存溢出,不夠用了。

相關文章
相關標籤/搜索