專利名稱::用于監(jiān)視服務(wù)器性能的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般地涉及從客戶機監(jiān)視服務(wù)器性能的方法和系統(tǒng)。特別地本發(fā)明涉及捕獲關(guān)于每個被執(zhí)行的小服務(wù)程序(servlet)內(nèi)部狀態(tài)(特征)的數(shù)據(jù)。
背景技術(shù):
:當(dāng)使用因特網(wǎng)時,一個客戶機可能使用不同的協(xié)議,如萬維網(wǎng)(WWW)中的超文本傳送協(xié)議(HTTP),來與服務(wù)器進行通信。該協(xié)議使用統(tǒng)一資源定位符(URL)來指向因特網(wǎng)上的文件、目錄、或者復(fù)雜的任務(wù)。一個復(fù)雜的任務(wù)可能包含Web服務(wù)器對一個小服務(wù)程序的執(zhí)行。客戶瀏覽器可以通過萬維網(wǎng)用HTTP協(xié)議將HTTP請求發(fā)送到服務(wù)器。當(dāng)接收到該請求時,客戶機將指定小服務(wù)程序?qū)λ稣埱筮M行適當(dāng)?shù)奶幚?。小服?wù)程序執(zhí)行他們的復(fù)雜任務(wù)并作為超文本標(biāo)記語言(HTML)文檔向客戶瀏覽器返回數(shù)據(jù)。其他與該客戶瀏覽器兼容的數(shù)據(jù)格式,比如可擴展標(biāo)記語言(XML),也同樣可以用于該返回數(shù)據(jù)。小服務(wù)程序因此增強了Web服務(wù)器的功能性。雖然主要與HTTP協(xié)議一起使用,但是小服務(wù)程序也可以使用其他的技術(shù)。小服務(wù)程序通常用Java源代碼來進行編寫,然后被編譯并安裝在支持小服務(wù)程序的Web服務(wù)器上,例如ApacheSoftwareFoundation的ApacheHTTP服務(wù)器,F(xiàn)orest·Hills,MD或者SunMicrosystems公司的JavaWeb服務(wù)器。提供Web服務(wù)器能力(capability)的公司需要在運行Java或者其他小服務(wù)程序時監(jiān)視他們的服務(wù)器的性能,如響應(yīng)時間和操作特性。例如,目前的服務(wù)器可能每周執(zhí)行150萬個(次)小服務(wù)程序。這種監(jiān)視是用來保證提供可接受的服務(wù)器能力所必須的。否則,Web服務(wù)器能力的人類用戶將不滿意并轉(zhuǎn)向使用競爭對手的能力。因此開發(fā)了許多用于監(jiān)視的支持工具?!半娮由虅?wù)應(yīng)用監(jiān)視工具”(“e-businessapplicationmonitoringtool”,該文章發(fā)表于2001年2月的期刊“ResearchDisclosure”,第322頁)描述了使用ping/ping答復(fù)測試來檢查服務(wù)器的存在。該文章還描述了檢查一個進程ID(PID)是否存在于服務(wù)器上從而保證一個應(yīng)用(小服務(wù)程序)在服務(wù)器上啟動并運行。這篇發(fā)表于“ResearchDisclosure”的文章還描述了一種用來測試服務(wù)器上應(yīng)用功能的工具。一個應(yīng)用監(jiān)視工具模擬Web客戶機。該工具利用在Unix平臺機器上的定時URL執(zhí)行能力(CRON)來運行。該監(jiān)視工具將來自列表中的一個URL發(fā)送到服務(wù)器,并測試該服務(wù)器返回一個標(biāo)準(zhǔn)HTML頁的能力。如果響應(yīng)錯誤或者在指定數(shù)量的重試之后超時,就將這個事件記錄下來,否則將進行列表中的下一個URL。同樣也可以檢查服務(wù)器的其他響應(yīng),包括調(diào)用活動服務(wù)器頁面(ASP)、JAVASERVERPAGESTM(JSP)(JAVASERVERPAGES是SunMicrosystems公司(SantaClara,CA)的一個注冊商標(biāo))、小服務(wù)程序、或者公共網(wǎng)關(guān)接口程序索引(cgi-bin)程序的能力。除監(jiān)視之外,當(dāng)檢測到不可接受的性能和操作特性時,必須采取措施(action)。一種可能的措施可以是啟動在服務(wù)器上運行的(多個)附加虛擬機(VM,virtualmachine)。Bayeh在美國專利6,223,202B1中曾經(jīng)描述虛擬機池(pooling)技術(shù),在這種技術(shù)中,用監(jiān)視這些VM的執(zhí)行的控制器來啟動或停止VM。另一種提高網(wǎng)絡(luò)環(huán)境中的計算機性能的技術(shù)是由Batra在美國專利6,105,067中描述的。在Web服務(wù)器和多個后端數(shù)據(jù)服務(wù)器之間建立一個連接池。定義一個過程來指定各連接,并且當(dāng)客戶機請求的處理完成后維護各連接。這些連接是在連接池中被維護的。當(dāng)接收到另一個客戶機請求時,如果在連接池中有一個可用的連接,那么就用該池中的連接。這種技術(shù)避免了重新建立新連接的開銷。Fraenkel等人在加拿大專利申請公開2,255,023中描述為了幫助應(yīng)用開發(fā)者檢測出錯的JSP代碼監(jiān)視服務(wù)器上的混合源代碼的執(zhí)行。頁面編譯器(pagecompiler)在將JSP代碼,轉(zhuǎn)換為小服務(wù)程序時,包括對由執(zhí)行監(jiān)視器進行的執(zhí)行跟蹤的支持。于是,應(yīng)用開發(fā)者就能觀看JSP代碼、小服務(wù)程序代碼和由小服務(wù)程序產(chǎn)生的結(jié)果HTML代碼的相互關(guān)系。盡管已經(jīng)有了前面提及到的方法以及其他在服務(wù)器性能監(jiān)視方面的發(fā)展,仍然需要一種技術(shù)來搜集關(guān)于小服務(wù)程序的信息,以便確定服務(wù)器性能,進行問題判斷,并改善Web服務(wù)器上的中央處理單元(CPU)的利用。根據(jù)本發(fā)明,定義了一種新方法、系統(tǒng)和程序產(chǎn)品用于改善的服務(wù)器性能監(jiān)視。相信這種改善的監(jiān)視將會為技術(shù)上的進步做出重要的貢獻。
發(fā)明內(nèi)容本發(fā)明的主要目的就是通過提供一種具有增強功能能力的監(jiān)視方法來提高服務(wù)器性能監(jiān)視技術(shù)。另一個目的就是提供一種服務(wù)器監(jiān)視方法,在這種方法中增強的操作能力是可能的。再一個目的就是提供一種具有這種增強的功能和操作能力的用于進行服務(wù)器監(jiān)視的系統(tǒng)。本發(fā)明還有一個目的就是提供一種在程序指令裝置中體現(xiàn)這種增強的方法的程序產(chǎn)品。這些或者其他的目的都可以在根據(jù)本發(fā)明的一個實施例實現(xiàn),其中提供了一種監(jiān)視服務(wù)器性能的方法,該方法包括提供在服務(wù)器上的一個或多個小服務(wù)程序;在每一個小服務(wù)程序的開始插入代碼,從而當(dāng)被執(zhí)行時將其開始時間記錄在該服務(wù)器的存儲器中的一個表(table)內(nèi);在每個小服務(wù)程序的出口或者異常點(exceptionpoint)插入代碼,從而在該表中記錄其停止時間,并檢查是否要將記錄的小服務(wù)程序執(zhí)行信息加到網(wǎng)頁中的小服務(wù)程序陣列(array)中;以及將該小服務(wù)程序陣列發(fā)送給一個應(yīng)用。根據(jù)本發(fā)明的另一個實施例,提供一種監(jiān)視服務(wù)器性能的系統(tǒng),該系統(tǒng)包括具有存儲器和一個或多個小服務(wù)程序的服務(wù)器;在每個小服務(wù)程序的開始插入代碼,從而當(dāng)執(zhí)行這個小服務(wù)程序時,將其開始時間記錄在存儲器中的表內(nèi)的裝置;用于在每個小服務(wù)程序的出口或者異常點插入代碼,從而在表中記錄其停止時間(stoptime),并檢查是否將記錄的小服務(wù)程序執(zhí)行信息加到該服務(wù)器的網(wǎng)頁中的小服務(wù)程序陣列當(dāng)中去的裝置;和用于將該小服務(wù)程序陣列發(fā)送給瀏覽器的裝置。在本發(fā)明的再另一個實施例中,提供了一種用于指示處理器監(jiān)視具有存儲器和很多小服務(wù)程序的服務(wù)器的性能的計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括一個計算機可讀介質(zhì);用于在每個小服務(wù)程序的開始插入代碼從而在被運行時將其開始時間記錄在存儲器中的表內(nèi)的第一程序指令裝置;用于在每個小服務(wù)程序的出口或者異常點插入代碼,從而在表中記錄其停止時間,并檢查是否將記錄的小服務(wù)程序執(zhí)行信息加到該服務(wù)器的網(wǎng)頁中的小服務(wù)程序陣列當(dāng)中去的第二程序指令裝置;和將該小服務(wù)程序陣列發(fā)送給瀏覽器的第三程序指令裝置;其中所有的程序指令裝置都被記錄在該介質(zhì)上。圖1是根據(jù)本發(fā)明的一個實施例的流程圖;圖2是展示根據(jù)本發(fā)明另一個實施例的步驟的流程圖;以及圖3是本發(fā)明的另外一個實施例的系統(tǒng)組成部分的框圖。具體實施例方式為了更好地理解本發(fā)明,及其他的或進一步的目的、優(yōu)點和能力,下面結(jié)合前面所描述各圖,對后面的內(nèi)容和附加權(quán)利要求進行說明。圖1中所示的流程10描述了根據(jù)本發(fā)明的一種監(jiān)視服務(wù)器性能的方法。可以將圖1和圖3結(jié)合起來進行說明,圖3中展示根據(jù)本發(fā)明的服務(wù)器性能監(jiān)視系統(tǒng)30。服務(wù)器32具有存儲器34和一個或多個存在于其中的小服務(wù)程序36。每個小服務(wù)程序36都具有可以在服務(wù)器32上執(zhí)行的代碼。每個小服務(wù)程序都有一個開始(beginning)40和一個出口(exit)44。在小服務(wù)程序36內(nèi)還可以有一個或多個異常點42。表38也是在存儲器34內(nèi)。在圖1的步驟12中提供(多個)小服務(wù)程序。在步驟14中將代碼插入到每個小服務(wù)程序的開始40。當(dāng)被執(zhí)行時,該被插入的代碼在存儲器34中的表38內(nèi)記錄該小服務(wù)程序的開始時間。表38可以是一個散列表(hashtable)。用于插入該代碼的裝置可以包括一個編譯器(compiler),如JAVATM源代碼編譯器(JAVA是SunMicrosystems公司(SantaClara,CA)的一個商標(biāo))。用于插入代碼的裝置也可以包括增強小服務(wù)程序執(zhí)行環(huán)境。要被插入的代碼被放置在小服務(wù)程序源代碼的開始。然后該組合的源代碼就被編譯并存放在服務(wù)器32的存儲器34中。也可以采用其他已知的在小服務(wù)程序中插入代碼的手段。在每個小服務(wù)程序的開始插入的代碼同時也可以在表38中記錄其他的信息,如該小服務(wù)程序的名稱和由該小服務(wù)程序接收到的輸入?yún)?shù)。該輸入?yún)?shù)可能作為來自瀏覽器的一個POST或者GET請求的一部分被接收。在每個小服務(wù)程序的開始插入的代碼還可以在表38中記錄調(diào)用它的小服務(wù)程序或者應(yīng)用的名稱。在步驟16中,在出口44或異常點42或雙方插入代碼。在被執(zhí)行時,該被插入的代碼在表38中記錄該小服務(wù)程序的停止時間。該小服務(wù)程序的總運行時間也可以用先前記錄的開始時間計算出來。在異常點42插入的代碼也可以在表38中記錄異常點條件(condition)。在異常點42和出口點44插入的代碼還檢查是否要將表38中的小服務(wù)程序執(zhí)行信息加到小服務(wù)程序陣列(servletsarray)48中,用于網(wǎng)頁46中的后續(xù)插入,該網(wǎng)頁46可以是服務(wù)器32上的帶有URL的HTML頁。小服務(wù)程序陣列48也可以出現(xiàn)在一個HTML頁中或者被插入到一個日志文件當(dāng)中去。例如如果總執(zhí)行時間超過了預(yù)先指定的最小時間,則表38中的該執(zhí)行信息被加入到陣列48中去。在步驟18,陣列48被發(fā)送給圖3中的應(yīng)用58,該應(yīng)用58可以是瀏覽器。應(yīng)用58在客戶計算機50上運行,該客戶計算機50可以是任何類型的計算設(shè)備,包括,但并不局限于,膝上型計算機、桌面型計算機、工作站、掌上設(shè)備、高級便攜電話、大型機、或者任何其他類型的能夠接收和解釋HTML代碼,比如能夠運行瀏覽器的計算設(shè)備??蛻粲嬎銠C50可以帶有一個附加鍵盤54或者其他的已知的輸入設(shè)備,比如鼠標(biāo)、跟蹤球或者麥克風(fēng)和聲音響應(yīng)能力。顯示設(shè)備52可能也被附加或者被包含在客戶計算機50中??蛻粲嬎銠C50能夠通過連接56與服務(wù)器32進行通信,該連接56可以是LAN(局域網(wǎng))連接、WAN(廣域網(wǎng))、無線、紅外線、光纖、撥號或者其他任何類型的通信連接。應(yīng)用58可以經(jīng)連接56通過HTTP請求來請求具有陣列48的網(wǎng)頁46。通過連接56網(wǎng)頁46被發(fā)送到應(yīng)用58,在這里該網(wǎng)頁被接收并被顯示在顯示設(shè)備52上。于是,希望調(diào)查服務(wù)器性能的人可以在遠(yuǎn)程工作站50觀看網(wǎng)頁46中的陣列48。此人還可以對所顯示的數(shù)據(jù)進行進一步的分析。該進一步分析例如包括顯示最長的運行小服務(wù)程序、或者顯示所有的小服務(wù)程序。進一步的分析也可以通過顯示一些或者全部的在步驟14、24中記錄的輸入?yún)?shù)來進行。圖2中所示是本發(fā)明的另一個可選實施例的流程圖20。步驟22和24與圖1中的步驟12和14相同。在步驟26中代碼被插入每個小服務(wù)程序的出口44和異常點42,用來在表38中記錄其停止時間,并檢查是否要將記錄的小服務(wù)程序執(zhí)行信息加入到服務(wù)器32上的日志文件(未顯示)中。在步驟28,用戶登錄到服務(wù)器32上的操作系統(tǒng)。然后用戶使用文件編輯軟件檢查日志文件。該用戶可以從圖3中的客戶計算機50遠(yuǎn)程登錄。雖然已經(jīng)示出并描述了目前考慮到的本發(fā)明的優(yōu)選實施例,但是對于本領(lǐng)于技術(shù)人員來說,可以在不背離附加權(quán)利要求范圍的前提下,對本發(fā)明進行各種不同的修改。權(quán)利要求1.一種監(jiān)視服務(wù)器性能的方法,包括如下步驟提供在服務(wù)器上的一個或多個小服務(wù)程序;在每個所述小服務(wù)程序的開始插入代碼,從而當(dāng)被執(zhí)行時將其開始時間記錄在所述服務(wù)器上的存儲器中的一個表內(nèi);在每個所述小服務(wù)程序的出口或者異常點插入代碼,從而在所述表內(nèi)記錄其停止時間,并檢查是否要將記錄的小服務(wù)程序執(zhí)行信息加到網(wǎng)頁中的小服務(wù)程序陣列中;以及將所述小服務(wù)程序陣列發(fā)送給一個應(yīng)用。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括以下步驟在每個所述小服務(wù)程序的開始插入代碼,從而當(dāng)被執(zhí)行時將所述每個小服務(wù)程序的名稱記錄在存儲器中的所述表中。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括以下步驟在每個所述小服務(wù)程序的開始插入代碼,從而當(dāng)被執(zhí)行時將小服務(wù)程序輸入?yún)?shù)記錄在存儲器中的所述表中。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述輸入?yún)?shù)是通過POST或者GET請求接收到的。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述檢查判斷所述記錄的小服務(wù)程序執(zhí)行信息是否超出預(yù)先指定的最小時間。6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述小服務(wù)程序陣列是由一個小服務(wù)程序響應(yīng)來自所述應(yīng)用的HTTP請求而發(fā)送的。7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述小服務(wù)程序陣列被作為一個HTML頁發(fā)送到所述應(yīng)用。8.一種監(jiān)視服務(wù)器性能的方法,包括如下步驟提供在服務(wù)器上的一個或多個小服務(wù)程序;在每個所述小服務(wù)程序的開始插入代碼,從而當(dāng)被執(zhí)行時將其開始時間記錄在所述服務(wù)器上的存儲器中的一個表內(nèi);在每個所述小服務(wù)程序的出口或者異常點插入代碼,從而在所述的表內(nèi)記錄其停止時間,并檢查是否要將記錄的小服務(wù)程序執(zhí)行信息加到所述服務(wù)器上的一個日志文件中;以及用文件編輯器格式化和顯示所述的日志文件。9.一種用于監(jiān)視服務(wù)器性能的系統(tǒng),包括具有存儲器和一個或多個小服務(wù)程序的服務(wù)器;用于在每個所述小服務(wù)程序的開始插入代碼,從而當(dāng)被執(zhí)行時將其開始時間記錄在所述存儲器中的一個表內(nèi)的裝置;用于在每個所述小服務(wù)程序的出口或者異常點插入代碼,從而將其停止時間記錄在所述的表內(nèi),并檢查是否要將記錄的小服務(wù)程序執(zhí)行信息加到在所述服務(wù)器上的一個網(wǎng)頁中的小服務(wù)程序陣列中的裝置;以及用于將所述小服務(wù)程序陣列發(fā)送給一個瀏覽器的裝置。10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,還包括用于在每個所述小服務(wù)程序的開始插入代碼,從而當(dāng)被執(zhí)行時將所述每個小服務(wù)程序的名稱記錄在存儲器中的所述表內(nèi)的裝置。11.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,還包括用于在每個所述小服務(wù)程序的開始插入代碼,從而當(dāng)被執(zhí)行時將小服務(wù)程序輸入?yún)?shù)記錄在存儲器中的所述表內(nèi)的裝置。12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述服務(wù)器適合于通過一個POST或者GET請求接收所述輸入?yún)?shù)。13.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述檢查判定所述記錄的小服務(wù)程序執(zhí)行信息是否超過預(yù)先指定的最小時間。14.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述用于發(fā)送的裝置包括用于響應(yīng)來自所述瀏覽器的HTTP請求發(fā)送所述小服務(wù)程序陣列的裝置。15.根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于,所述小服務(wù)程序陣列包括一個HTML頁。16.一種用于指示處理器來監(jiān)視服務(wù)器的性能的計算機程序產(chǎn)品,所述服務(wù)器具有存儲器和多個小服務(wù)程序,所述計算機程序產(chǎn)品包括一個計算機可讀介質(zhì);用于在每個所述小服務(wù)程序的開始插入代碼,從而當(dāng)被執(zhí)行時將其開始時間記錄在所述存儲器中的一個表內(nèi)的第一程序指令裝置;用于在每個所述小服務(wù)程序的出口或者異常點插入代碼,從而將其停止時間記錄在所述表內(nèi),并檢查是否要將記錄的小服務(wù)程序執(zhí)行信息加到在所述服務(wù)器上一個網(wǎng)頁中的小服務(wù)程序陣列中的第二程序指令裝置;以及用于將小服務(wù)程序陣列發(fā)送給一個瀏覽器的第三程序指令裝置;其中,所有所述程序指令裝置都被記錄在所述介質(zhì)上。全文摘要通過向服務(wù)器上運行的小服務(wù)程序中插入代碼來監(jiān)視服務(wù)器性能。在小服務(wù)程序的開始插入代碼來將開始時間、小服務(wù)程序名稱和輸入?yún)?shù)記錄在該服務(wù)器上的存儲器中的一個表內(nèi)。同樣在小服務(wù)程序的出口或者異常點插入代碼來在該表中記錄停止時間,并且判斷是否要將該表中的該信息加入到一個日志文件、一個網(wǎng)頁中的一個陣列中。然后該網(wǎng)頁或者日志文件被檢查來判斷服務(wù)器性能。文檔編號H04L12/26GK1489039SQ0315672公開日2004年4月14日申請日期2003年9月8日優(yōu)先權(quán)日2002年9月9日發(fā)明者W·L·亨特,J·W·小蘭姆,WL亨特,小蘭姆申請人:國際商業(yè)機器公司