http://www.360doc.com/content/14/0306/14/16134804_358216319.shtml
一、WebLogic內存溢出
最近訪問量門戶訪問量突然增大,總是內存溢出,頻繁宕機,調整了很多參數沒起作用,偶然發現Weblogic域在不斷增大,罪魁禍首竟然是Weblogic的診斷文件,也是造成Weblogic內存溢出的主要原因。當Weblogic啟動時就加載了每個Server上的診斷文件,占用了大部分內存分配,用戶訪問量越大這個文件也隨之越大,將他刪除后重新啟動服務,八個Server竟然也只用了6分鍾,部署項目也只需7,8分鍾,一直平穩運行,再無內存溢出現象。
該文件地址:/bea/user_projects/domains/{domain_name}/servers/{Server_name}/data/store/diagnostics/*.DAT
(注:AdminServer下該診斷文件為1M左右正常)
但是該文件還會繼續生成增大,我們的域中並沒有配置相關啟動診斷文件的設置,Bea售后也無法解釋,但可以通過嘗試增加啟動參數(-Dcom.bea.wlw.netui.disableInstrumentation=true
)來控制該診斷文件的增長,在/bea/user_projects/domains/{domain_name}/bin/startWebLogic.sh中:
if [ "${WLS_REDIRECT_LOG}" = "" ] ; then
echo "Starting WLS with line:"
echo "${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dcom.bea.wlw.netui.disableInstrumentation=true -Dweblogic.Name=${SERVER_NAME} -Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${PROXY_SETTINGS} ${SERVER_CLASS}"
${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dcom.bea.wlw.netui.disableInstrumentation=true -Dweblogic.Name=${SERVER_NAME} -Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${PROXY_SETTINGS} ${SERVER_CLASS}
else
echo "Redirecting output from WLS window to ${WLS_REDIRECT_LOG}"
${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dcom.bea.wlw.netui.disableInstrumentation=true -Dweblogic.Name=${SERVER_NAME} -Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${PROXY_SETTINGS} ${SERVER_CLASS} >"${WLS_REDIRECT_LOG}" 2>&1
該參數控制netui的診斷文件的生成。
同時,可以在/bea/user_projects/domains/{domain_name}/bin/setDomainEnv.sh中設置GC日志的打印參數分析:
MEM_ARGS=”-Xms2048m –Xmx2048m –verbosegclog:gc.log”
Export MEM_ARGS
該參數會在/bea/user_projects/domains/{domain_name}/下輸出gc.lgo
二、Portal Domain 調整
Domain目錄/bin/setDomainEnv中,如下參數:
標志 |
生產模式設置 |
說明 |
DOMAIN_PRODUCTION_MODE |
true |
該參數決定Domain是否在生產環境下運行,可以在創建Domain時選擇運行模式,也可以手工調整這個參數 |
IterativeDevFlag |
false |
是否自動編譯 |
DebugFalg |
false |
是否啟用調試器 |
TestConsoleFlag |
False |
支持JMS測試工具 |
LogErrorsToConsoleFlag |
False |
是否向屏幕輸出error日志 |
verboseLogginFlag |
False |
是否輸出Debug日志 |
PointbaseFlag |
False |
是否自動啟動Pointbase |
三、Weblogic 常用參數配置
序號 |
項目 |
內容 |
描述 |
參考值 |
附圖 |
1 |
Domain> Environment> Cluster> General> |
Default Load Algorithm: |
設置集群負載均衡策略 |
Round-robin:循環 Weight-based:權重(配置此種策略要針對沒各Server配置想用的權重,見2) Random:隨機 Round-robin-affinity/ Weight-based-affinity/ Random-affinity這三個參數針對硬件做前端負載均衡設置 |
圖一 |
2 |
Domain> Environment> Servers> ManagedServer> Cluster> |
Cluster Weight: |
設置 每個Managed Server的分發權重 |
默認100,設置占100的百分比 |
圖二 |
3 |
Domain> Environment> Servers> Server> Logging> |
Stdout Serverity Threshold: |
記錄日志的級別 |
Error |
圖三 |
|
|
Rotation Type: Minimum File Size |
日志滾動的類型 產生新日志文件大小 |
By Size 5000k
|
|
|
|
Limit number of retained files Log Files To Retain:[n] |
限制保留的日志文件數
要保留的日志文件個數 |
選擇
10 |
|
4 |
Domain> Connection Pools> Configuration> Connections |
Initial Capacity: Maximum Capacity: |
設置初始容量 最大容量 |
建議初始容量和最大容量設置成相等值,並要考慮並發訪問數據庫的線程數來調整參數 |
|
5 |
Domain> Connection Pools> Configuration> Connections |
URL |
集群數據庫URL設置方法 |
例如:jdbc:oracle:thin:@ (description= (address_list=(address=(host=scdb1_vip) (protocol=tcp)(port=1521)) (address=(host=scdb2_vip) (protocol=tcp)(port=1521)) (load_balance=yes) (failover=yes)) (connect_data=(service_name=scdb))) |
|
Weblogic.xml中的參數:
集群環境部署參數(集群單機環境都可用):
replicated_if_clustered
true
自動編譯檢測時間
60
60
三、集群項目部署報錯及解決
集群環境項目部署,總會出現版本不一致,造成的部署失敗或部署非常慢,部署報錯信息:
Failure occured in the execution of deployment request with ID '116857440499' for task '2'.
Error is: 'weblogic.management.DeploymentException: J2EE:160149Error while processing library references.
Unresolved application library references, defined in weblogic-application.xml:
Extension-Name: beehive-controls-1.0, Specification-Version: 1, Implementation-Version: 1.0, exact-match: false,
Extension-Name: weblogic-controls-1.0, Specification-Version: 1, Implementation-Version: 1.0, exact-match: false,
Extension-Name: wls-commonslogging-bridge, Specification-Version: 1, Implementation-Version: 1.0, exact-match: false.'
weblogic.management.DeploymentException: J2EE:160149Error while processing library references.
Unresolved application library references, defined in weblogic-application.xml:
Extension-Name: beehive-controls-1.0, Specification-Version: 1, Implementation-Version: 1.0, exact-match: false,
Extension-Name: weblogic-controls-1.0, Specification-Version: 1, Implementation-Version: 1.0, exact-match: false,
Extension-Name: wls-commonslogging-bridge, Specification-Version: 1, Implementation-Version: 1.0, exact-match: false.
......
解決辦法:
將weblogic上所有的類庫不僅發不到Cluster中還要同時發布到AdminServer上,改變所有類庫的Target,如圖