WebLogic Server 關鍵優化指標

昨天給客戶作巡檢,又將整個WebLogic Server的優化過程走了一遍,記錄下來給你們參考。前端

1.JVM優化java

查看web

$ps –ef | grep java數據庫

/opt/java1.5/bin/java -server -Xms256m -Xmx512m -XX:PermSize=16M緩存

-XX:NewSize=128m -XX:MaxPermSize=256m …服務器

 

參數設置原則多線程

  • 保持簡單性
  • 提供基本參數(-X 參數)-Xms、-Xmx、-Xmn
  • 選擇一個 GC/性能優先級,權衡吞吐量與暫停時間
  • 其他參數大多使用默認值,(讓人體工程機制計算正確值,僅當默認值無效時調優)
 
  • 年輕代的大小將決定
    • 次要 GC 的頻率
    • 次要 GC 收回的對象數量
  • 年老代大小
    • 應達到應用程序穩定狀態的 實時數據大小
    • 嘗試最大限度減少主要 GC 的頻率
  • JVM 內存佔用不該超過物理內存
    • 最大達到 RAM 的 80-90%(爲操做系統留出空間)
  • 經驗法則:應儘可能增長年輕代收回的對象。儘可能增長完整 GC 頻繁
 
 
  • Set –Xmx = –Xms
    • 防止堆大小 (Full GC) 從 Xms 增大到 Xmx
    • 性能更優
    • 並不是老是生產可用性的最佳選擇(OOME 更合適使用內存交換)
  • 持久代大小
    • -XX:PermSize = -XX:MaxPermSize
    • 持久代佔用空間大小難以預測
    • 設置足夠高以防止 PermGen OOME
  • 將 -XX:NewSize 設置爲 -XX:MaxNewSize
    • 優先使用 –Xmn
 

設置dom

通常來講在64位系統中開到4G-8G,若是有多租戶的規劃,能夠開到更大,修改setDomainEnv.shjvm

也能夠根據受管Server的名字設置不一樣的JVM,具體設置在USER_MEM_ARGS參數前性能

############# change jvm #########################

if [ "${SERVER_NAME}" = "" ] ; then

        SERVER_NAME="AdminServer"

        export SERVER_NAME

fi

if [ "${SERVER_NAME}" = "AdminServer" ] ; then

  USER_MEM_ARGS="-Xms512m -Xmx1024m -XX:MaxPermSize=512m"

else

  USER_MEM_ARGS="-Xms4g -Xmx4g -XX:MaxPermSize=1024m"

fi

 

############# e n d #########################

 

JVM GC文件輸出設置

若是須要分析JVM GC日誌,須要在啓動時加入參數

Sun:-verbose:gc -XX:+PrintGCDetails -Xloggc:<filename>

IBM:-Xverbosegc:file=filename 或 -Xverbosegclog:filename

HP :-Xverbosegc=filename

Oracle JRockit:-Xverbose:memory -XverboseLog:filename

 

隨後能夠經過GCViewer進行脫機的日誌查看。

 

 

 

2.關於線程

WebLogic Server在9之後引入了work manager機制,所以weblogic會自動對線程的數目進行優化,開發模式下初始線程數爲15,生產模式下初始線程數爲25

目前WebLogic Server採用自優化的策略來進行線程的自動擴展,通常情況下不須要對線程進行專門的優化,若是在壓力測試環境中有必要,能夠設置最小線程數和最多線程數,具體設置方法以下:
修改weblogic\user_projects\domains\base_domain\bin下的setDomainEnv.sh中在JAVA_OPTIONS中添加以下:

JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=1000"

 

export JAVA_OPTIONS

  

通常線程數建議設置成100-500之間,線程太多容易引發進程內部的線程切換.

 

3.Accept BackLog

WebLogic 使用Accept Backlog (TCP queue)參數規定WebLogic向系統請求的queue的大小, Accept Backlog屬性決定了在 waiting queue(listening queue)中最多能夠有多少TCP鏈接等待處理,預設值爲300
若是在許多client鏈接被拒絕,而在服務器端沒有錯誤顯示,說明該值設得太低
若是鏈接時收到了」connection refused」消息,能夠適當增大weblogic.system.acceptBacklog的值,每次增長25% ,配置以下:

服務器->配置->優化->接受積壓

 

4.Muxer優化

Muxer定位:在前端接入請求,而後轉交執行隊列

WebLogic Server採用3種Muxer機制
  • Java Muxer
  • Native Muxer
  • Non-Blocking IO Muxer
始終驗證 WebLogic 正在使用 NativeIO。如下消息指示其正在使用中
<Aug 7, 2012 8:32:10 AM CDT> <Info> <Socket> <BEA-000446> <Native IO Enabled.>
從 32 位 JVM 切換至 64 位 JVM 時需格外注意。32 位 WebLogic Server 下載文件不含套接字合成器所需的 64 位本地庫。

若是沒法使用NativeIO(或者不溝取),Java Muxer設置 缺省33%,最高50%,這都是指的佔用線程的比例關係,
也能夠設置合成器線程數量限制:  -Dweblogic.SocketReaders=4
 
傳統方式下只有一個Muxer,Non-Blocking IO Muxer是在Exalogic上採用,缺省會啓動3個Muxer.
 

 5.JDBC優化

 

建立 DB 鏈接是一個很是耗時的過程
  • 理想狀況下,設置爲最小值 = 最大值,以免按需建立鏈接
  • 若是 DB 鏈接數受限,請將最小值設置爲處理普通負載所需的鏈接數,將最大值設置爲處理峯值負載所需的鏈接數,並啓用池收縮
在控制檯中監視數據源統計數據
  • Active Connections High Count
  • Waiting on Connection High Count
  • Wait Seconds High Count

緩存主要設置語句的條數,缺省爲10,建議調大,設置成300

 

Connection Creation Retry Seconds(默認值 = 0)
  • 若是某數據源的數據庫不可用,那麼此選項設置爲默認值 0 時 WLS 將沒法啓動!
  • 設置爲非零值可以讓服務器順利啓動並按期重試建立鏈接池
Seconds to Trust Idle Pool Connection(默認值 = 10 秒)
  • 與 Test Connections On Reserve 共同發揮做用
  • 可顯著減小鏈接測試查詢
請考慮 LLR for JTA 事務
  • 僅有利於涉及多種資源的 XA 事務
  • Last Logging Resource(非 XA)必須是數據庫
相關文章
相關標籤/搜索