一種weblogic中間件故障自動診斷方法
【專利摘要】本發(fā)明公開了一種weblogic中間件故障自動診斷方法,包括如下步驟:a)預(yù)先收集weblogic中間件各個版本的bug信息;b)預(yù)先定義診斷故障的關(guān)鍵字;c)采用Java管理擴(kuò)展方法自動獲取當(dāng)前weblogic中間件運(yùn)行的各種故障信息,并通過預(yù)先定義的關(guān)鍵字快速搜索定位診斷故障;d)從獲取的故障信息中查找各個版本的bug信息,并給出匹配bug對應(yīng)的補(bǔ)丁號。本發(fā)明通過預(yù)先收集weblogic中間件各個版本的bug信息,預(yù)先定義診斷故障的關(guān)鍵字,統(tǒng)一收集各種故障信息,從而能夠在故障發(fā)生時快速定位,并可通過故障關(guān)鍵字和匹配bug對應(yīng)的補(bǔ)丁號及時解決問題,減少人工干預(yù),實(shí)現(xiàn)自動診斷功能。
【專利說明】一種web I og i c中間件故障自動診斷方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種軟件故障診斷方法,尤其涉及一種weblogic中間件故障自動診斷方法。
【背景技術(shù)】
[0002]WebLogic是美國Oracle公司出品的一個applicat1n server確切的說是一個基于JAVAEE架構(gòu)的中間件,BEA WebLogic是用于開發(fā)、集成、部署和管理大型分布式Web應(yīng)用、網(wǎng)絡(luò)應(yīng)用和數(shù)據(jù)庫應(yīng)用的Java應(yīng)用服務(wù)器。將Java的動態(tài)功能和Java Enterprise標(biāo)準(zhǔn)的安全性引入大型網(wǎng)絡(luò)應(yīng)用的開發(fā)、集成、部署和管理之中。從weblogiC4.0到如今的12c,整整經(jīng)歷了 10多年的發(fā)展,版本也經(jīng)過多次的更新。WebLogic長期以來一直被認(rèn)為是市場上最好的J2EE工具之一。目前在世界applicat1n server市場上占有最大的份額,其他還有象金蝶Apusic應(yīng)用服務(wù)器、IBM的websphere,免費(fèi)的tomcat、resin等中間件。weblogic被廣泛使用與電信、金融、電力、航空、政府等各個行業(yè)。同樣此類中間件的維護(hù)也面臨越來越大的挑戰(zhàn),客戶的核心、關(guān)鍵的系統(tǒng)都部署在weblogic平臺,一旦發(fā)生緊急故障,如果不能及時得到解決,后果將不堪設(shè)想。
[0003]現(xiàn)有技術(shù)中的故障診斷,一般來說,大概有幾個動作:一、查找相關(guān)日志,發(fā)現(xiàn)是否有明顯的錯誤信息;二、手工產(chǎn)生threaddump,分析線程使用情況,確認(rèn)是否存在過載、阻塞、死鎖等;三、檢查jvm內(nèi)存回收情況,查看gc回收時間;四、檢查關(guān)聯(lián)數(shù)據(jù)庫使用情況,如連接使用情況,連接等待情況等;五、檢查所在主機(jī)的資源消耗情況,如進(jìn)程的cpu使用情況、網(wǎng)絡(luò)連接情況、內(nèi)存消耗情況等等。按照這種處理步驟,不難發(fā)現(xiàn),處理時間至少半小時或者更長。對客戶來說,這樣的處理效率無疑是一場災(zāi)難。
[0004]由上可見,現(xiàn)有技術(shù)直接對中間件服務(wù)器收集故障數(shù)據(jù),并人工分析產(chǎn)生問題的原因,因此,存在如下缺點(diǎn):
[0005]I)、效率低下。首先是人工采集數(shù)據(jù),中間可能需要使用各種命令、工具;有些數(shù)據(jù)需要下載到本地,即使是很熟練的工程師,估計(jì)也得消耗半小時或者更長時間才能有個初步的診斷。
[0006]2)、容易引起誤操作。由于要求短時間內(nèi)快速故障處理。非常容易引起誤操作,導(dǎo)致前功盡棄。
[0007]3)、長時間業(yè)務(wù)中斷。不能快速修復(fù)問題,意味著業(yè)務(wù)中斷的時間大大拉長,將大大降低客戶的滿意度。
[0008]4)、影響問題診斷。由于沒有很好的自動化運(yùn)維機(jī)制,很多處理案例都是粗暴的重啟應(yīng)用服務(wù)器,這種重啟只能短暫的緩解問題,但不能從根本上杜絕故障再次發(fā)生。
【發(fā)明內(nèi)容】
[0009]本發(fā)明所要解決的技術(shù)問題是提供一種weblogic中間件故障自動診斷方法,能夠在故障發(fā)生時快速定位,并通過建議的修復(fù)方法及時解決問題,減少人工干預(yù),實(shí)現(xiàn)自動診斷功能。
[0010]本發(fā)明為解決上述技術(shù)問題而采用的技術(shù)方案是提供一種weblogic中間件故障自動診斷方法,包括如下步驟:a)預(yù)先收集weblogic中間件各個版本的bug信息;b)預(yù)先定義診斷故障的關(guān)鍵字;c)采用Java管理擴(kuò)展方法自動獲取當(dāng)前weblogic中間件運(yùn)行的各種故障信息,并通過所述預(yù)先定義的關(guān)鍵字快速搜索定位診斷故障;d)從獲取的故障信息中查找各個版本的bug信息,并給出匹配bug對應(yīng)的補(bǔ)丁號。
[0011]上述的weblogic中間件故障自動診斷方法,其中,所述步驟a)中預(yù)先收集bug信息包括weblogic中間件各系列版本的bug列表及bug場景數(shù)據(jù),所述步驟d)通過對預(yù)先收集的bug場景數(shù)據(jù)與故障信息進(jìn)行比對、過濾,得到匹配bug。
[0012]上述的weblogic中間件故障自動診斷方法,其中,所述b)中預(yù)先定義的關(guān)鍵字包括 dead lock、jdbc leak 或 out of memory。
[0013]上述的weblogic中間件故障自動診斷方法,其中,所述步驟c)通過調(diào)用weblogic的jmx接口獲取當(dāng)前weblogic中間件運(yùn)行的各種故障信息。
[0014]上述的weblogic中間件故障自動診斷方法,其中,所述步驟c)通過修改weblogic啟動腳本后,使用java jmx遠(yuǎn)程功能獲取當(dāng)前weblogic中間件運(yùn)行的各種故障信息。
[0015]上述的weblogic中間件故障自動診斷方法,其中,所述c)中獲取的故障信息包括故障點(diǎn)的堆內(nèi)存使用情況、故障點(diǎn)的線程使用信息、故障點(diǎn)的連接池使用情況、故障點(diǎn)的jms使用情況、故障點(diǎn)的wtc使用情況以及故障點(diǎn)的線程堆棧信息。
[0016]本發(fā)明對比現(xiàn)有技術(shù)有如下的有益效果:本發(fā)明提供的weblogic中間件故障自動診斷方法,通過預(yù)先收集weblogic中間件各個版本的bug信息,預(yù)先定義診斷故障的關(guān)鍵字,統(tǒng)一收集各種故障信息,從而能夠在故障發(fā)生時快速定位,并可通過故障關(guān)鍵字和匹配bug對應(yīng)的補(bǔ)丁號及時解決問題,減少人工干預(yù),實(shí)現(xiàn)自動診斷功能。
【專利附圖】
【附圖說明】
[0017]圖1為本發(fā)明weblogic中間件故障自動診斷流程示意圖;
[0018]圖2為本發(fā)明獲取故障信息及快速定位診斷示意圖。
【具體實(shí)施方式】
[0019]下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步的描述。
[0020]圖1為本發(fā)明weblogic中間件故障自動診斷流程示意圖。
[0021]請參見圖1,本發(fā)明提供的weblogic中間件故障自動診斷方法包括如下步驟:
[0022]步驟S1:預(yù)先收集weblogic中間件各個版本的bug信息;預(yù)先收集bug信息包括weblogic中間件各系列版本的bug列表及bug場景數(shù)據(jù);
[0023]步驟S2:預(yù)先定義診斷故障的關(guān)鍵字;如dead lock、jdbc leak或out of memory等關(guān)鍵字;
[0024]步驟S3:采用Java管理擴(kuò)展方法自動獲取當(dāng)前weblogic中間件運(yùn)行的各種故障信息,并通過所述預(yù)先定義的關(guān)鍵字快速搜索定位診斷故障;比如通過調(diào)用weblogic的jmx接口獲取當(dāng)前weblogic中間件運(yùn)行的各種故障信息;或者修改weblogic啟動腳本后,使用java jmx遠(yuǎn)程功能獲取當(dāng)前weblogic中間件運(yùn)行的各種故障信息。
[0025]步驟S4:從獲取的故障信息中查找各個版本的bug信息,并給出匹配bug對應(yīng)的補(bǔ)丁號;具體可通過對預(yù)先收集的bug場景數(shù)據(jù)與故障信息進(jìn)行比對、過濾,得到匹配bug。
[0026]本發(fā)明提供的weblogic中間件故障自動診斷方法,借助JMX技術(shù)手段,全面自動獲取各種故障信息,并實(shí)現(xiàn)快速定位診斷,如圖2所示;獲取的具體故障信息如下:
[0027](a)獲取故障點(diǎn)的堆內(nèi)存使用情況;
[0028](b)獲取故障點(diǎn)的線程使用信息;
[0029](c)獲取故障點(diǎn)的連接池使用情況;
[0030](d)獲取故障點(diǎn)的jms使用情況;
[0031](e)獲取故障點(diǎn)的wtc使用情況;
[0032](f)獲取故障點(diǎn)的線程堆棧信息;
[0033](g)及其它信息。
[0034]本發(fā)明提供的weblogic中間件故障自動診斷方法,采用如下兩種使用jmx監(jiān)控診斷weblogic的方法:(I)、調(diào)用weblogic的jmx接口實(shí)現(xiàn)(2)、使用java jmx遠(yuǎn)程功能,此功能需要修改weblogic啟動腳本,并重啟server才能生效。
[0035]下面具體介紹第一種方法:
[0036]a.定義接口 WebLogicMBean,該接口繼承了 DynamicMBean (上面描述的dynamic MBean 必須實(shí)現(xiàn)的接口),MBeanRegistrat1n (用于 MBean 在 Agent 注冊),Notif icat1nBroadcaster (用于發(fā)送 Notif icat1n,參見 JMX Notificat1n Model)。所有的weblogic的MBean都是該接口的子類。也就是說,weblogic里面所有的MBean都是dynamic MBean,當(dāng)然,也可以自定義寫一些standard MBean注冊到weblogic的Agent上去。
[0037]WebLogicMBean主要具有以下三種類型的MBeans:
[0038]Administrat1n MBeans,封裝從 conf ig.xml 讀取的整個 weblgoic domain 的配置信息。
[0039]Configurat1n MBeans,每個weblogic server一份,是Administrat1n MBeans的copy,用于server配置自己
[0040]Runtime MBeans,代表著運(yùn)行時刻WebLogic Server的各種組件和子系統(tǒng)。
[0041]本發(fā)明可通過weblogic提供的HTMl形式的控制臺對weblogic的配置操作,最終都通過調(diào)用Administrat1n MBeans實(shí)現(xiàn),在系統(tǒng)運(yùn)行結(jié)束時寫回config.xml配置文件。因此完全可以寫一個Swing格式的控制臺或者來對weblogic進(jìn)行配置?;蛘哒f,對于最終用戶比較關(guān)心的JDBC數(shù)據(jù)源的信息,完全可以寫一個圖形界面來配置。從而不讓用戶通過瀏覽器進(jìn)入weblogic自己帶的console進(jìn)行操作。這樣就可以避免用戶修改一些很關(guān)鍵的系統(tǒng)信息。
[0042]在weblogic server的JMX Agent的視圖里,一個EJB組件,一個JDBC數(shù)據(jù)源都是Runtime MBeans,甚至 weblgoic 自己的 shutdown 類也是一個 Runtime MBeans0 weblogic為各種資源定義了不同的子Runtime MBeans接口。
[0043]比如對大家都熟悉的EJB來說,就定義了接口 EJBRuntimeMBean,而且更詳細(xì)的是,對于不同的Bean還定義了不同子接口,比如:EntityEJBRuntimeMBean, MessageDrivenEJBRuntimeMBean, StatefulEJBRuntimeMBean, StatelessEJBRuntime MBean0
[0044]當(dāng)調(diào)用一個EJB的某個方法時,請求會首先送到JMX的Agent, Agnet根據(jù)請求確定要訪問哪一個Runtime MBeans,然后調(diào)用該Runtime MBeans的方法,這是通過 DynamicMBean 的方法 invoke(java.lang.String act1nName, java.lang.0bject []params, java.lang.String[] signature) (act1nName:要調(diào)用的方法名;params:參數(shù)數(shù)組;signature:該方法的型構(gòu))來實(shí)現(xiàn)的,invoke的返回結(jié)果就是被調(diào)用的ejb的方法的返回結(jié)果。最后,將結(jié)果返回給調(diào)用者。
[0045]b.為MBean定義了 Home接口,這是JMX1.0規(guī)范所沒有的,這樣,對于應(yīng)用程序來說就可以像訪問EJB那樣在遠(yuǎn)程首先通過JNDI查找該MBean的Home接口,獲得Home接口后就可以獲得該MBean,然后,就可以通過MBean對資源進(jìn)行管理操作。這個流程與EJB幾乎完全一樣。
[0046]在獲取相關(guān)數(shù)據(jù)后,根據(jù)自定義的關(guān)鍵字,自動診斷產(chǎn)生問題產(chǎn)生的原因。由于故障原因千奇百怪,故障日志龐大,高效、快速的搜索功能尤為關(guān)鍵,否則將影響診斷的效率,本發(fā)明通過預(yù)先定義診斷故障的關(guān)鍵字,從而對龐大故障日志實(shí)現(xiàn)高效、快速的搜索。為了避免遇到產(chǎn)品本身bug的時候,給自動診斷帶來阻力。本發(fā)明預(yù)先收集weblogic各系列版本的bug列表及bug場景數(shù)據(jù),通過對收集數(shù)據(jù)的比對、過濾,得到bug號及補(bǔ)丁號,從而實(shí)現(xiàn)自動診斷功能;同樣要求高效的搜索的功能。
[0047]綜上所述,本發(fā)明統(tǒng)一收集并獲取關(guān)鍵信息,杜絕了故障當(dāng)時敲入命令、人工抓取等等耗時的工作,從而為故障的快速處理贏得了時間。本發(fā)明將儲存大量的官方故障處理案例,各個weblogic系列版本bug信息;極大得方便分析問題,同時通過強(qiáng)大的搜索功能,基本上可以做到:不用通過網(wǎng)絡(luò)搜索,也能準(zhǔn)確提供解決方案。利用此發(fā)明,能夠最大限度的保證業(yè)務(wù)系統(tǒng)長期、穩(wěn)定運(yùn)行。同時借助本發(fā)明的自動診斷功能,可以在第一時間發(fā)現(xiàn)問題產(chǎn)生原因,為后面的進(jìn)一步分析奠定了基礎(chǔ)。具體優(yōu)點(diǎn)如下:1)、快遞定位。由于所有的數(shù)據(jù)抓取、數(shù)據(jù)分析都是后臺完成,因此也許點(diǎn)擊一個按鈕,問題的原因及解決思路就已經(jīng)展示出來。2)、避免誤操作。人為登陸主機(jī),手工敲入命令的舊的解決的思路將被丟棄。一種全新的處理流程出現(xiàn)。3)、業(yè)務(wù)快速恢復(fù)。由于大大加快了故障的診斷效率,問題得以快速的解決,業(yè)務(wù)中斷的時間也大大降低。4)、避免同類問題再次發(fā)生。在極短的時間內(nèi)獲取到了故障時刻的關(guān)鍵數(shù)據(jù),也贏得了時間,有助與分析問題、解決問題,避免了那種粗暴重啟導(dǎo)致問題再現(xiàn)的可能。
[0048]雖然本發(fā)明已以較佳實(shí)施例揭示如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的修改和完善,因此本發(fā)明的保護(hù)范圍當(dāng)以權(quán)利要求書所界定的為準(zhǔn)。
【權(quán)利要求】
1.一種weblogic中間件故障自動診斷方法,其特征在于,包括如下步驟: a)預(yù)先收集weblogic中間件各個版本的bug信息; b)預(yù)先定義診斷故障的關(guān)鍵字; c)采用Java管理擴(kuò)展方法自動獲取當(dāng)前weblogic中間件運(yùn)行的各種故障信息,并通過所述預(yù)先定義的關(guān)鍵字快速搜索定位診斷故障; d)從獲取的故障信息中查找各個版本的bug信息,并給出匹配bug對應(yīng)的補(bǔ)丁號。
2.如權(quán)利要求1所述的weblogic中間件故障自動診斷方法,其特征在于,所述步驟a)中預(yù)先收集bug信息包括weblogic中間件各系列版本的bug列表及bug場景數(shù)據(jù),所述步驟d)通過對預(yù)先收集的bug場景數(shù)據(jù)與故障信息進(jìn)行比對、過濾,得到匹配bug。
3.如權(quán)利要求1所述的weblogic中間件故障自動診斷方法,其特征在于,所述b)中預(yù)先定義的關(guān)鍵字包括dead lock、jdbc leak或out of memoryo
4.如權(quán)利要求1所述的weblogic中間件故障自動診斷方法,其特征在于,所述步驟c)通過調(diào)用weblogic的jmx接口獲取當(dāng)前weblogic中間件運(yùn)行的各種故障信息。
5.如權(quán)利要求1所述的weblogic中間件故障自動診斷方法,其特征在于,所述步驟c)通過修改weblogic啟動腳本后,使用java jmx遠(yuǎn)程功能獲取當(dāng)前weblogic中間件運(yùn)行的各種故障信息。
6.如權(quán)利要求1所述的weblogic中間件故障自動診斷方法,其特征在于,所述c)中獲取的故障信息包括故障點(diǎn)的堆內(nèi)存使用情況、故障點(diǎn)的線程使用信息、故障點(diǎn)的連接池使用情況、故障點(diǎn)的jms使用情況、故障點(diǎn)的wtc使用情況以及故障點(diǎn)的線程堆棧信息。
【文檔編號】G06F11/36GK104503903SQ201410767183
【公開日】2015年4月8日 申請日期:2014年12月12日 優(yōu)先權(quán)日:2014年12月12日
【發(fā)明者】程永新, 徐華春, 劉韜 申請人:上海新炬網(wǎng)絡(luò)信息技術(shù)有限公司