引自:
http://www.zebcn.com/html/200603/474.html創(chuàng)建 WebLogic 配置/域
域是一組邏輯上相關(guān)的WebLogic Server資源,您可以把它當(dāng)作單個管理單元進(jìn)行管理。域?qū)⑺械馁Y源和應(yīng)用程序信息保存在一個基于XML的配置庫中。為了在WebLogic Server上部署并運(yùn)行應(yīng)用程序,首先要創(chuàng)建域。
?
推薦使用域配置向?qū)ё鳛閯?chuàng)建新域的工具。如果您準(zhǔn)備編寫腳本來創(chuàng)建域,推薦使用slient模式的域配置向?qū)н@個工具。也可以從所提供的“開箱即用”的域模板或定制的域模板來創(chuàng)建WebLogic Server域。
?
為了創(chuàng)建定制的域模板,請使用配置模板生成器,它是一個單機(jī)的Java應(yīng)用程序,能夠讓您創(chuàng)建定制的配置和擴(kuò)展。您可以使用這些配置和擴(kuò)展來創(chuàng)建和更新域。
域配置向?qū)Ь哂幸韵聦傩裕?/span>
·?? 向?qū)龑?dǎo)您完成針對目標(biāo)環(huán)境創(chuàng)建或擴(kuò)展域的過程。
·?? 向?qū)Э梢允褂?/span>OOB預(yù)定義的域模板或定制域模板創(chuàng)建或擴(kuò)展域。
·?? 向?qū)?chuàng)建config.xml 文件,建立基本的安全性,構(gòu)造啟動腳本,等等。
·?? 可以使用graphical、console 或 silent模式啟動向?qū)А?/span>
要以graphical模式啟動向?qū)В堖\(yùn)行以下命令之一:

域配置模板生成器具有以下屬性:?
·?? 向?qū)龑?dǎo)您完成創(chuàng)建或擴(kuò)展配置模板 (JAR file) 的過程。
·?? 配置向?qū)Э梢允褂靡褎?chuàng)建的配置(域)模板來創(chuàng)建域。
只能以graphical模式啟動配置模板生成器。
要啟動配置模板生成器,請運(yùn)行以下命令之一:

技巧
·?? 如果 WebLogic Domain/Configuration 分布在多臺物理機(jī)器上,那么應(yīng)該只能在管理服務(wù)器硬件(機(jī)器)上運(yùn)行域配置向?qū)А?/span>
·?? 并不要求一定在托管服務(wù)器硬件上運(yùn)行域配置向?qū)А?/span>?
·?? 在WebLogic Server 安裝目錄之外創(chuàng)建WebLogic域 (默認(rèn)情況下,所創(chuàng)建的域位于%BEA_HOME%Ser_projectsdomains ) 。
·?? 為管理服務(wù)器創(chuàng)建啟動腳本時(shí),如果腳本(startWebLogic.cmd/sh)沒有調(diào)用域目錄中的weblogic.Server 類,使用這個命令行選項(xiàng)來指定域的位置:-Dweblogic.RootDirectory=path。
·?? 啟動托管服務(wù)器(startManagedWebLogic.cmd/sh)時(shí),如果進(jìn)行設(shè)置的話, -Dweblogic.RootDirectory 將被設(shè)置為服務(wù)器根目錄,該目錄將被用于存儲文件,比如日志文件和托管服務(wù)器獨(dú)立(managed-server independence ,MSI)文件。
服務(wù)器啟動
?
管理服務(wù)器從配置庫(config.xml)加載所有配置。所有相關(guān)的托管服務(wù)器必須在啟動期間連接到運(yùn)行中的管理服務(wù)器。獨(dú)立的托管服務(wù)器可以從本地庫(msi-config.xml)加載配置。
?
如果WebLogic運(yùn)行在裝有Unix操作系統(tǒng)的計(jì)算機(jī)上,您可以為WebLogic Server進(jìn)程分配一個UID或GID,以便在計(jì)算機(jī)執(zhí)行所有優(yōu)先的啟動操作之后,以root用戶的身份進(jìn)行綁定。如果WebLogic Server用戶想要綁定到更高的端口(>1024),則無需root權(quán)限。
技巧
編寫使服務(wù)器啟動自動化的腳本時(shí),考慮以下因素:
·?? 在域中,必須在任何相關(guān)托管服務(wù)器之前啟動管理服務(wù)器。
·?? 當(dāng)把托管服務(wù)器作為相關(guān)服務(wù)器啟動時(shí),它連接到管理服務(wù)器,以便下載配置。
·?? 當(dāng)把托管服務(wù)器作為獨(dú)立服務(wù)器啟動時(shí),檢查msi-config.xml 文件是否被存儲在服務(wù)器根目錄中。
·?? 在Unix中,使用'nohup' 運(yùn)行 WebLogic Server啟動腳本,以保證即使您注銷以后,服務(wù)器依然在后臺運(yùn)行。
·?? 在OS中,為安裝和啟動服務(wù)器創(chuàng)建一個WebLogic Server用戶。
·?? 存儲加密后的用戶身份,使用boot.properties文件來避免啟動腳本中出現(xiàn)硬編碼的用戶身份。
·?? 當(dāng)把服務(wù)器綁定到較低端口(<1024)時(shí)(這需要root權(quán)限),使用 WebLogic UNIX機(jī)器配置來綁定UID 或 GID 。
·?? 為了使WebLogic域中的管理服務(wù)器在機(jī)器重啟期間能夠自動重啟,使用操作系統(tǒng)提供的daemon進(jìn)程功能。
o?????????????? Windows 服務(wù)
o?????????????? UNIX daemon 進(jìn)程
·?? 當(dāng)您使用域配置向?qū)?chuàng)建域時(shí),域中的管理服務(wù)器可以被當(dāng)成服務(wù)。
·?? 此外,可以使用位于域文件夾中的installservice.cmd和 uninstallservice.cmd 腳本在Windows Service Control Manager (SCM)中添加或刪除服務(wù)。
·?? 如果管理服務(wù)器和托管服務(wù)器是同一臺機(jī)器,配置管理服務(wù)器進(jìn)程和托管服務(wù)器進(jìn)程之間的OS級服務(wù)相關(guān)性。
·?? 配置rc腳本,以便在正確的運(yùn)行級別上添加WebLogic 啟動命令。
啟動和關(guān)機(jī)類
可以把WebLogic Server配置為在啟動和正常關(guān)機(jī)過程中調(diào)用類。在服務(wù)器初始化所有子系統(tǒng)之后和它給客戶端訪問開放端口之前,加載并執(zhí)行啟動類。類似地,在服務(wù)器啟動正常關(guān)機(jī)進(jìn)程之前加載關(guān)機(jī)類。和應(yīng)用程序文件不同,必須手動地使啟動和關(guān)機(jī)類在已部署服務(wù)器地本地classpath中可用。
技巧
·?? 在啟動期間,使服務(wù)器級的啟動類在已部署WebLogic Server實(shí)例的系統(tǒng)classpath 中可用。
·?? 域中的管理服務(wù)器到托管服務(wù)器都不能自動部署出現(xiàn)在系統(tǒng)classpath中的類;應(yīng)用程序級別的類可以分布在域中的管理服務(wù)器到目標(biāo)服務(wù)器上。
·?? 重新部署應(yīng)用程序時(shí),就會重新加載應(yīng)用程序級別的啟動類。
·?? 不能動態(tài)地重新加載服務(wù)器級別的啟動類;只能在它們各自的WebLogic Server重新啟動時(shí)重新加載它們。
·?? 使用應(yīng)用程序級別的啟動類,而不要定義服務(wù)器級別的啟動類。
節(jié)點(diǎn)管理器
使用WebLogic Server提供的節(jié)點(diǎn)管理器功能自動啟動托管服務(wù)器,或者重新啟動出現(xiàn)故障的托管服務(wù)器。節(jié)點(diǎn)管理器使管理員可以從管理服務(wù)器或命令行(weblogic.Admin START…)遠(yuǎn)程啟動托管服務(wù)器。這可以通過與管理服務(wù)器通信來實(shí)現(xiàn),而不用依賴OS特定的遠(yuǎn)程登錄功能。
?
此外,除了啟動和關(guān)閉托管服務(wù)器之外,節(jié)點(diǎn)管理器還能夠監(jiān)控它所啟動的服務(wù)器的健康狀況。如果進(jìn)行恰當(dāng)?shù)呐渲茫诔霈F(xiàn)故障時(shí),節(jié)點(diǎn)管理器能夠自動重新啟動托管服務(wù)器。
技巧
·?? 使用節(jié)點(diǎn)管理器時(shí),顯式地配置所托管服務(wù)器的有遠(yuǎn)程啟動屬性,而不要依靠節(jié)點(diǎn)管理器為托管服務(wù)器的配置提供的環(huán)境。
·?? 節(jié)點(diǎn)管理器只接收來自管理服務(wù)器的請求。管理服務(wù)器不可用時(shí),想要通過節(jié)點(diǎn)管理器遠(yuǎn)程地重新啟動托管服務(wù)器是不可能的。
·?? 把節(jié)點(diǎn)管理器配置為一個服務(wù)/ daemon。
·?? 啟用托管服務(wù)器的自動重啟。
·?? 配置機(jī)器在出現(xiàn)故障時(shí)自動關(guān)閉,以便在節(jié)點(diǎn)管理器嘗試重新啟動一個出現(xiàn)故障的實(shí)例之前關(guān)閉它。
·?? 運(yùn)行在一臺機(jī)器上的節(jié)點(diǎn)管理器可以被運(yùn)行在該機(jī)器上的多臺托管服務(wù)器所共享。
·?? 節(jié)點(diǎn)管理器還可以被運(yùn)行在同一臺機(jī)器上的多個域中的托管服務(wù)器所共享。
WebLogic Server 關(guān)閉過程
異常的JVM終止可以導(dǎo)致套接字或程序段這樣的資源被鎖定。在操作系統(tǒng)中關(guān)閉或終止WebLogic Server進(jìn)程被認(rèn)為是異常終止。
可以通過以下方式正常關(guān)閉WebLogic Server:
·?? 使用管理控制臺'Graceful Shutdown" 超鏈接。
·?? 使用 weblogic.Admin SHUTDOWN… 命令。
·?? 使用JMX,具體是調(diào)用 ServerMBean 類的stop方法。
技巧
·?? 為了正常關(guān)閉生產(chǎn)服務(wù)器,需要使用WebLogic 管理控制臺或者weblogic.Admin 實(shí)用程序。
·?? 正常關(guān)機(jī)不會異常終止用戶會話;它等待HTTP會話完成或超時(shí)。
·?? 也可以把WebLogic Server配置為不等待(忽略Session During Shutdown 選項(xiàng))。
·?? 正常關(guān)機(jī)超時(shí)是可配置的;默認(rèn)情況下,服務(wù)器將會無限期地等待關(guān)機(jī)過程完成。
·?? 如果服務(wù)器沒有響應(yīng)正常關(guān)機(jī)請求,或者當(dāng)服務(wù)器等待正在進(jìn)行的會話時(shí)(處于待機(jī)狀態(tài))關(guān)閉服務(wù)器,使用'Force Shutdown' 選項(xiàng)。
·?? 如果被配置為daemon,確保將rc腳本中的stop方法配置為在機(jī)器重啟和停止時(shí)正常關(guān)閉服務(wù)器。
·?? 如果對節(jié)點(diǎn)管理器進(jìn)行配置,終止節(jié)點(diǎn)管理器將不會停止由它們啟動的相應(yīng)服務(wù)器。必須單獨(dú)地停止各臺托管服務(wù)器。
備份和恢復(fù)
為了在出現(xiàn)故障時(shí)遷移或恢復(fù)WebLogic域,定期備份管理服務(wù)器機(jī)器上的整個域目錄樹。這樣,您就可以從硬件或系統(tǒng)故障中恢復(fù),而要做的不過是還原域目錄并重新啟動管理服務(wù)器。
?
如果管理服務(wù)器崩潰,管理服務(wù)器將會把所有正在運(yùn)行的托管服務(wù)器的相關(guān)信息保留在running-managed-servers.xml文件中。重新啟動時(shí),管理服務(wù)器將會讀取這個文件,并嘗試聯(lián)系所有以前運(yùn)行的托管服務(wù)器。如果沒有托管服務(wù)器正在運(yùn)行的話,discovery模式可能會增加管理服務(wù)器的啟動時(shí)間,但是始終要使用discovery模式(默認(rèn)情況下它是打開的),這樣才能保證有托管服務(wù)器已經(jīng)運(yùn)行的情況下,管理服務(wù)器重新與所有托管服務(wù)器連接。
一些需要引起注意/定期從管理服務(wù)器機(jī)器上進(jìn)行備份的重要文件有:
·?? config.xml
域配置庫。
·?? config.xml.booted
成功啟動時(shí)對域配置庫的良好備份。
·?? boot.properties
啟動管理服務(wù)器時(shí)需要的加密后的用戶名和密碼。
·?? running-managed-servers.xml
這是當(dāng)前正在運(yùn)行的相關(guān)托管服務(wù)器的一個列表。這個文件用于當(dāng)管理服務(wù)器重新啟動后,而且有托管服務(wù)器正在運(yùn)行時(shí),發(fā)現(xiàn)托管服務(wù)器。
·?? domain/configArchive/
包含域配置庫文件的拷貝。使用管理工具進(jìn)行更新時(shí),管理服務(wù)器把舊的config.xml 文件復(fù)制到這個目錄。
·?? domaindminserverdapdapfiles
當(dāng)前被域的管理服務(wù)器使用的內(nèi)嵌LDAP 數(shù)據(jù)文件。
·?? *.ldift 文件
這些文件可以用于把WebLogic Domain Embedded LDAP 服務(wù)器初始化為剛剛創(chuàng)建域時(shí)的樣子。
·?? domain/adminserver/ldap/backup/EmbeddedLDAPBackup.zip
WebLogic Domain Embedded LDAP 服務(wù)器的備份。內(nèi)嵌的LDAP被用于存儲用戶、組、角色、默認(rèn)的安全領(lǐng)域使用的策略、myrealm的安全提供程序。
·?? Batch/Shell 腳本
setEnv.cmd/sh, startWebLogic.cmd/sh, startManagedWebLogic.cmd/sh。
?為管理任務(wù)編寫腳本
為了創(chuàng)建用于管理域配置的腳本:
·?? 使用weblogic.Admin實(shí)用程序命令BATCHUPDATE,它運(yùn)行一個批處理文件中指定的一系列命令。這個命令使用一個JVM運(yùn)行所有列出的命令。
·?? -Dweblogic.system.BootIdentityFile選項(xiàng)讓您可以避免把用戶名和密碼硬編碼在您的文本腳本中。
·?? 為了在操作系統(tǒng)腳本中構(gòu)建邏輯分支,使用下面的命令求出weblogic.Admin命令的返回代碼:
o?????????????? %ERRORLEVEL% (Windows)
o?????????????? 0 (bash shell)
·?? ?weblogic.Admin 的-adminurl 選項(xiàng)從管理服務(wù)器檢索托管服務(wù)器的配置Mbean和運(yùn)行時(shí)Mbean。
·?? 不推薦直接修改config.xml文件。
·?? 如果您必須修改config.xml文件:
o?????????????? 首先,在編輯之前備份原始文件。
o?????????????? 使用XML 編輯器,以避免錄入錯誤。
o?????????????? 當(dāng)管理服務(wù)器正在運(yùn)行時(shí),要避免編輯該文件。
·?? 使用wlconfig Ant任務(wù)來為配置信息編寫腳本,并把它集成到整個構(gòu)建過程中。
·?? 當(dāng)管理服務(wù)器正在運(yùn)行并且處于離線狀態(tài)時(shí),使用 WebLogic Scripting Tool (WLST)來修改域配置。 (dev2dev.bea.com)
·?? WLST提供一個功能強(qiáng)大的到WebLogic Server的shell接口,而且它使用Jython 作為腳本語言。
·?? 您還可以使用第三方的解決方案來管理配置,比如WLShell使用程序。 (www.wlshell.com)
·?? WLShell提供一個功能強(qiáng)大的、Unix風(fēng)格的到WebLogic Server的shell接口;它針對WebLogic Server MBean使用文件系統(tǒng)模擬。
日志記錄
日志記錄了和事件(比如服務(wù)器的啟動和關(guān)閉)、新應(yīng)用程序的部署或者一個或多個子系統(tǒng)故障有關(guān)的信息。日志消息包括和事件的時(shí)間與日期,以及啟動事件用戶的ID有關(guān)的信息。每個WebLogic Server實(shí)例都可以維護(hù)一份服務(wù)器日志、一份HTTP訪問日志、一份JDBC日志和一份JTA事務(wù)日志。
技巧
·?? 為了防止當(dāng)日志文件所占空間過大時(shí),出現(xiàn)相應(yīng)的服務(wù)器重啟的情況,需要啟用日志旋轉(zhuǎn)(log rotation)。
·?? 考慮按照大小旋轉(zhuǎn)日志,而不是按照生成的時(shí)間旋轉(zhuǎn),因?yàn)槭褂蒙蓵r(shí)間這個選項(xiàng)會使文件增長非常迅速。
·?? 如果您沒有進(jìn)行交互式調(diào)試,而且WebLogic Server 是在后臺(Windows 或 Unix)啟動的,使用以下命令把stdout和stderr重定向到一個文件:
o?????????????? -Dweblogic.Stdout="stdout-filename"
o?????????????? -Dweblogic.Stderr="stderr-filename"
·?? 在生產(chǎn)中,如果您不啟用WebLogic Server創(chuàng)建JDBC日志,您就可以避免服務(wù)器上的額外文件I/O。
·?? 使用節(jié)點(diǎn)管理器啟動托管服務(wù)器時(shí),節(jié)點(diǎn)管理器捕捉服務(wù)器的stdout并把它存儲到一個文件中。可以使用管理控制臺來查看該文件的內(nèi)容。
·?? 經(jīng)常檢查WebLogic Server 的日志文件,以熟悉常規(guī)操作,這樣您就能夠很容易地辨認(rèn)出異常的日志項(xiàng)。
JDBC
在WebLogic Server中,使用池緩沖到數(shù)據(jù)庫的JDBC連接可以提高應(yīng)用程序的性能。連接池根除了為每個應(yīng)用程序創(chuàng)建新的數(shù)據(jù)庫連接的需要。JDBC連接池提供到您數(shù)據(jù)庫的現(xiàn)成連接。
?
使用連接池時(shí),到數(shù)據(jù)庫的連接的數(shù)目可以動態(tài)改變。但是,在負(fù)載高峰時(shí)期試圖增加JDBC連接的數(shù)目將會使情況惡化,因?yàn)閯?chuàng)建數(shù)據(jù)庫連接是一項(xiàng)開銷昂貴的操作。
?
連接池還可以通過緩存用于重用的prepared statement和callable statement來提高性能。重用prepared statement和callable statement可以降低數(shù)據(jù)庫服務(wù)器上的CPU利用率。
?
通過把其他應(yīng)用程序分離到單獨(dú)的機(jī)器或硬件上,可以避免耗盡WebLogic Server機(jī)器上的處理能力;為數(shù)據(jù)庫指派一臺專用的機(jī)器。
技巧
·?? 如果有可能,按大小排列數(shù)據(jù)庫連接池,這樣它們就永遠(yuǎn)不會增加連接的數(shù)目;設(shè)置初始容量為最大容量。
·?? 設(shè)置連接池的最大容量至少等于執(zhí)行線程的數(shù)量。
·?? 配置 Inactive Connection Timeout,以指定一個連接在被回收到池中之前,保持非活動狀態(tài)的時(shí)間長短。
·?? Connection Leak Profiling選項(xiàng)顯示了連接池中泄漏的連接。BEA建議您不要在生產(chǎn)中使用這個選項(xiàng);它要使用額外的資源,并且通常會降低連接池操作的速度。
·?? 如果您能夠負(fù)擔(dān)把測試連接作為常規(guī)請求處理一部分所帶來的開銷,您可以只使用Test Reserved Connections 選項(xiàng)。
·?? 避免對“Test Table Name”使用生產(chǎn)表,而要使用啞表(例如Dual)。
·?? 使用語句緩存提高prepared 和 callable statement的性能。
·?? 為緩存選擇 least-recently-used (LRU) 算法;這將從緩存中刪除很少使用的語句。
·?? 當(dāng)創(chuàng)建連接池或者啟動WebLogic Server時(shí),如果數(shù)據(jù)庫不可訪問,可以使用Connection Creation Retry Frequency 重新嘗試建立到數(shù)據(jù)庫的連接。
·?? 當(dāng)WebLogic Server 正在運(yùn)行時(shí),如果重新啟動數(shù)據(jù)庫, Test Frequency可以從0開始增加,這樣所有連接都會被關(guān)閉,然后被重新打開,以重新建立有效的物理連接。在重新創(chuàng)建所有連接之后,將它改回0將禁止測試。
·?? 當(dāng)為連接池使用DataSource對象時(shí),使用 Honors Global Transaction選項(xiàng)來創(chuàng)建TxDataSource。
·?? 您應(yīng)該使用non-Tx DataSource的惟一場合就是當(dāng)您想在數(shù)據(jù)庫上完成一些工作,而又不想把該數(shù)據(jù)庫包括到當(dāng)前事務(wù)中時(shí)。
·?? 當(dāng)配置一個連接池,以便與WebLogic JMS JDBC Store 一起使用時(shí),使用non-XA 數(shù)據(jù)庫驅(qū)動程序。
JMS
WebLogic Server JMS體系結(jié)構(gòu)允許在一個WebLogic域中創(chuàng)建多臺JMS服務(wù)器。但是每臺JMS服務(wù)器只能在一臺WebLogic Server上被實(shí)例化(目標(biāo)化),因?yàn)樗且豁?xiàng)“僅一次”的服務(wù)。一臺JMS服務(wù)器可以作為多個目的地的宿主。永久性存儲(基于磁盤的文件或可通過JDBC訪問的數(shù)據(jù)庫)可以被配置用于存儲永久性的消息數(shù)據(jù)。
?
如果必須跨多個目的地共享一個JMS存儲器,將多個目的地配置為駐留在一臺JMS服務(wù)器上。但是,為了使用對每個目的地使用單獨(dú)的永久性存儲器,在多臺JMS服務(wù)器下創(chuàng)建它們。
技巧
·?? 針對JMS文件存儲啟用直接寫入同步寫入策略,這可以釋放虛擬內(nèi)存(VM)堆,但是只有當(dāng)存在一些并發(fā)的活動JMS客戶端時(shí),直接寫入可以顯著地提高性能。
·?? 在單獨(dú)的磁盤上,或者甚至是在單獨(dú)的磁盤控制器上分離文件存儲。
·?? 為了使文件存儲高度可用,您可以使用Storage Area Network (SAN),一種多端口的磁盤或者磁盤鏡像技術(shù)。
·?? 不要把使用XA JDBC 驅(qū)動程序的連接池與JMS JDBC存儲器關(guān)聯(lián)起來,因?yàn)?/span>JMS JDBC存儲器不支持XA 資源驅(qū)動程序(WebLogic JMS實(shí)現(xiàn)了它自己的XA資源)。
·?? 使用Using Expiration Scan Interval掃描目的地的到期消息可以釋放VM,但是太頻繁的掃描會增加掃描開銷;確保您對此做最優(yōu)調(diào)整。
·?? 在連接工廠上設(shè)置 MessagesMaximum ,以便調(diào)整異步消息管道的大小。
·?? 為了避免消息增長,在連接工廠級別上設(shè)置 Time To Live 屬性。
·?? 禁用默認(rèn)的JMS連接工廠;針對生產(chǎn)配置特定于應(yīng)用程序的JMS連接工廠。
·?? 為跨物理目的地(在不同的JMS服務(wù)器中進(jìn)行配置)的負(fù)載平衡JMS消息配置一個分布式的目的地。
·?? 當(dāng)部署分布式目的地時(shí),針對群集中的每臺JMS服務(wù)器和成員目的地使用類似的設(shè)置。
消息分頁
永久性和非永久性消息消耗服務(wù)器內(nèi)存,除非啟用分頁。消息分頁是釋放永久性和非永久性消息所占用的服務(wù)器內(nèi)存的過程,因?yàn)橛谰眯韵⒁矔阉鼈兊臄?shù)據(jù)緩存在內(nèi)存中。一條被換出頁面的消息不會釋放它使用的所有內(nèi)存。消息頭和消息屬性仍然留在內(nèi)存中,以供查找、排序和過濾之用。在事務(wù)性會話中發(fā)送的消息只有在會話被提交后才適合于分頁。在這之前,消息被保存在內(nèi)存中。
技巧
·?? 如果啟用JMS分頁,而且沒有配置分頁存儲器, WLS 8.1會自動創(chuàng)建一個分頁存儲器,但是推薦顯式地配置頁面存儲器(您可以指定存儲器的位置)。
·?? JMS分頁增加了一個WebLogic Server實(shí)例能夠包含的消息數(shù)據(jù)的數(shù)量,而不要求增加JVM堆大小。
·?? 分頁的確會降低性能,但是對非永久性消息進(jìn)行分頁時(shí),其效果比對永久性消息分頁時(shí)要小。
·?? 始終為WebLogic JMS Server配置限額;限額可以防止消息溢出服務(wù)器內(nèi)存。
流控制
定義JMS服務(wù)器之后,您可以配置一個或多個連接工廠,以使用預(yù)定義的屬性創(chuàng)建連接。借助流控制功能,您可以在消息生產(chǎn)程序確定自己將會變得過載時(shí),引導(dǎo)JMS服務(wù)器或目的地降低它的速度。
技巧
·?? 為了降低過于活躍的、從WebLogic Server 進(jìn)程之外淹沒目的地的生產(chǎn)程序的速度,需要配置流控制。
·?? 在服務(wù)器內(nèi)部使用流控制會導(dǎo)致服務(wù)器線程速度變慢;要小心使用。
部署
WebLogic Server允許您把部署單元存儲為單個存檔文件,或者是一個包含與上述存檔文件相同內(nèi)容的已展開目錄。存檔文件是包含一個所有應(yīng)用程序或模塊的類、靜態(tài)文件、目錄和部署描述符文件的單個文件。
?
在托管服務(wù)器實(shí)例上部署用戶應(yīng)用程序。這將管理應(yīng)用程序(控制臺)和域配置從用戶應(yīng)用程序分離出來。在生產(chǎn)環(huán)境和多服務(wù)器環(huán)境中,避免使用應(yīng)用程序的自動部署。以“生產(chǎn)模式”運(yùn)行WebLogic域?qū)⒔乖谏a(chǎn)中進(jìn)行自動部署。如果您創(chuàng)建腳本來把應(yīng)用程序部署為整個結(jié)構(gòu)的一部分,考慮使用wldeploy Ant任務(wù)。
如果您在部署應(yīng)用程序(或模塊)時(shí),在把On Future Redeploys選項(xiàng)設(shè)置為Initialize Roles and Policies From DD 之前,一次或多次將其設(shè)置為Ignore Roles and Policies From DD,您就可以使用管理控制臺設(shè)置安全策略和安全角色。但是,使用管理控制臺進(jìn)行的這些修改將覆蓋部署描述符中指定的安全性。
技巧
·?? 使用生產(chǎn)模式運(yùn)行生產(chǎn)應(yīng)用程序。
·?? 避免在管理服務(wù)器實(shí)例上部署用戶應(yīng)用程序。
·?? 為了指定服務(wù)器的默認(rèn)Web應(yīng)用程序,在weblogic.xml或application.xml文件中使用一個空的context-root元素或者一個值為"/" 的元素。
·?? 在管理控制臺中部署應(yīng)用程序之后,對該應(yīng)用程序的安全策略的修改將會覆蓋部署描述符中的策略。
重新部署
部署一個應(yīng)用程序之后,您可以重新部署該應(yīng)用程序本身或者它的一部分。重新部署一個完整的應(yīng)用程序包括卸載它所有的類,然后使用修改后的文件再次部署該應(yīng)用程序。在生產(chǎn)中重新部署應(yīng)用程序是一個很嚴(yán)肅的任務(wù),它可能影響到性能,所以要仔細(xì)規(guī)劃應(yīng)用程序的更新。
?
如果生產(chǎn)中有一個Web應(yīng)用程序正在使用中,重新部署將導(dǎo)致WebLogic Server丟失所有活動的HTTP會話。通過在WebLoigc特定的部署描述符文件(weblogic.xml)中打開一個特殊的屬性,可以還原HTTP會話。
技巧
·?? 如果您只修改了靜態(tài)文件,那么在不用重新部署整個應(yīng)用程序的情況下刷新它們是可能的。
·?? 使用命令行選項(xiàng)部分地重新部署已擴(kuò)展的應(yīng)用程序(weblogic.Deployer … -redeploy <files>…)。
·?? 想要在不改變應(yīng)用程序的情況下修改部署參數(shù),需要使用備用的部署描述符。
·?? 為了簡化在重新部署期間,把應(yīng)用程序存檔文件重新分布到多個WebLogic Server實(shí)例上的過程,需要使用分段模式部署。
·?? 如果管理服務(wù)器不可用,可以以獨(dú)立模式啟動具有全部分段應(yīng)用程序的托管服務(wù)器,并使它的功能完全。
企業(yè)應(yīng)用程序
如果客戶端位于相同的企業(yè)級應(yīng)用程序類中,而且可以在企業(yè)應(yīng)用程序中跨所有存檔應(yīng)用程序共享庫,WebLogic優(yōu)化了對EJB的訪問。所以,考慮創(chuàng)建企業(yè)存檔文件,而不是獨(dú)立部署相關(guān)的應(yīng)用程序。此外還可以使用企業(yè)范圍內(nèi)的設(shè)置,而不要使用部署描述符中的多項(xiàng)本地設(shè)置。使用WebLogic控制臺在WebLogic Server域中創(chuàng)建JDBC資源,而不要采用weblogic-application.xml技術(shù)。
技巧
·?? 在WebLogic Server中,避免把EJB存檔文件和相關(guān)Web應(yīng)用程序部署為單獨(dú)的獨(dú)立應(yīng)用程序。
·?? 當(dāng)Web組件訪問同一個企業(yè)應(yīng)用程序中的EJB組件時(shí),可以提高運(yùn)行時(shí)性能。
·?? 可以把企業(yè)部署為一個部署單元。
·?? 不要把特定于應(yīng)用程序的類或JAR文件放入系統(tǒng)classpath (避免為了重新加載它們而不得不重新啟動服務(wù)器)。
·?? 使用WebLogic Server 8.1時(shí),請使用企業(yè)應(yīng)用程序目錄結(jié)構(gòu)中新的APP-INF/lib 和 APP-INF/classes 目錄,這是為了簡化實(shí)用程序類和實(shí)用程序存檔文件的打包工作。
預(yù)編譯
生產(chǎn)和測試部署應(yīng)該包括經(jīng)過預(yù)編譯的JSP頁面和EJB(使用weblogic.appc,如果是早期的weblogic版本則使用weblogic.jspc /weblogic.ejbc)。在您部署應(yīng)用程序之前的很長一段時(shí)間內(nèi),它們可以捕捉該應(yīng)用程序的錯誤。此外,離線編譯可以驗(yàn)證部署描述符與當(dāng)前規(guī)范的兼容性。部署已編譯的應(yīng)用程序可以縮減部署時(shí)間和接下來的服務(wù)器重啟時(shí)間。用在開發(fā)人員的工作站上的開發(fā)部署可以使用動態(tài)編譯。
技巧
·?? 為了在應(yīng)用程序部署期間或服務(wù)器啟動期間預(yù)先編譯JSP文件,在weblogic.jar中啟用預(yù)編譯參數(shù)。
·?? 在生產(chǎn)環(huán)境中,要禁止運(yùn)行時(shí)的頁面檢查和重新編譯,需要把pageCheckSeconds 設(shè)定為 -1。
·?? 您可以使用weblogic.appc或weblogic.ejbc (不再使用)在服務(wù)器VM之外編譯EJB。這可以減少隨后服務(wù)器的重啟時(shí)間。
·?? 在腳本中使用weblogic.Deployer實(shí)用程序,或者它相關(guān)的Ant任務(wù)wldeploy,以便在生產(chǎn)環(huán)境中使部署自動化。
部署描述符編輯
只有當(dāng)重新部署應(yīng)用程序時(shí),修改J2EE應(yīng)用程序的部署描述符才會生效。WebLogic管理控制臺提供一種方法來修改某些部署描述符屬性,而不用重新部署應(yīng)用程序。當(dāng)域以開發(fā)模式運(yùn)行時(shí),為了利用這項(xiàng)功能,您必須在已展開的目錄結(jié)構(gòu)中部署應(yīng)用程序(非存檔格式)。
?
為了在部署之后修改應(yīng)用程序的描述符值(以展開的格式),執(zhí)行以下操作:Web Application Module > Your Application > Configuration 選項(xiàng)卡 > Descriptor選項(xiàng)卡。
技巧
·?? 使用WebLogic Server 提供的工具生成和編輯XML部署描述符。
·?? WebLogic Builder生成描述符;它包括一個用于編輯描述符的接口。
·?? DDInit 是一個命令行實(shí)用工具,用于為WebLogic Server應(yīng)用程序生成部署描述符。
·?? ddcreate 是一個 Ant 任務(wù),可以用于為企業(yè)應(yīng)用程序創(chuàng)建部署描述符。
EJB
無狀態(tài)會話EJB自由池可以提高性能和吞吐量,因?yàn)?/span>bean是在服務(wù)器啟動期間或部署期間被創(chuàng)建的。WebLogic Server使用bean實(shí)例的緩存來提高有狀態(tài)會話EJB的性能。該緩存在內(nèi)存中存儲活動的EJB實(shí)例,這樣它們馬上就可以為客戶端請求所用。
?
使用應(yīng)用程序級/聯(lián)合緩存將導(dǎo)致碎片減少,而且內(nèi)存和堆空間的利用率更高。但是應(yīng)用程序級/聯(lián)合緩存的使用僅限于企業(yè)應(yīng)用程序中的實(shí)體EJB。對于要求高吞吐量的應(yīng)用程序來說,要使用bean級別的緩存。bean級緩存是高效的,因?yàn)槿蝿?wù)們不用競爭對聯(lián)合緩存中一個控制線程的控制權(quán)。
為了在應(yīng)用程序中使用WebLogic為EJB組件提供的調(diào)用優(yōu)化,把<enable-call-by-reference>設(shè)置為true。
?
在同一個企業(yè)應(yīng)用程序中為要訪問的EJB編寫本地接口,也可以達(dá)到相同的目的。
?
實(shí)體EJB的并發(fā)策略包括:
數(shù)據(jù)庫:
遵從數(shù)據(jù)庫可以提高吞吐量(對于EJB1.1和2.0來說,這是默認(rèn)的也是建議使用的機(jī)制)。
互斥的:
避免死鎖;只有當(dāng)在非群集的服務(wù)器上要求高度一致性時(shí)才使用它。
樂觀的:
在事務(wù)期間,EJB容器或數(shù)據(jù)庫中不會保持鎖定。但是EJB容器確保事務(wù)正在更新的數(shù)據(jù)沒有被修改。
只讀的:
事務(wù)結(jié)束時(shí),容器不會試著保存bean的狀態(tài);對不會對永久性數(shù)據(jù)做任何修改的EJB使用這一點(diǎn)。借助只讀策略,使用<read-time-out-seconds>使容器中緩存的bean數(shù)據(jù)變得無效;當(dāng)出現(xiàn)超時(shí)時(shí),這會更新永久性存儲器中數(shù)據(jù)。
技巧
·?? 考慮執(zhí)行線程的數(shù)目,以便配置自由池中bean的最大數(shù)目。
·?? 要限制有狀態(tài)會話EJB使用的內(nèi)存,需要設(shè)置能夠駐留在緩存中的bean的最大數(shù)目(max-beans-in-cache)。
·?? 緩存過小會導(dǎo)致頻繁的激活和鈍化。
·?? 緩存過大會導(dǎo)致內(nèi)存浪費(fèi)。
·?? 當(dāng)達(dá)到理想的超時(shí)時(shí)間長短之后,LRU算法會讓bean保持在鈍化狀態(tài)。
·?? 為了避免鈍化有狀態(tài)會話EJB所帶來的相關(guān)開銷,使用Not Recently Used (NRU) 算法。
·?? EJB的本地接口提供對服務(wù)器端EJB客戶端的最優(yōu)訪問。
·?? 聯(lián)合緩存使管理員能夠在weblogic-application.xml中只調(diào)整一塊緩存,而不是多塊緩存。
·?? 使用容器托管事務(wù)的消息驅(qū)動bean必須使用XA連接工廠。
安全性
永遠(yuǎn)不要對生產(chǎn)服務(wù)器使用開發(fā)模式;開發(fā)模式會放寬域中所有服務(wù)器的安全限制。使用兼容性安全性時(shí),禁用生產(chǎn)中的客人登錄,這樣就可以使用客人登錄來訪問WebLogic Server中的WebLogic資源。
?
創(chuàng)建安全策略時(shí),如果通過繼承得到的策略語句出現(xiàn)在Policy Editor頁面的Inherited Policy Statement框中,新的策略會覆蓋它們。想要修改在J2EE部署描述符中定義的安全策略,需要進(jìn)行重新部署;在管理控制臺中修改內(nèi)嵌的LDAP策略是動態(tài)的。把另外的管理用戶配置為諸如admin、deployer、 monitor 或 operator這樣的角色。
?
SerializedSystemIni.dat包含對域中密碼進(jìn)行處理以后得到的雜亂信息;確保您在安全的地方存儲了這個文件的拷貝。只能授予WebLogic系統(tǒng)管理員帳號對SerializedSystemIni.dat的讀權(quán)限。如果您丟失了管理密碼,而且沒有以boot.properties文件的形式保存啟動身份,那么您不能重新啟動服務(wù)器。
技巧
·?? 在boot.properties文件中保存對有權(quán)啟動WebLogic Server 的用戶進(jìn)行加密后的啟動身份。
·?? BEA建議使用安全角色(而不是用戶或組)來保護(hù)WebLogic資源;首先把用戶指派給組,然后創(chuàng)建角色語句。
·?? 不要以root權(quán)限安裝或運(yùn)行WebLogic Server 。如果您必須綁定到一個要求授權(quán)的端口,請?jiān)?/span>WebLogic機(jī)器配置中使用post-bind UID 或 post-bind GID。
·?? 設(shè)置WebLogic安裝和應(yīng)用程序目錄的所有權(quán),只允許運(yùn)行服務(wù)器的用戶帳戶訪問它們。
恢復(fù)管理員密碼
使用默認(rèn)的身份認(rèn)證程序時(shí),如果您尚未修改全局的管理角色(默認(rèn)情況下被授給管理員組),您可以恢復(fù)WebLogic域中的管理員密碼。
想要恢復(fù)WebLogic域中的管理員密碼,需要完成以下步驟:
·?? 在命令行上,修改到域的目錄,然后運(yùn)行setEnv 腳本來設(shè)置PATH 和CLASSPATH。
·?? 創(chuàng)建一個新的 DefaultAuthenticatorInit.ldift;運(yùn)行 java weblogic.security.utils.AdminAccount <tempadmin> <temppassword> ./
·?? 刪除<Domain>/<Server>/ldap子目錄中的初始化狀態(tài)文件DefaultAuthenticatormyrealmInit.initialized。
·?? 使用新的用戶身份重新啟動服務(wù)器。
·?? 要修改舊的管理用戶身份,需要登錄到管理控制臺。(可選)
SSL
當(dāng)對WebLogic Server使用SSL時(shí),請使用keystore;已經(jīng)不再使用把身份(私鑰和證書)和信任(CA)保存在文件里這種方法。從早期的版本進(jìn)行遷移要求您使用私鑰、證書或信任文件創(chuàng)建keystore。
?
如果連接域中WebLogic Server的網(wǎng)絡(luò)不可信任,在域中的每臺服務(wù)器上啟用SSL,這樣管理服務(wù)器和托管服務(wù)器之間的LDAP復(fù)制就可以使用SSL連接。在域中啟用管理端口要求所有的服務(wù)器都使用SSL。
?
默認(rèn)的WebLogic安裝代表可輸出強(qiáng)度的(exportable-strength) SSL實(shí)現(xiàn)(SSL最多可以使用帶有批量加密的512位鑰匙)。長于512位的鑰匙需要BEA提供的內(nèi)部強(qiáng)度的(domestic-strength)SSL許可證鑰匙。如果您在您的生產(chǎn)環(huán)境中使用SSL,請使用高強(qiáng)度的(high-strength)SSL。通常認(rèn)為長度小于1024位的鑰匙是不可靠的。
?
SSL硬件加速器:在WebLogic Server上運(yùn)行SSL會在很大程度上耗盡服務(wù)器的資源。通過卸載SSL處理,就可以把資源應(yīng)用到WebLogic功能上。Web服務(wù)器、負(fù)載平衡器、防火墻或交換機(jī)都可以進(jìn)行SSL處理。
?
在WebLogic Server中,過濾它們可以控制進(jìn)入的連接。WebLogic Server提高一種默認(rèn)的連接過濾器實(shí)現(xiàn),您可以在管理控制臺種對它進(jìn)行配置。
技巧
·?? 在生產(chǎn)中,不要使用與WebLogic一起提供的示例SSL證書。
·?? 為了避免危及應(yīng)用程序的安全性,安裝并配置特定于服務(wù)器的SSL證書,然后在生產(chǎn)服務(wù)器上啟用主機(jī)名驗(yàn)證。
·?? 只在必要時(shí)對WebLogic Server 使用SSL,因?yàn)?/span>SSL會降低性能。
·?? 要控制能夠被WebLogic Server 實(shí)例接受的連接的類型,請使用連接過濾器。
·?? 使用帶有內(nèi)置安全套接字層(Secure Socket Layer,SSL)支持的負(fù)載平衡器,或者使用Java Cryptography Extension(JCE)在有SSL硬件的機(jī)器上運(yùn)行WebLogic Server。
保護(hù)管理控制臺
如果您使用管理服務(wù)器(或者在單臺服務(wù)器的域中)為應(yīng)用程序服務(wù),請做到以下幾點(diǎn),以提供更好的安全性:
·?? 把默認(rèn)的管理用戶及密碼修改為定制的用戶及密碼。
·?? 修改管理控制臺上下文根路徑。
·?? 啟用域范圍內(nèi)的管理端口。
·?? 考慮禁用管理控制臺。
如果您使用的是外部LDAP提供程序,把服務(wù)器啟動身份存儲在內(nèi)嵌的LDAP服務(wù)器中,然后在外部LDAP身份認(rèn)證提供程序上設(shè)置超時(shí)。這樣,如果外部LDAP服務(wù)器不可用,您可以繼續(xù)重新啟動,向WebLogic Server提供未受保護(hù)的數(shù)據(jù)。此外,在您應(yīng)用任何修改之前,把所有身份驗(yàn)證提供程序的控制標(biāo)志設(shè)置為OPTIONAL;這可以防止配置錯誤導(dǎo)致生產(chǎn)服務(wù)器不能重新啟動。
?
基于舊式的安全領(lǐng)域API,WebLogic Server提供一個定制的領(lǐng)域,叫做NTRralm,它可以支持本機(jī)的Windows域身份認(rèn)證。對于沒有被設(shè)定為使用Active Directory的Windows域來說, NTRealm相當(dāng)有用。
技巧
·?? 在內(nèi)嵌的LDAP服務(wù)器中存儲服務(wù)器啟動身份。
·?? 想要更加出色地控制生產(chǎn)環(huán)境,使用Active Directory 身份驗(yàn)證,而不要使用本機(jī)的Windows域(NTRealm)身份驗(yàn)證。
·?? 為了防止拒絕服務(wù)攻擊,在服務(wù)器上修改進(jìn)入?yún)f(xié)議端口(T3, COM, IIOP, HTTP Post 超時(shí))的超時(shí)和最大大小的值。
·?? 讓內(nèi)部或外部的審核小組執(zhí)行安全性審核。
群集
WebLogic群集是域中的一組托管服務(wù)器,以一種協(xié)同的方式為客戶端提供單個服務(wù)器視圖。使用WebLogic群集來提高效率、可伸縮性、負(fù)載平衡和故障恢復(fù)。WebLogic群集是一種流程級別的群集,參與其中的服務(wù)器可以位于不同的物理機(jī)器上,也可以位于同一臺機(jī)器上。IP多播是在群集中交換心跳信號的樞紐。所以,確保在WebLogic Server網(wǎng)絡(luò)中啟用多播通信。
技巧
·?? 如果您使用了Web Server代理,那么至少配置兩個,以避免群集的單點(diǎn)故障。
·?? 把WebLogic Server 上的應(yīng)用程序移植給群集時(shí),確保存儲在HTTP會話中的對象能夠序列化。
·?? 至少在每個群集中防止三個WebLogic Server 實(shí)例,這樣一臺服務(wù)器的故障就不會停止群集的負(fù)載平衡。
·?? 您不能給群集添加管理服務(wù)器。
·?? 對網(wǎng)絡(luò)中的每個群集使用單獨(dú)的多播地址。
·?? 運(yùn)行在群集的服務(wù)器可以監(jiān)聽WebLogic Server 7.0的不同端口。
·?? 如果可以,使用單獨(dú)的硬件 (NIC)來路由群集多播通信,具體方法是配置網(wǎng)絡(luò)頻道,把內(nèi)部群集通信與外部客戶端通信分離開來,這樣可以獲得更好的性能。
·?? 在一級群集(ex. war and EJB jar)中聯(lián)合頻繁被訪問的應(yīng)用程序,以避免網(wǎng)絡(luò)信息流過大。
·?? 要啟用servlets和 JSP的自動故障恢復(fù),使用復(fù)制技術(shù)。
·?? 內(nèi)存中的復(fù)制比其他類型的復(fù)制要快。
·?? 使用內(nèi)存中的復(fù)制時(shí),要為群集中的服務(wù)器指定機(jī)器信息。
·?? 只有當(dāng)您需要控制二次選擇過程時(shí),才需要定義復(fù)制組。
·?? 在所有可能的地方使用服務(wù)器相似性可以提高性能。
·?? 公開使用可用的DNS名稱來標(biāo)識WebLogic Server 實(shí)例,而不要使用啟用防火墻的環(huán)境中的IP地址。
·?? 如果一個WebLogic群集跨越了多個站點(diǎn),站點(diǎn)間的網(wǎng)絡(luò)必須支持跨站點(diǎn)群集的多播通信。
·?? 借助這個跨越體系結(jié)構(gòu),您必須把群集的Multicast TTL 值配置得足夠高,才能防止路由器在多播包到達(dá)其目的地之前丟棄它們。
線程化
為了提高WebLogic Server的性能,請使用本機(jī)的I/O(性能包),如果它們可用的話。為了確保能正確初始化性能包,在啟動時(shí)要檢測錯誤。
可以把執(zhí)行隊(duì)列設(shè)定為在溢出情形下增加線程。但是,避免使用服務(wù)器增加執(zhí)行線程數(shù)目的能力,以管理常規(guī)的應(yīng)用程序負(fù)載高峰期。相反地,進(jìn)行仔細(xì)的容量規(guī)劃和服務(wù)器調(diào)整;為執(zhí)行線程選擇一個最佳的數(shù)目。
技巧
·?? 只有當(dāng)CPU利用率沒有到達(dá)100%,但是客戶端請求經(jīng)常被阻塞和拒絕時(shí),才能調(diào)整執(zhí)行線程的數(shù)目。
·?? 調(diào)整線程數(shù)目時(shí),如果吞吐量開始下降,或者CPU利用率下降或保持恒定,才能停止調(diào)整。
·?? 不要把Stuck Thread Max Time 和 Stuck Thread Time Interval 設(shè)置得過低,以至于在處理高峰期間,常規(guī)請求被誤認(rèn)為是卡住得線程。
·?? 為了劃分應(yīng)用程序組件或者給一個組件提供專門數(shù)量的資源,需要創(chuàng)建用戶定義的執(zhí)行隊(duì)列。使用定制的執(zhí)行隊(duì)列還可以避免出現(xiàn)潛在的跨服務(wù)器死鎖的情形。
·?? 為了給消息驅(qū)動bean提供專門的資源,需要對每個被部署的消息驅(qū)動EJB使用一個單獨(dú)的執(zhí)行隊(duì)列。
·?? 診斷WebLogic Server上的死鎖故障和長期運(yùn)行的請求時(shí),使用一系列正確安排的線程轉(zhuǎn)儲來確定可能的原因。
·?? 如果通過隧道化(tunneling)在HTTP上使T3協(xié)議進(jìn)行訪問,性能將下降大約15%;應(yīng)避免在HTTP上使用隧道化T3。
測試技巧
·?? 在容量規(guī)劃和測試期間,要為應(yīng)用程序可能引起的高峰負(fù)載擬訂計(jì)劃。
·?? 在測試期間優(yōu)化應(yīng)用程序;通常,在WebLogic Server 上,應(yīng)用程序在性能和容量方面是限制最大的因素。
·?? 在壓力下測試系統(tǒng)性能時(shí),要使用適當(dāng)而現(xiàn)實(shí)的測試用例。
·?? 測試用例與生產(chǎn)情況越貼近,測試結(jié)果就越精確。
·?? 對應(yīng)用程序進(jìn)行基準(zhǔn)測試時(shí),忽略開始的幾個例子;運(yùn)行測試?yán)觼碜尫?wù)器VM“進(jìn)行熱身”。
監(jiān)控
使用特定于操作系統(tǒng)的統(tǒng)計(jì)來觀察線程行為和上下文切換。例如,在Solaris上,您可以使用mpstat、prstat、top來監(jiān)控CPU利用率。mpstat公開CPU利用率、線程中斷,以及有意和無意的上下文切換。top將幫助您找出耗盡CPU的進(jìn)程。
?
WebLogic管理控制臺可以用于監(jiān)控正在運(yùn)行的服務(wù)器、服務(wù)器線程、JVM堆的使用情況、日志文件、群集統(tǒng)計(jì)信息,等等。啟用SNMP監(jiān)控可以利用現(xiàn)有的SNMP監(jiān)控框架,以便通過中央管理服務(wù)器來監(jiān)控您的WebLogic域資源。
?
1.01節(jié):第三方監(jiān)控工具也可用用于監(jiān)控WebLogic Server使用的應(yīng)用程序和系統(tǒng)資源(例如,Quest公司出品的spotlight,Acsera公司出品的Acsera,等等)。
技巧
·?? SNMP代理是域中管理服務(wù)器的一個組成部分,所以管理服務(wù)器實(shí)例的故障可能變成一個瓶頸。
·?? 為了監(jiān)控WebLogic運(yùn)行時(shí)Mbeans,除了管理控制臺之外,您還可以使用JMX監(jiān)控工具。
JVM
使用JVM,它可以給服務(wù)器端的應(yīng)用程序(例如 JRockit)提供更好的性能。管理控制臺可以用于圖形化地監(jiān)控JVM堆的使用情況。
?
為了獲得更好的性能,要求使用特定于JVM提供商的選項(xiàng)進(jìn)行測試。
例如,這些您可以設(shè)置的常見“熱點(diǎn)”JVM選項(xiàng):
-XX +AggressiveHeap – 使用幾乎和整個物理內(nèi)存一般大的堆。
-XX +UseISM – 使用隱私的共享內(nèi)存 (Solaris)。
AggressiveHeap 警告:
1. 使用所有可用的內(nèi)存。
2. 與 -Xms –Xmx不兼容。
3. 堆可能會從堆棧偷取內(nèi)存。
隱私的共享內(nèi)存警告 (僅針對 Solaris):
1. 鎖定內(nèi)存;只在轉(zhuǎn)么系統(tǒng)上使用。
2. 內(nèi)存碎片能夠防止分配連續(xù)的4 MB頁面。
3. 異常的JVM終止能夠?qū)е鲁霈F(xiàn)鎖定段。
4. 要發(fā)現(xiàn)并刪除鎖定段,使用ipcs 和 ipcrm。
技巧
·?? 不要把服務(wù)器的堆大小設(shè)置得比機(jī)器上可用的自由RAM還大。
·?? 為了獲得高性能和高吞吐量,設(shè)置最小的JVM堆大小等于最大的堆大小。
·?? WebLogic Server用于低內(nèi)存情況的日志記錄功能可以用于對可用自由內(nèi)存進(jìn)行采樣,以便檢測低內(nèi)存的情況。
·?? 監(jiān)控垃圾收集時(shí),如果堆始終固定在85%空閑,那么試著減小堆大小。
·?? 進(jìn)行設(shè)置時(shí),-noclassgc確保將perm大小設(shè)置為大于默認(rèn)值(32mb)。
·?? 在生產(chǎn)運(yùn)行期間避免使用-verbosegc 選項(xiàng)。
·?? 在多CPU的機(jī)器上使用并行的垃圾收集算法,以減少垃圾收集的暫停時(shí)間。
·?? 在基于Intel的體系結(jié)構(gòu)上,為了獲得更好的性能,把WebLogic配置為使用JRockit虛擬機(jī)。
·?? 要發(fā)現(xiàn)并刪除鎖定段,使用ipcs和 ipcrm。