標籤:官方文檔 vm虛擬機器 java應用 記憶體 uri option ati 命令 web
一: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設的越大,每次記憶體回收(garbagecollection)間隔越長,但每次期間越長)。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%就是設定記憶體的參數變數,在這一行前面加上一句:setMEM_ARGS=-Xms150m -Xmx256m,Xms和Xmx指定的值就是jvm佔用記憶體的界定,但是一般情況下兩者應設為相等。設定記憶體回收gc的記憶體參數如下(但是經過驗證仍有一些問題,,須進一步研究)官方文檔:-XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=8。
weblogic記憶體調整說明