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