詳解Oracle WebLogic服務(wù)器服務(wù)框架
為了完全理解WebLogic服務(wù)器如何工作,并讓它表現(xiàn)出***性能,我們很有必要理解幾個(gè)概念。最重要的概念都在下面的內(nèi)容中談到了。
執(zhí)行線程和隊(duì)列
本部分內(nèi)容簡(jiǎn)單描述了Oracle WebLogic服務(wù)器的內(nèi)部架構(gòu),大家可以了解到該服務(wù)器如何執(zhí)行工作來(lái)滿足用戶請(qǐng)求的。當(dāng)客戶端向WebLogic發(fā)起請(qǐng)求時(shí),響應(yīng)該請(qǐng)求的實(shí)際工作是由叫做執(zhí)行線程的Java線程執(zhí)行的。用戶可以使用指向Servlet引擎的基于HTTP的請(qǐng)求,或者訪問(wèn)諸如企業(yè)級(jí)JavaBean(EJB)這類對(duì)象的遠(yuǎn)程方法調(diào)用(RMI)來(lái)提交工作。當(dāng)服務(wù)器進(jìn)程啟動(dòng)時(shí),它會(huì)把自己綁定到一個(gè)端口,并給該端口分配一個(gè)針對(duì)傳入請(qǐng)求的監(jiān)聽線程。一旦該請(qǐng)求建立了連接,服務(wù)器就把該連接的控制傳遞給socket muxer。Socket muxer從socket讀取請(qǐng)求,并在請(qǐng)求到達(dá)時(shí)把工作請(qǐng)求放到自調(diào)整的執(zhí)行隊(duì)列中。一個(gè)空閑的執(zhí)行線程將從執(zhí)行隊(duì)列取出請(qǐng)求,再把這些請(qǐng)求的響應(yīng)工作轉(zhuǎn)發(fā)給專門的處理線程。執(zhí)行線程執(zhí)行請(qǐng)求并返回響應(yīng)。
Oracle WebLogic服務(wù)器使用socket muxer(軟件模塊)讀取服務(wù)器上的傳入請(qǐng)求。Muxer從網(wǎng)絡(luò)上讀取消息,并把它們打成工作包,然后放入工作管理器隊(duì)列,通過(guò)某個(gè)線程執(zhí)行工作并確保響應(yīng)回到請(qǐng)求來(lái)源的同一個(gè)socket去。有兩種類型的muxer,一種是Java Muxer,另一種是本地muxer。Java muxer使用專門平臺(tái)的本地二進(jìn)制包。默認(rèn)情況下,Oracle WebLogic使用本地muxer——也就是說(shuō),該服務(wù)器的“啟用本地IOP”參數(shù)是選中狀態(tài)。要注意的是,若使用本地muxer,該服務(wù)器會(huì)創(chuàng)建固定數(shù)量的線程來(lái)讀取傳入請(qǐng)求;而使用Java muxer,你可以在管理控制臺(tái)中修改“Socket讀取器百分比”參數(shù)來(lái)配置線程數(shù)量。本地muxer分配特定比例的服務(wù)器線程來(lái)用作socket讀取器線程,形成線程池功能,同時(shí)剩下的服務(wù)器線程忙著處理客戶端請(qǐng)求。一般情況下,你需要小心修改socket讀取器線程的數(shù)量。在許多情況下,***化的配置是設(shè)置為“1”。
如果你想知道使用的是本地muxer還是Java muxer,看看消息涉及的執(zhí)行線程就知道了。如果你用的是本地muxer,服務(wù)器錯(cuò)誤信息會(huì)提示“weblogic.socket.EPollSocketMuxer”;而如果你使用的是Java muxer,你看到的就會(huì)是“weblogic.socket.SocketMuxer”。要注意的是,“EPollSockerMuxer”只與運(yùn)行于Linux服務(wù)器上的JRockit JVM有關(guān)。如果配置為本地muxer,你還可以看到“poll”字樣,因?yàn)樗褂昧溯喸儥C(jī)制來(lái)查詢socket數(shù)據(jù)。本地muxer被認(rèn)為能提供更優(yōu)越的性能,尤其是在擴(kuò)展為大用戶群的情況下,因?yàn)樗鼈兪褂昧藷o(wú)阻塞線程模型。在管理WebLogic服務(wù)器實(shí)例時(shí),你會(huì)經(jīng)常遇到“阻塞線程”的情況,這種情況一般發(fā)生在某個(gè)線程不能在設(shè)定時(shí)間內(nèi)(默認(rèn)是十分鐘)返回線程池的時(shí)候發(fā)生。
執(zhí)行JMX API和MBeans
WebLogic服務(wù)器是用Sum的Java管理擴(kuò)展實(shí)現(xiàn)的部署系統(tǒng)管理基礎(chǔ)架構(gòu)。執(zhí)行JMX API涉及到使用Java MBeans(受管bean)給系統(tǒng)管理任務(wù)建模。如果你理解MBean和JMX API,你可以使用它們創(chuàng)建你自己定制的管理工具。然而,所有的管理工具(比如,管理控制臺(tái))都使用相同的MBean和JMX API,所以你不必重新發(fā)明輪子來(lái)創(chuàng)建定制管理工具。雖然WebLogic服務(wù)器管理員不需要知道如何用JMX API編程,但是如果對(duì)其編程有所了解的話,有助于理解不同類型的MBean以及理解JMX API如何與它們交互。
WebLogic服務(wù)器使用兩種基本類型的MBean——配置MBean和運(yùn)行時(shí)MBean——來(lái)配置、監(jiān)視和管理服務(wù)器以及其資源。
•配置MBean包含服務(wù)器和資源的配置信息,存儲(chǔ)在域配置文件中,比如“config.xml”文件或者其它XML文件。這些都是持久的MBean,而域配置文件(config.xml)為這些MBean存儲(chǔ)屬性值。不管什么時(shí)候你用管理工具(比如管理服務(wù)器)修改了配置屬性,這些變更都會(huì)持久化到“config.xml”文件中。通過(guò)修改啟動(dòng)腳本,在Java啟動(dòng)命令中添加額外參數(shù)“-D”選項(xiàng),也可以修改配置值。如果你修改了任何配置設(shè)置,“config.xml”文件都會(huì)自動(dòng)更新。當(dāng)受管服務(wù)器啟動(dòng)時(shí),它會(huì)聯(lián)系管理服務(wù)器,獲得配置信息副本,在內(nèi)存中存儲(chǔ)為配置MBean。因此,域中的所有服務(wù)器在內(nèi)存中都有相同的配置副本。要注意,在啟動(dòng)受管服務(wù)器時(shí),你修改的任何屬性都不會(huì)影響“config.xml”文件;只有在管理服務(wù)器上修改的屬性值,才會(huì)保存到“config.xml”文件中。當(dāng)你關(guān)閉服務(wù)器實(shí)例時(shí),該服務(wù)器托管的所有配置MBean都會(huì)被銷毀。
•運(yùn)行時(shí)MBean幫助監(jiān)視運(yùn)行服務(wù)器實(shí)例,它包含保持服務(wù)器實(shí)例和應(yīng)用程序運(yùn)行時(shí)信息的屬性。每個(gè)服務(wù)器的資源都會(huì)更新相關(guān)運(yùn)行時(shí)MBean,包括其狀態(tài)變化。例如,“ServerRuntimeMBean ”在服務(wù)器啟動(dòng)時(shí)會(huì)初始化,其中包括了該服務(wù)器的運(yùn)行時(shí)數(shù)據(jù)。運(yùn)行時(shí)MBean只由運(yùn)行時(shí)數(shù)據(jù)構(gòu)成,沒有其它內(nèi)容。當(dāng)你關(guān)閉服務(wù)器時(shí),“ServerRuntimeMBean ”中的運(yùn)行時(shí)統(tǒng)計(jì)都被銷毀了,其它所有運(yùn)行時(shí)MBean的情況也類似。
MBean服務(wù)器充當(dāng)著各種MBean容器的角色,該服務(wù)器創(chuàng)建并提供對(duì)MBean的訪問(wèn)。Oracle提供三種類型的MBean服務(wù)器。管理服務(wù)器托管域運(yùn)行時(shí)MBean服務(wù)器實(shí)例,它為域范圍內(nèi)的服務(wù)管理MBean。受管服務(wù)器和管理服務(wù)器都托管運(yùn)行時(shí)MBean服務(wù)器,它支持你配置服務(wù)器實(shí)例。管理服務(wù)器還托管編輯MBean服務(wù)器,它管理掛起的配置變更。管理服務(wù)器和受管服務(wù)器還可以選擇性地托管JVM的平臺(tái)MBean服務(wù)器,它控制包含JDK監(jiān)視信息的MBean。
你可以在服務(wù)器實(shí)例運(yùn)行時(shí)動(dòng)態(tài)修改大部分域配置屬性。對(duì)于不支持動(dòng)態(tài)配置的屬性,你就必須重啟服務(wù)器實(shí)例了。你配置的運(yùn)行時(shí)屬性值將立即反映出你所作的變更,這些值會(huì)持久地保存在“config.xml”文件中。
【編輯推薦】
- Weblogic 8.1 for Linux ES3.0安裝配置
- Linux系統(tǒng)上WebLogic安裝調(diào)試詳細(xì)說(shuō)明
- Linux操作系統(tǒng)上WebLogic的安裝及其配置