專利名稱:用于診斷應(yīng)用程序的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機程序的故障診斷。更具體地說,本發(fā)明涉及利 用環(huán)境復(fù)制來診斷應(yīng)用程序的方法、系統(tǒng)和計算機程序產(chǎn)品。
背景技術(shù):
隨著互聯(lián)網(wǎng)的迅猛發(fā)展和WWW應(yīng)用的快速增長,Java語言成 為互聯(lián)網(wǎng)上受到廣泛歡迎的開發(fā)與編程語言。目前Java家族中包括三 個主要的成員J2ME(Java 2 Micro Edition, Java 2微型版)、 J2SE(Java 2 Standard Edition, Java 2標(biāo)準(zhǔn)版)、和J2EE (Java 2 Enterprise Edition, Jave2企業(yè)版)。其中,J2EE由于具有跨平臺可 移植性、可獲得開放源碼庫、具有巨大的服務(wù)器端部署庫、以及涵蓋 大多數(shù)W3C(萬維網(wǎng)聯(lián)盟)標(biāo)準(zhǔn)等優(yōu)點,在企業(yè)應(yīng)用程序開發(fā)中非常 受歡迎。目前,在J2EE服務(wù)器上運行著數(shù)以百萬計的J2EE應(yīng)用程 序,而且越來越多的J2EE應(yīng)用程序正在開發(fā)中。隨著J2EE應(yīng)用程序的流行,調(diào)試和問題確定(problem determiimtion )成為一個重要的問題。目前已經(jīng)發(fā)布了幾個與該問題 相關(guān)的標(biāo)準(zhǔn),例如"Java管理擴展規(guī)范(Java Management Extensions(JMX) Specification )"、"日志API規(guī)范(Logging API Specification ( JSR47)),,、和"Java虛擬機的監(jiān)視和管理規(guī)范 (Monitoring and Management Specificaiton for the Java Virtual Machine ( JSR174 )),,,等等。對系統(tǒng)進行診斷時所發(fā)現(xiàn)的問題例如可以分為以下五個類別(1) 功能或集成錯誤;(2) 性能不良;(3) 崩潰;(4) 掛起;(5) 存儲器泄露。在上面列出的五種問題中,后三種問題是難以檢測的。原因在于 它們通常出現(xiàn)在高容量的情況下,或者出現(xiàn)在長時間運行之后。因此, 通常難以獲取足夠的信息以用于問題確定??赡艹霈F(xiàn)問題的方面包括 JVM (Java虛擬機)本身、本機碼(native code) 、 Java應(yīng)用程序、 系統(tǒng)或系統(tǒng)資源、子系統(tǒng)(例如數(shù)據(jù)庫節(jié)點)、硬件,等等。在遵循J2EE標(biāo)準(zhǔn)的各種應(yīng)用服務(wù)器環(huán)境中提供了 一些可用于問 題確定的信息,例如包括Java轉(zhuǎn)儲(JavaDump ):當(dāng)JVM意外終止時默認地產(chǎn)生該Java 轉(zhuǎn)儲數(shù)據(jù),該數(shù)據(jù)概括了 JVM在該時刻的狀態(tài);堆轉(zhuǎn)儲(HeapDump ):堆轉(zhuǎn)儲數(shù)據(jù)根據(jù)用戶的請求產(chǎn)生。對于 堆轉(zhuǎn)儲的定時的更精確的控制也可以利用Xdump:heap選項來規(guī)定;系統(tǒng)轉(zhuǎn)儲(SystemDump ):該系統(tǒng)轉(zhuǎn)儲數(shù)據(jù)也是由JVM產(chǎn)生 的,它包含關(guān)于活動的進程、線程和系統(tǒng)存儲器的信息,并通過 Xdump:system選項來規(guī)定;跟蹤數(shù)據(jù)(Trace data):該文件包含運行中的JVM所收集的詳細數(shù)據(jù);快照跟蹤(Snap trace):該文件包含運行中的JVM所收集的少 量跟蹤數(shù)據(jù),與通常的跟蹤數(shù)據(jù)相似;剖析(Profiling):該文件是一種較高級別的日志文件,能夠?qū)?yīng) 用服務(wù)器的活動提供非常詳細的記錄;垃圾收集數(shù)據(jù)(Garbage collection data ):該數(shù)據(jù)由JVM利用 verbose:gc選項產(chǎn)生,它用來分析在戶應(yīng)用程序的垃圾收集中的問題;以及可以用于問題確定的其他數(shù)據(jù),例JIT ( Just In Time)數(shù)據(jù)、 類加栽數(shù)據(jù)、和共享的類,等等。盡管以上這些信息可以用于問題確定,用戶仍然面臨在成本與有 用性之間進行選擇的兩難境地。 一方面,應(yīng)用服務(wù)器在運行中有可能 意外地崩潰/轉(zhuǎn)儲,而無法預(yù)測其時間。找到崩潰的原因是一件很困難的事情。盡管系統(tǒng)提供了一些最基本的可用于分析問題的信息,包括基本的日志文件(例如SystemOut.log等等)和前面提到過的轉(zhuǎn)儲文件, 但是基本的日志文件不能提供關(guān)于應(yīng)用服務(wù)器的活動的足夠詳細的信 息,因而僅僅依賴這些日志文件不足以在應(yīng)用服務(wù)器發(fā)生崩潰的情況 下確定問題,而通常的轉(zhuǎn)儲文件僅包含應(yīng)用服務(wù)器轉(zhuǎn)儲時的當(dāng)前狀態(tài), 而不包含其活動的歷史記錄,因此也不足以確定問題。另一方面,如 果用戶在運行時打開用于診斷的日志/跟蹤功能以詳細地記錄應(yīng)用服 務(wù)器的活動,則系統(tǒng)性能將嚴重惡化,因為這些日志/跟蹤功能的啟用 會占用大量的存儲空間并使系統(tǒng)的運行速度顯著下降,并且還有可能 引起意想不到的問題。另外,太多的日志/跟蹤數(shù)據(jù)意味著知識爆炸, 同樣使得用戶很難確定問題。因此,在生產(chǎn)環(huán)境中,打開這樣的用于 診斷的日志/跟蹤功能是不切實際的。圖1中示出了各種問題確定手段的有用性與其實現(xiàn)成本之間的關(guān) 系。從圖1中可以看出,具有較高有用性的手段意味著更高的成本, 因此在生產(chǎn)環(huán)境中是難以實施的。發(fā)明內(nèi)容本發(fā)明的主要目的是克服現(xiàn)有技術(shù)中的上述問題,提供一種能夠 在不影響應(yīng)用服務(wù)器的運行性能的情況下,使用戶容易地對應(yīng)用程序 進行診斷的方法、系統(tǒng)和計算機程序產(chǎn)品。根據(jù)本發(fā)明的一個方面,提供一種能夠?qū)?yīng)用程序進行診斷的系 統(tǒng),該系統(tǒng)包括所述應(yīng)用程序的主運行環(huán)境及其至少一個影子環(huán)境, 所述影子環(huán)境是通過對所述主運行環(huán)境進行復(fù)制而得到的,該系統(tǒng)還 包括所述主運行環(huán)境中的診斷模塊和所述影子環(huán)境中的診斷模塊,二 者之間關(guān)于應(yīng)用程序的故障而進行交互作用。優(yōu)選地,所述主運行環(huán) 境中的診斷模塊包括異常監(jiān)視器,用于監(jiān)視系統(tǒng)異常的發(fā)生;和異 常通知器,用于在所述異常監(jiān)視器發(fā)現(xiàn)系統(tǒng)異常的情況下,將系統(tǒng)異 常信息發(fā)送給所述影子環(huán)境;并且,所述影子環(huán)境中的診斷模塊包括: 異常接收器,用于與所述異常通知器相通信,以接收所述系統(tǒng)異常信息;診斷管理器,用于根據(jù)所述異常接收器接收到的所述系統(tǒng)異常信 息,打開用于診斷的日志/跟蹤功能,從而獲得與所述系統(tǒng)異常有關(guān)的診斷日志/跟蹤文件;和診斷分析器,用于根據(jù)所述診斷管理器獲得的 診斷日志/跟蹤文件,分析診斷結(jié)果。根據(jù)本發(fā)明的另一個方面,提供一種用于診斷應(yīng)用程序的方法, 包括以下步驟復(fù)制所述應(yīng)用程序的主運行環(huán)境,從而得到其至少一 個影子環(huán)境;以及所述主運行環(huán)境與所述影子環(huán)境關(guān)于應(yīng)用程序的故 障而進行交互作用。優(yōu)選地,所述主運行環(huán)境與所述影子環(huán)境之間的 交互作用包括在所述主運行環(huán)境中執(zhí)行下述步驟監(jiān)視系統(tǒng)異常的 發(fā)生;和在發(fā)現(xiàn)系統(tǒng)異常的情況下,將系統(tǒng)異常信息發(fā)送給所述影子 環(huán)境;以及,在所述影子環(huán)境中執(zhí)行下述步驟從所述主運行環(huán)境接 收所述系統(tǒng)異常信息,根據(jù)接收到的所述系統(tǒng)異常信息,打開用于診 斷的日志/跟蹤功能,從而獲得與所述系統(tǒng)異常有關(guān)的診斷日志/跟蹤 文件;和根據(jù)獲得的診斷日志/跟蹤文件,分析診斷結(jié)果。根據(jù)本發(fā)明的另一個方面,提供一種計算機程序產(chǎn)品,包括程序 代碼,當(dāng)所述程序代碼被計算機執(zhí)行時,使得計算機執(zhí)行本發(fā)明的應(yīng) 用程序診斷方法。與對應(yīng)用程序進行問題確定的現(xiàn)有方法相比,本發(fā)明的優(yōu)點是, 當(dāng)應(yīng)用程序中出現(xiàn)異常時,系統(tǒng)可以自動地在"影子環(huán)境"(或者稱 為"副運行環(huán)境")中打開用于診斷的日志/跟蹤功能,因此能夠詳細 地記錄應(yīng)用服務(wù)器的活動而不影響主運行環(huán)境中的應(yīng)用服務(wù)器的運行 性能。當(dāng)主運行環(huán)境中的實例由于故障而崩潰時,則可以打開影子環(huán) 境中的另一個實例的詳細記錄來對應(yīng)用程序的故障進行診斷。另外, 由于在影子環(huán)境中記錄的僅僅是與系統(tǒng)異常相關(guān)的信息,因此用戶可 以根據(jù)所得到的診斷日志/跟蹤文件容易地檢測到應(yīng)用服務(wù)器中發(fā)生 的動作并找到故障原因,降低了應(yīng)用服務(wù)器的工作負荷并能夠?qū)崿F(xiàn)按 需記錄錯誤,從而優(yōu)化了基于集成開發(fā)環(huán)境的日志機制。本發(fā)明既可 以用作基于集成開發(fā)環(huán)境開發(fā)應(yīng)用程序的設(shè)計時工具,也可以用作運 行時工具。
根據(jù)以下參照附圖對本發(fā)明優(yōu)選實施例的詳細描述,本發(fā)明的上 述及其它目的、特征和優(yōu)點將變得更加清楚,附圖中采用相同或相似 的標(biāo)記來表示相同或相似的部件。圖1中示出了各種問題確定手段的有用性與實現(xiàn)成本之間的關(guān)系;圖2示意性地說明了本發(fā)明的利用環(huán)境復(fù)制來對應(yīng)用程序進行診 斷的原理;圖3示出了根據(jù)本發(fā)明優(yōu)選實施例的、能夠?qū)?yīng)用程序進行診斷 的系統(tǒng)的示意性框圖;圖4示出了根據(jù)本發(fā)明優(yōu)選實施例的、用于診斷應(yīng)用程序的方法 的流程圖。
具體實施方式
圖2示意性地說明了本發(fā)明的利用環(huán)境復(fù)制來對應(yīng)用程序進行診 斷的原理。本發(fā)明的核心思想是根據(jù)應(yīng)用程序的主運行環(huán)境復(fù)制一 個或多個影子環(huán)境,該影子環(huán)境專門用來進行應(yīng)用程序的故障診斷。 本具體實施方式
部分基于一個影子環(huán)境進行說明,但本領(lǐng)域技術(shù)人員 根據(jù)本發(fā)明必然明了,兩個或兩個以上的影子環(huán)境同樣能夠解決本發(fā) 明的技術(shù)問題并取得相應(yīng)的技術(shù)效果,且本領(lǐng)域技術(shù)人員基于本發(fā)明 由一個影子環(huán)境構(gòu)造更多的影子環(huán)境不需要任何創(chuàng)造性的勞動。當(dāng)運 行應(yīng)用程序時,分別啟動主運行環(huán)境及其影子環(huán)境。與此同時,也分 別在這兩個環(huán)境中啟動了 "輕量級"診斷(S201和S203)。所謂"輕 量級"診斷,是指根據(jù)系統(tǒng)提供的一些基本信息對系統(tǒng)狀態(tài)進行監(jiān)視, 以便監(jiān)視系統(tǒng)中發(fā)生的異常事件。當(dāng)在主運行環(huán)境中檢測到系統(tǒng)異常 事件時(S205),則將其匯報給影子環(huán)境,并在影子環(huán)境中啟動"重量 級"診斷(S207),而主運行環(huán)境繼續(xù)照常工作。所謂"重量級"診斷, 是指打開用于診斷的日志/跟蹤功能,以便詳細地記錄應(yīng)用服務(wù)器的運行信息以供診斷分析使用。然后,在影子環(huán)境中,根據(jù)在"重量級" 診斷中獲得的詳細的診斷日志/跟蹤文件進行應(yīng)用程序的診斷分析,從而識別問題并采取相應(yīng)的措施。需要指出的是,圖2僅僅是為了說明本發(fā)明的原理而在時間軸上示意性地而非按比例地表示出應(yīng)用程序診 斷系統(tǒng)的工作流。圖3示出了根據(jù)本發(fā)明優(yōu)選實施例的、對J2EE應(yīng)用程序進行診斷 的系統(tǒng)300的示意性框圖。該系統(tǒng)300包括J2EE應(yīng)用程序304的主運行環(huán)境302。該主運 行環(huán)境302可以實現(xiàn)在符合J2EE標(biāo)準(zhǔn)的應(yīng)用服務(wù)器平臺、例如IBM 公司的WebSphere應(yīng)用服務(wù)器平臺(包括WebSphere Application Server 5.X版、WebSphere Application Server 6.X版,等等)上。 WebSphere應(yīng)用服務(wù)器平臺用來部署作為Java服務(wù)器方代碼實現(xiàn)的 應(yīng)用程序304,并且能夠在Microsoft公司的Windows NT與Windows 2000操作系統(tǒng)上使用,也可以在大多數(shù)UNIX操作系統(tǒng)變體(例如 Sun Solaris、 IBM AIX、 HP-UX)以及IBM AS/400操作系統(tǒng)上使用, 作為應(yīng)用程序與操作系統(tǒng)之間的中間件。WebSphere應(yīng)用服務(wù)器平臺 的集成開發(fā)環(huán)境316則嚢括了 J2EE應(yīng)用程序304的構(gòu)建、測試與部 署的整個生命周期,為WebSphere應(yīng)用服務(wù)器提供了完整的開發(fā)、測 試環(huán)境。集成開發(fā)環(huán)境316例如可以由WebSphere產(chǎn)品家族中的 WSAD( WebSphere Studio Application Developer )或者RAD(Rational Application Developer)來實現(xiàn)。系統(tǒng)300還包括一個影子環(huán)境302'(或稱為"副運行環(huán)境"), 專門用于應(yīng)用程序的診斷。該影子環(huán)境302'是通過對主運行環(huán)境302 進行復(fù)制而得到的。所謂的"復(fù)制",指的是基于與主運行環(huán)境302 同樣的Websphere應(yīng)用服務(wù)器平臺或WebBlog應(yīng)用服務(wù)器(并且注 意,上述應(yīng)用服務(wù)器只是示例性的,事實上任何應(yīng)用服務(wù)器中間件都 是適合的),按照與主運行環(huán)境302中的應(yīng)用程序304同樣的方式部 署一個相同的應(yīng)用程序304,。主運行環(huán)境302和影子環(huán)境302'中的集成開發(fā)環(huán)境316、 316,并不是必須的。在優(yōu)選的實施方式中,應(yīng)用 程序304'的集成開發(fā)環(huán)境316'與應(yīng)用程序304的集成開發(fā)環(huán)境316 相同,但本發(fā)明不限于此,而是可以采用不同的集成開發(fā)環(huán)境來構(gòu)建、 測試與部署應(yīng)用程序304和304'。為了實現(xiàn)應(yīng)用程序的診斷,系統(tǒng)300還包括分別位于主運行環(huán)境 302和影子環(huán)境302'中的診斷模塊301和301,。如下面將詳細說明的, 這兩個診斷模塊之間將關(guān)于應(yīng)用程序的故障而進行交互作用,事實上主 運行環(huán)境302和影子環(huán)境302,中的診斷模塊并不限于只有一個,而是可 以有多個。另外可以進行相互作用或者相互間通訊的各種診斷模塊都是 適合于本發(fā)明的。作為優(yōu)選,診斷模塊301和301,分別包括以下子模塊 異常監(jiān)視器306和306'、異常通知器308和308'、異常接收器314和314'、 診斷管理器310和310,,以及診斷分析器312和312,。需要說明的是, 由于影子環(huán)境302'是主運行環(huán)境302的副本,因此圖3中示出診斷模塊 301,包括與診斷模塊301中的子模塊306-314同樣的子模塊306, -314,。 但是,在執(zhí)行應(yīng)用程序診斷的過程中,主運行環(huán)境中302和影子環(huán)境302, 中起作用的子模塊是不同的。在圖3所示的實施例中,參與應(yīng)用程序診 斷的子模塊包括主運行環(huán)境302中的異常監(jiān)視器306和異常通知器308, 以及影子環(huán)境302,中的異常接收器314'、診斷管理器310'和診斷分析 器312',而其他子模塊不參與應(yīng)用程序的診斷。當(dāng)然,這是從描述本實施例的角度而言的。在實際應(yīng)用中,由于兩 個運行環(huán)境302和302,是完全相同的,所以其中任一個環(huán)境都可以作為 主運行環(huán)境,而另外一個環(huán)境則作為該主運行環(huán)境的"影子"環(huán)境。在 圖3中所示的環(huán)境302,作為主運行環(huán)境而環(huán)境302作為其影子環(huán)境的情 況下,參與應(yīng)用程序診斷的子模塊相應(yīng)地變?yōu)榄h(huán)境302,中的異常監(jiān)視器 306,和異常通知器308',以及環(huán)境302中的異常接收器314、診斷管理 器310和診斷分析器312。診斷模塊301中的異常監(jiān)視器306用于對系統(tǒng)的狀態(tài)進行監(jiān)視, 以便監(jiān)視系統(tǒng)異常事件的發(fā)生。例如,當(dāng)系統(tǒng)日志文件中有異常信息、例如SystemErr.log時,異常監(jiān)視器306分析該鐐溪消息以便識別錯誤類 別。異常通知器308用于將異常監(jiān)視器306檢測到的異常信息連同識別 出的錯誤類別發(fā)送到影子環(huán)境302'。影子環(huán)境302'的診斷模塊301,中 的異常接收器314,用于與主運行環(huán)境302中的異常通知器308相通信, 并從異常通知器308接收所述異常信息。診斷管理器310'用于根據(jù)所 述異常接收器314,接收到的所述系統(tǒng)異常信息,打開與其相關(guān)的、 用于診斷的日志/跟蹤功能,從而獲得與該系統(tǒng)異常有關(guān)的診斷日志/ 跟蹤文件。診斷分析器312'用于根據(jù)所述診斷管理器310,獲得的診 斷日志/跟蹤文件,分析診斷結(jié)果。
圖4詳細示出了根據(jù)本發(fā)明優(yōu)選實施例的、用于診斷應(yīng)用程序的 方法400的流程圖。
首先,在步驟402,對應(yīng)用程序304的主運4亍環(huán)境302進行復(fù)制, 得到一個影子環(huán)境302,,以便用來進行應(yīng)用程序的故障診斷。根據(jù)優(yōu) 選的實施方式,所述影子環(huán)境302'包括與主運行環(huán)境302中的集成 開發(fā)環(huán)境316相同的集成開發(fā)環(huán)境316,,以及部署在其上的、與主 運行環(huán)境302中的應(yīng)用程序304相同的應(yīng)用程序304'。
在步驟404,啟動主運行環(huán)境302和影子環(huán)境302'中的集成開 發(fā)環(huán)境316和316'。
在步驟406,主運行環(huán)境302中的異常監(jiān)視器306監(jiān)視系統(tǒng)中的 異常事件,例如內(nèi)存不足、堆棧溢出、線程中斷、線程死鎖、找不到 指定的文件、輸入輸出處理錯誤、數(shù)據(jù)庫處理錯誤,等等。作為示例, 異常監(jiān)視器306可以通過監(jiān)視系統(tǒng)日志文件來監(jiān)視異常事件的發(fā)生。 在運行中,WebSphere應(yīng)用服務(wù)器將系統(tǒng)消息寫到一些基本的日志文 件中。這些日志文件例如包括JVM(標(biāo)準(zhǔn))日志,該日志通過將JVM 的System.out和System.err流重定向到獨立的日志文件而創(chuàng)建。 WebSphere應(yīng)用服務(wù)器將格式化的消息寫到System.out流。另外, 應(yīng)用程序和其他代碼可以寫入這些流,這通過^f吏用流定義的print() 和println()方法實現(xiàn)。在默認的情況下,經(jīng)重定向而創(chuàng)建的日志文件4皮存儲為<WAS_HOME>/logs/<server_name>/SystemOut.log文件 和 <WAS—HOME>/logs/<server—nameWSystemEir.log文件 。 System.out日志用于監(jiān)控正在運行的WebSphere應(yīng)用服務(wù)器的狀態(tài)是 否正常,而System.err日志則包含異常堆棧信息。日志條目的基本格 式例如為
<時間戳〉 <線程ID> <組件> <事件類型> <消息ID> <消息>。
當(dāng)在步驟406中異常監(jiān)視器306發(fā)現(xiàn)系統(tǒng)日志文件中有異常信息、 例如SystemErr.log文件時,異常監(jiān)視器306在步驟410中分析該錯誤消 息并通過例如關(guān)鍵字匹配的方式識別餘溪類別。
在步驟412,主運行環(huán)境302中的異常通知器308將異常監(jiān)視器 306檢測到的異常信息連同所識別的錯誤類別發(fā)送到影子環(huán)境302,。影 子環(huán)境302'中的異常接收器314'用于接收該異常信息及識別的錯誤類 別。根據(jù)本優(yōu)選實施例,主運行環(huán)境302中的異常通知器308與影子 環(huán)境302,中的異常接收器314'之間采用TCP Socket方式進行通信, 其中異常接收器314,持續(xù)監(jiān)聽主運行環(huán)境302中的特定端口是否有連接 請求,異常通知器308發(fā)出連接請求后,異常接收器314,向其發(fā)回確 認消息,從而在二者之間建立起連接,用于異常信息的發(fā)送。本領(lǐng)域技 術(shù)人員可以理解,主運行環(huán)境302與影子環(huán)境302'之間也可以采用其 他任何合適的方式進行通信。
接下來,在步驟422,影子環(huán)境302,中的診斷管理器310'開 始應(yīng)用程序診斷。
在步驟424,診斷管理器310'按照策略自動地打開一組預(yù)定的、 用于診斷的日志功能(例如剖析功能、IBM活動日志功能)和/或跟蹤 功能,以便詳細地記錄與所接收的異常信息相關(guān)的運行信息。這可以 通過JMX調(diào)用打開日志/跟蹤功能或者通過系統(tǒng)開關(guān)打開日志/跟蹤功 能來完成。
在步驟426,影子環(huán)境302'中的診斷分析器312'根據(jù)所迷診 斷管理器310'獲得的診斷日志/跟蹤文件,分析診斷結(jié)果。該診斷分沖斤器312'例如可以由Websphere應(yīng)用月PL務(wù)器平臺提供的日志分析器 來實現(xiàn)。該日志分析器是一種圖形化用戶接口 (GUI)診斷工具,可 以讀取一個或多個日志/跟蹤,合并所有數(shù)據(jù)并依次顯示日志/跟蹤條
目。優(yōu)選地,該診斷工具自帶一個XML數(shù)據(jù)庫即"癥狀數(shù)據(jù)庫 (Symptom database),,,其包含一些常見問題的信息串、錯誤原因 以及恢復(fù)步驟。日志分析器自動地將診斷日志/跟蹤文件中的每個錯誤 記錄與癥狀數(shù)據(jù)庫中的已知問題的集合相比較并顯示匹配項,使得用 戶可以獲得錯誤消息的解釋、和有關(guān)錯誤原因及如何恢復(fù)錯誤的信息。 由此,本發(fā)明提供了 一種利用環(huán)境復(fù)制的應(yīng)用程序診斷方法和系 統(tǒng)。本發(fā)明可以釆取全部硬件實現(xiàn)、全部軟件實現(xiàn)或者包含硬件和軟 件元素兩者實現(xiàn)的形式。在優(yōu)選的實施例中,本發(fā)明是以軟件方式實 現(xiàn)的,其包括但不局限于固件、常駐軟件、微代碼等等。
此外,本發(fā)明可以采取計算機程序產(chǎn)品的形式,并可以從計算機 可讀介質(zhì)訪問。該計算機可讀介質(zhì)提供程序代碼以結(jié)合計算機或者任 何指令執(zhí)行系統(tǒng)來使用。所述計算機可讀介質(zhì)可以是電子的、磁性的、 光學(xué)的、電磁的、紅外的或者半導(dǎo)體器件或裝置。計算機可讀介質(zhì)的 具體例子包括半導(dǎo)體或者固態(tài)存儲器、磁帶、可移動的計算機軟盤、 隨機存取存儲器(RAM)、只讀存儲器(ROM)、硬磁盤和光盤。 光盤的當(dāng)前示例包括光盤只讀存儲器(CD-ROM)、讀/寫光盤 (CD-R/W)和數(shù)字多用盤(DVD),等等。
上面已經(jīng)參照特定實施例對本發(fā)明進行了詳細描述。但是,對優(yōu) 選實施例的詳細描述僅僅是示例性的,而不應(yīng)被理解為限制性的。例如, 在說明書中是結(jié)合IBM公司的Websphere應(yīng)用服務(wù)器平臺來描述本發(fā)明 的。但是本領(lǐng)域技術(shù)人員可以理解,本發(fā)明不限于此,而是也可以應(yīng)用 于遵循J2EE標(biāo)準(zhǔn)的其他應(yīng)用服務(wù)器平臺、例如BEA公司的WebLogic 應(yīng)用服務(wù)器平臺,等等。另外,本發(fā)明也不限于J2EE標(biāo)準(zhǔn),而是可以 應(yīng)用于基于遵循任何工業(yè)標(biāo)準(zhǔn)的集成開發(fā)環(huán)境的應(yīng)用程序開發(fā)、測試過 程。在不脫離本發(fā)明的精神和范圍的情況下,本領(lǐng)域的技術(shù)人員可以 進行各種修改和替換。本申請的保護范圍應(yīng)該由后附的權(quán)利要求書來確 定。
權(quán)利要求
1. 一種用于對應(yīng)用程序進行診斷的系統(tǒng),包括所述應(yīng)用程序的主運行環(huán)境及其至少一個影子環(huán)境,所述影子環(huán)境是通過對所述主運行環(huán)境進行復(fù)制而得到的,該系統(tǒng)還至少包括所述主運行環(huán)境中的診斷模塊和所述影子環(huán)境中的診斷模塊,二者之間可以關(guān)于應(yīng)用程序的故障而進行交互作用。
2、 如權(quán)利要求l所述的系統(tǒng),其中所述主運行環(huán)境中的診斷模 塊與所述影子環(huán)境中的診斷模塊之間的交互作用包括系統(tǒng)異常信息的 交換。
3、 如權(quán)利要求l、 2中任一項所述的用于對應(yīng)用程序進行診斷的 系統(tǒng),其中所述主運行環(huán)境中的診斷模塊包括 異常監(jiān)視器,用于監(jiān)視系統(tǒng)異常的發(fā)生;和 異常通知器,用于在所述異常監(jiān)視器發(fā)現(xiàn)系統(tǒng)異常的情況下,將 系統(tǒng)異常信息發(fā)送給所述影子環(huán)境; 并且,所述影子環(huán)境中的診斷模塊包括異常接收器,用于與所述異常通知器相通信,以接收所述系統(tǒng)異診斷管理器,用于根據(jù)所述異常接收器接收到的所述系統(tǒng)異常信 息,打開用于診斷的日志/跟蹤功能,從而獲得與所述系統(tǒng)異常有關(guān)的診斷日志/跟蹤文件;和診斷分析器,用于根據(jù)所述診斷管理器獲得的診斷日志/跟蹤文 件,分析診斷結(jié)果。
4、 如權(quán)利要求3所述的用于對應(yīng)用程序進行診斷的系統(tǒng),其中 所述異常監(jiān)視器通過監(jiān)視基本的系統(tǒng)日志文件來監(jiān)視所述系統(tǒng)異常的 發(fā)生。
5、 如權(quán)利要求3所述的用于對應(yīng)用程序進行診斷的系統(tǒng),其中所述主運行環(huán)境中的異常通知器與所述影子環(huán)境中的異常接收器之間的通信是Socket通信。
6、 如權(quán)利要求3所述的用于對應(yīng)用程序進行診斷的系統(tǒng),其中 通過JMX調(diào)用或者系統(tǒng)開關(guān)打開所述用于診斷的日志/跟蹤功能。
7、 如權(quán)利要求3所述的用于對應(yīng)用程序進行診斷的系統(tǒng),其中 所述系統(tǒng)遵循J2EE標(biāo)準(zhǔn),并且所述主運行環(huán)境和所述影子環(huán)境實現(xiàn) 在WebSphere應(yīng)用服務(wù)器平臺或WebLogic應(yīng)用服務(wù)器平臺上。
8、 一種用于診斷應(yīng)用程序的方法,包括以下步驟復(fù)制所述應(yīng)用程序的主運行環(huán)境,從而得到其至少 一個影子環(huán) 境;以及所述主運行環(huán)境與所述影子環(huán)境關(guān)于應(yīng)用程序的故障而進行交 互作用。
9、 如權(quán)利要求8所述的方法,其中所述交互作用包括系統(tǒng)異常 信息的交換。
10、 如權(quán)利要求8、 9中任一項所述的用于診斷應(yīng)用程序的方法, 所述主運行環(huán)境與所述影子環(huán)境之間的交互作用包括在所述主運行環(huán)境中執(zhí)行下述步驟 監(jiān)視系統(tǒng)異常的發(fā)生;和在發(fā)現(xiàn)系統(tǒng)異常的情況下,將系統(tǒng)異常信息發(fā)送給所述影子環(huán)境;以及,在所述影子環(huán)境中執(zhí)行下述步驟 從所述主運行環(huán)境接收所述系統(tǒng)異常信息, 根據(jù)接收到的所述系統(tǒng)異常信息,打開用于診斷的日志/跟蹤功 能,從而獲得與所述系統(tǒng)異常有關(guān)的診斷日志/跟蹤文件;和 根據(jù)獲得的診斷日志/跟蹤文件,分析診斷結(jié)果。
11、 如權(quán)利要求10所述的用于診斷應(yīng)用程序的方法,其中通過 監(jiān)視基本的系統(tǒng)日志文件來監(jiān)視所述系統(tǒng)異常的發(fā)生。
12、 如權(quán)利要求10所述的用于診斷應(yīng)用程序的方法,其中所述主運行環(huán)境與所述影子環(huán)境之間的通信為Socket通信。
13、 如權(quán)利要求10所述的用于診斷應(yīng)用程序的方法,其中通過 JMX調(diào)用或者系統(tǒng)開關(guān)打開所述用于診斷的日志/跟蹤功能。
14、 如權(quán)利要求10所述的用于診斷應(yīng)用程序的方法,其中所述 方法遵循J2EE標(biāo)準(zhǔn),并且所述主運行環(huán)境和所述影子環(huán)境實現(xiàn)在 WebSphere應(yīng)用服務(wù)器平臺或WebLogic應(yīng)用服務(wù)器平臺上。
15、 一種計算機程序產(chǎn)品,包括程序代碼,當(dāng)所述程序代碼被計 算機執(zhí)行時,使得計算機執(zhí)行如權(quán)利要求8-14中任何一項所述的應(yīng)用 程序診斷方法。
全文摘要
一種用于診斷應(yīng)用程序的方法,包括步驟復(fù)制應(yīng)用程序的主運行環(huán)境,從而得到其影子環(huán)境;以及主運行環(huán)境與影子環(huán)境關(guān)于應(yīng)用程序的故障而進行交互作用。其中,在主運行環(huán)境中執(zhí)行步驟監(jiān)視系統(tǒng)異常的發(fā)生;和在發(fā)現(xiàn)系統(tǒng)異常的情況下,將系統(tǒng)異常信息發(fā)送給所述影子環(huán)境;以及在影子環(huán)境中執(zhí)行步驟從所述主運行環(huán)境接收系統(tǒng)異常信息,打開用于診斷的日志/跟蹤功能,從而獲得與系統(tǒng)異常有關(guān)的診斷日志/跟蹤文件;和根據(jù)獲得的診斷日志/跟蹤文件,分析診斷結(jié)果。本發(fā)明還提供用于實現(xiàn)上述應(yīng)用程序診斷方法的系統(tǒng)和計算機程序產(chǎn)品。本發(fā)明可以使用戶容易地對應(yīng)用程序進行診斷而不影響應(yīng)用服務(wù)器的運行性能,優(yōu)化了基于集成開發(fā)環(huán)境的日志機制。
文檔編號G06F11/36GK101226499SQ200710001769
公開日2008年7月23日 申請日期2007年1月16日 優(yōu)先權(quán)日2007年1月16日
發(fā)明者蘭東俊, 萌 葉, 王慶波, 龍 程, 瀅 陳 申請人:國際商業(yè)機器公司