jmeter.bat配置(主要关于OOM)
jmeter.bat是jmeter在windows系统下的启动文件。在使用jmeter压测,线程数设置过多时可能会报内存溢出(Out Of Memory Error),这时候可以去尝试调整一下jmeter.bat文件里面默认的配置。
注:我使用的jmeter版本是3.2,有时候在Q群看到有人问安装一个插件之后为什么报错,这时候需要注意是不是版本兼容性问题,很多插件都比jmeter版本滞后了。
1、堆值(Heap)
一般来说,堆值Heap最多设置为物理内存的一半,默认为512M。如果此值超过物理内存的一半,jmeter运行速度会变慢,甚至会出现“内存溢出”错误。(Xms、Xmx的含义看下面)
我设置的为【set HEAP=-Xms256m -Xmx1024m】。说明:jdk32位的电脑Xmx不能超过1400,最高为1378。
----------------------------------------------------------分割线---------------------------------------------------------------
如果服务器端报错“内存溢出”,进入Tomcat,修改JVM的maxheapmemory。在%CATALINA_HOME%\bin目录下,catalina.bat文件:echo Using CATALINA_BASE: %CATALINA_BASE%之前,加上:
set JAVA_OPTS=%JAVA_OPTS% -server –Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=512M
参数说明:
Xms:Tomcat中JVM内存初始设置参数,默认为512M;
Xmx:Tomcat中JVM内存最大设置参数,默认为512M;
-XX:PermSize=256M
设置永久域(非堆内存)的初始值,默认是物理内存的1/64, 建议不要超过256M;
-XX:MaxPermSize=512M
设置永久域的最大值,默认是物理内存的1/4,建议修改为512M;
----------------------------------------------------------------------------------------------------------------------------------
2、GC相关设置
这个是JVM中GC算法的一个相关设置,其中:
1)MaxGCPauseMillis:每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。(此参数请谨慎使用!)
2)G1ReservePercent:使用g1收集器时设置的保留java堆大小,防止JVM在回收存活或者晋升对象的时候,栈区域溢出发生失败。范围是0到50,默认是10%。
3、发生OOM时,生成分析文件
在发生OOM时dump出当前的内存转储快照,生成dump文件(可用mat分析),默认存储在jvm运行环境目录。后面也可以添加参数-XX:HeapDumpPath=/path/heap/dump,说明dump文件存储的路径。