weblogic内存调整说明
2021-06-21 06:03
一:WebLogic配置问题:
由于WebLogic的配置问题,我们的测试出现了失败情况。原因是为WebLogic分配的内存太少了。通过修改commom\bin\commEnv.cmd文件来增加内存分配。
修改的部分如下:
:bea
if "%PRODUCTION_MODE%" == "true" goto bea_prod_mode
set JAVA_VM=-jrockit
set MEM_ARGS=-Xms768m -Xmx1024m
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none
goto continue
:bea_prod_mode
set JAVA_VM=-jrockit
set MEM_ARGS=-Xms768m -Xmx1024m//原来是128M~256M,太小了,数据太大
goto continue
结果修改后,没有效果。还是有失败的情况。
发现,原来,在:bea下面还有一段配置信息如下:
:sun
if "%PRODUCTION_MODE%" == "true" goto sun_prod_mode
set JAVA_VM=-client
set MEM_ARGS=-Xms768m -Xmx1024m -XX:MaxPermSize=256m
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none
goto continue
:sun_prod_mode
set JAVA_VM=-server
set MEM_ARGS=-Xms768m -Xmx1024m -XX:MaxPermSize=256m
goto continue
将这里的内存分配修改后见效。
原因是,上面对第一段代码是为bea自己的JVM设置的,下面的是为Sun的设置的。而WebLogic默认的是Sun的,所以出了毛病。
经试验,第二点并无效果!!!!
二、weblogic的优化:
weblogic服务器主要从内存方面着手考虑,weblogic起动时首先启动一个jvm虚拟机,这个jvm虚拟机占用的内存大小也是weblogic
占用的内存大小,在没有其他应用程序的情况下,最多可以为jvm虚拟机分配80%的系统内存(2G以下越大越好);另外一个就是垃圾回收的问题,应用程序中所有的active和dead进程都存在于jvm中,如果当其占用内存大于jvm的内存时,系统这时候会暂时停掉所有java应用,启动一个垃圾回收动作,当然,这段时间越短越好。
因此,一般设置垃圾回收所占用的内存为jvm内存大小的1/4,这样,一次垃圾回收最长会在10-20秒的时间内结束。(jvm设的越大,每次垃圾回收(garbage
collection)间隔越长,但每次持续时间越长)。jvm内存大小在startweblogic.cmd/startweblogic.sh内设置。在其中会发现一段:
%JAVA_HOME%\bin\java%JAVA_VM%%MEM_ARGS%%JAVA_OPTIONS%
-Dweblogic.Name=%SERVER_NAME%
-Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE%
-Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy"
weblogic.Server
这即为系统启用jvm的命令,其中%MEM_ARGS%就是设置内存的参数变量,在这一行前面加上一句:set
MEM_ARGS=-Xms150m -Xmx256m
,Xms和Xmx指定的值就是jvm占用内存的界定,但是一般情况下两者应设为相等。设置垃圾回收gc的内存参数如下(但是经过验证仍有一些问题,,须进一步研究)
官方文档:-XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=8。