首页 > 代码库 > weblogic内存调整说明

weblogic内存调整说明


一: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。

weblogic内存调整说明