專利名稱:監(jiān)控web應(yīng)用程序性能的方法、系統(tǒng)和web服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本申請涉及一種監(jiān)控技木,尤其涉及一種監(jiān)控web應(yīng)用程序性能的方法、系統(tǒng)和web服務(wù)器。
背景技術(shù):
一般HTTP (HyperText Markup Language,超文本置標(biāo)語言)請求響應(yīng)的耗時包括三部分1、發(fā)送請求時在網(wǎng)絡(luò)上消耗的時間;2、web程序處理http請求所消耗的時間;3、網(wǎng)絡(luò)傳輸響應(yīng)內(nèi)容的時間。當(dāng)用戶反饋系統(tǒng)響應(yīng)速度較慢的時候,一般維護(hù)人員都先檢查系統(tǒng)的各項指標(biāo)以及應(yīng)用的日志。但是在采用集群方式部署的環(huán)境下,維護(hù)人員很難定位用戶反映的有性能問題的請求是由哪臺服務(wù)器處理的,這樣就無法去檢查服務(wù)器的各項監(jiān)控指標(biāo)。即使維護(hù)人員定位到了處理請求的服務(wù)器,但是由于系統(tǒng)在高并發(fā)的環(huán)境下一段時間內(nèi)會產(chǎn)生大量相同URL的請求日志,這樣也將無法使維護(hù)人員準(zhǔn)確的定位到出現(xiàn)性能問題的請求日志。目前業(yè)界為了定位和分析web應(yīng)用程序性能通用的手段是為系統(tǒng)添加各種監(jiān)控,主要使用的監(jiān)控方案有兩種方案一服務(wù)器端性能日志該方案的主要方式是在服務(wù)器端的日志中記錄處理每個請求的耗時以便日后從日志中分析問題。一種實現(xiàn)方式如下在Apache配置類似如下日志格式LogFormat;/ % h % u % t\'r % r\'r %> s % h\ ,r % {User-Agent} i \ " %D" combined以上日志格式的含義請參考http://httpd. apache, org/docs/2. 0/mod/mod_log_conf ig. html#customlog其中最重要的是D”這個表示處理此次請求所用的時間,単位微秒。收集各臺服務(wù)器上的訪問日志,查找耗時較多的URL為后續(xù)性能優(yōu)化提供依據(jù)。方案ニ 模擬客戶端請求監(jiān)控該方案是使用程序模擬瀏覽器向系統(tǒng)發(fā)送請求,并記錄響應(yīng)時間以便跟蹤分析問題。實現(xiàn)方式如下使用wget或httpclient等工具訪問某些URL,記錄服務(wù)器的響應(yīng)時間。分析記錄的日志,查找耗時較多的URL為后續(xù)性能優(yōu)化提供依據(jù)。因為方案一是在服務(wù)器端記錄請求的響應(yīng)時間,在集群部署的情況下用戶的請求是隨機(jī)發(fā)送到集群中的某臺服務(wù)器上去處理。這樣就有ー個缺陷是無法定位到用戶請求發(fā)送到哪臺服務(wù)器上,這種情況下當(dāng)在用戶反映系統(tǒng)響應(yīng)慢的時候,系統(tǒng)維護(hù)人員無法定位到具體的服務(wù)器,此外除了定位具體機(jī)器有困難,在一臺機(jī)器上,對用戶短時間的類似操作也較難定位哪一條日志,因此也就難以有效監(jiān)控web應(yīng)用程序性能。因為方案ニ是在客戶端模擬用戶請求的方式來監(jiān)控web應(yīng)用程序性能,因此監(jiān)控效果不佳,具體表現(xiàn)為I、這個監(jiān)控的客戶端部署在哪里?如果用戶是分布在全國各地的,全國各地的網(wǎng)絡(luò)狀況都是不一樣的。這樣的監(jiān)控即使是多處布點也不能完全反映代表各地的網(wǎng)絡(luò)情況。2、這種監(jiān)控程序往往不能完全模擬用戶對系統(tǒng)的操作。首先,一個系統(tǒng)可能對用戶開放幾個到幾十上百的功能,監(jiān)控程序很難將每個功能都模擬一遍。其次,很多功能這種監(jiān)控程序無法模擬,比如電子商務(wù)中的在線下訂單、在線支付等應(yīng)用服務(wù)?,F(xiàn)有技術(shù)中,難以有效監(jiān)控web應(yīng)用程序性能或者監(jiān)控效果不佳,對于該問題,目前尚未提出有效解決方案。
發(fā)明內(nèi)容
本申請的主要目的是提供一種監(jiān)控web應(yīng)用程序性能的方法、系統(tǒng)和web服務(wù)器,以解決現(xiàn)有技術(shù)中難以有效監(jiān)控web應(yīng)用程序性能或者監(jiān)控效果不佳的問題。 為了實現(xiàn)上述目的,根據(jù)本申請的ー個方面,提供了一種監(jiān)控web應(yīng)用程序性能的方法。本申請的監(jiān)控web應(yīng)用程序性能的方法包括web服務(wù)器在向應(yīng)用服務(wù)器轉(zhuǎn)發(fā)客戶端請求后,接收應(yīng)用服務(wù)器執(zhí)行應(yīng)用程序邏輯后返回給所述客戶端的響應(yīng)內(nèi)容,并為所述客戶端請求分配客戶端請求標(biāo)識,然后,將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中,將所述響應(yīng)內(nèi)容、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給所述客戶端,接收所述客戶端對應(yīng)地提交的所述標(biāo)識和通過所述頁面獲取的web應(yīng)用程序性能反饋信息,然后將所述標(biāo)識和所述web應(yīng)用程序性能反饋信息對應(yīng)地保存在數(shù)據(jù)庫中;分析裝置接收所述web應(yīng)用程序性能反饋頁面獲取的反饋信息,在所述數(shù)據(jù)庫中搜索該反饋信息對應(yīng)的客戶端請求標(biāo)識,在所述日志中查詢該客戶端請求標(biāo)識對應(yīng)的響應(yīng)時間,并在該響應(yīng)時間大于預(yù)設(shè)值的情況下輸出該響應(yīng)時間對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址或輸出報m樣自
目 I R ノ K、ο進(jìn)ー步地,將所述響應(yīng)內(nèi)容、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給所述客戶端包括在作為所述響應(yīng)內(nèi)容的HTML代碼中記錄所述標(biāo)識以及所述代碼,再將所述HTML代碼發(fā)送給所述客戶端。進(jìn)ー步地,所述web應(yīng)用程序性能反饋頁面中包含用于接收web應(yīng)用程序性能反饋信息的表単。進(jìn)ー步地,將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中之后,所述方法還包括從所述日志中查找大于預(yù)設(shè)時間值的所述響應(yīng)時間,確定查找到的所述響應(yīng)時間對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址然后輸出該網(wǎng)絡(luò)地址。為了實現(xiàn)上述目的,根據(jù)本申請的另一方面,提供了ー種web服務(wù)器。本申請的web服務(wù)器包括第一接收模塊,用于接收應(yīng)用服務(wù)器對客戶端請求的響應(yīng);分配模塊,用于為所述客戶端請求分配客戶端請求標(biāo)識;保存模塊,用于將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中;第一發(fā)送模塊,用于將所述響應(yīng)內(nèi)容、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給所述客戶端;第二接收模塊,用于接收所述客戶端通過所述頁面獲取并發(fā)送的web應(yīng)用程序性能反饋信息以及對應(yīng)該反饋信息發(fā)送的客戶端請求標(biāo)識;第二發(fā)送模塊,用于將所述反饋信息和所述標(biāo)識對應(yīng)地發(fā)送至數(shù)據(jù)庫。為了實現(xiàn)上述目的,根據(jù)本申請的又一方面,提供了一種監(jiān)控web應(yīng)用程序性能的系統(tǒng)。本申請的監(jiān)控web應(yīng)用程序性能的系統(tǒng)包括web服務(wù)器和分析裝置,其中web服務(wù)器,用于在向應(yīng)用服務(wù)器轉(zhuǎn)發(fā)客戶端請求后,接收應(yīng)用服務(wù)器執(zhí)行應(yīng)用程序邏輯后返回給所述客戶端的響應(yīng)內(nèi)容,并為所述客戶端請求分配客戶端請求標(biāo)識,然后,將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中,將所述響應(yīng)內(nèi)容、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給所述客戶端,接收所述客戶端通過所述頁面獲取的web應(yīng)用程序性能反饋信息,然后將所述標(biāo)識和所述web應(yīng)用程序性能反饋信息對應(yīng)地保存在數(shù)據(jù)庫中;分析裝置,用于接收所述web應(yīng)用程序性能反饋頁面獲取的反饋信息,在所述數(shù)據(jù)庫中搜索該反饋信息對應(yīng)的客戶端請求標(biāo)識,在所述日志中查詢該客戶端請求標(biāo)識對應(yīng)的響應(yīng)時間,并在該響應(yīng)時間大于預(yù)設(shè)值的情況下輸出該響應(yīng)時間對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址或輸出報警信息。進(jìn)ー步地,所述web服務(wù)器包括第一接收模塊,用于接收應(yīng)用服務(wù)器對客戶端請求的響應(yīng);分配模塊,用于為所述客戶端請求分配客戶端請求標(biāo)識;保存模塊,用于將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中;第一發(fā)送模塊,用于將所述響應(yīng)內(nèi)容、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給所述客戶端;第二接收模塊,用于接收所述客戶端通過所述頁面獲取的web應(yīng)用程序性能反饋信息以及對應(yīng)該反饋信息發(fā)送的客戶端請求標(biāo)識;第二發(fā)送模塊,用于將所述反饋信息和所述標(biāo)識對應(yīng)地發(fā)送給數(shù)據(jù)庫。進(jìn)ー步地,所述第一發(fā)送模塊還用于在作為所述響應(yīng)內(nèi)容的HTML代碼中記錄所述標(biāo)識以及所述代碼,再將所述HTML代碼發(fā)送給所述客戶端。進(jìn)ー步地,所述分析裝置包括接收模塊,用于接收所述web應(yīng)用程序性能反饋頁面獲取的反饋信息;捜索模塊,用于在所述數(shù)據(jù)庫中搜索該反饋信息對應(yīng)的客戶端請求標(biāo)識;查詢模塊,用于在所述日志中查詢所述搜索模塊搜索到的客戶端請求標(biāo)識對應(yīng)的響應(yīng)時間;分析輸出模塊,用于在所述查詢模塊查詢到的響應(yīng)時間大于預(yù)設(shè)值的情況下輸出該響應(yīng)時間對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址。進(jìn)ー步地,所述分析裝置包括查找模塊,用于從所述日志中查找大于預(yù)設(shè)時間值的所述響應(yīng)時間,并且確定該響應(yīng)時間所對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址;提示模塊,用于輸出所述查找模塊確定的網(wǎng)絡(luò)地址。根據(jù)本申請的技術(shù)方案,為每個發(fā)往服務(wù)器的請求都設(shè)置ー個唯一的標(biāo)識,這個標(biāo)識在服務(wù)器端會記錄到日志、數(shù)據(jù)庫等介質(zhì)中。同時發(fā)往客戶端的響應(yīng)中在HTML內(nèi)容或者HTTP頭信息(HTTP Headers)中會添加此唯一的標(biāo)識,這樣就將用戶的請求和服務(wù)器端 的日志記錄進(jìn)行了一一對應(yīng)。當(dāng)用戶需要反饋系統(tǒng)的性能問題的時候,用戶提交的反饋表單會將用戶發(fā)出的對應(yīng)操作的唯一標(biāo)識發(fā)送給服務(wù)器并記錄到數(shù)據(jù)庫中。系統(tǒng)的維護(hù)人員可以根據(jù)用戶反饋的唯一的標(biāo)識搜索服務(wù)器的上的日志從而定位到有問題的服務(wù)器。采用本申請實施例的技術(shù)方案后用戶的每個請求都會被設(shè)置ー個唯一的標(biāo)識。用戶所有的操作的響應(yīng)時間都會被記錄到日志中。這樣就解決了如何全面監(jiān)控用戶請求的問題。另外,本申請實施例的技術(shù)方案完全是在用戶進(jìn)行系統(tǒng)的真實操作時進(jìn)行監(jiān)控。這樣可以真實記錄系統(tǒng)的響應(yīng)時間,從而能分析出系統(tǒng)的性能問題是否是因為用戶當(dāng)?shù)鼐W(wǎng)絡(luò)問題導(dǎo)致,解決了如何真實反映用戶所處的網(wǎng)絡(luò)環(huán)境的問題。因此,采用本申請實施例的技術(shù)方案,能夠有效監(jiān)控web應(yīng)用程序性能,獲得較佳的監(jiān)控效果。
說明書附圖用來提供對本申請的進(jìn)一歩理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中圖I是與本申請實施例有關(guān)的ー種網(wǎng)絡(luò)結(jié)構(gòu)的示意圖;圖2是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的方法在web服務(wù)器上執(zhí)行的流程示意圖;
圖3是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的方法在客戶端執(zhí)行的流程示意圖;圖4是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的方法的整體流程的示意圖;圖5是根據(jù)本申請實施例的網(wǎng)絡(luò)維護(hù)人員進(jìn)行系統(tǒng)分析的主要流程的示意圖;圖6是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的裝置的示意圖;圖7是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的另ー種裝置的示意圖;圖8是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的系統(tǒng)的示意圖。
具體實施例方式需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細(xì)說明本申請。圖I是與本申請實施例有關(guān)的ー種網(wǎng)絡(luò)結(jié)構(gòu)的示意圖。如圖I所示,多個客戶端11通過Internet網(wǎng)絡(luò)12和防火墻13與負(fù)載均衡設(shè)備14連接,多個應(yīng)用服務(wù)器15也通過web服務(wù)器16與負(fù)載均衡設(shè)備14連接。應(yīng)用服務(wù)器15和web服務(wù)器16可以部署在同一臺計算機(jī)中?;陬愃朴趫DI所示的網(wǎng)絡(luò),用戶通過互聯(lián)網(wǎng)訪問部署在某個IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)機(jī)房的web服務(wù)。由于全國甚至是全球范圍內(nèi)各地的網(wǎng)絡(luò)環(huán)境千差萬別,這就導(dǎo)致網(wǎng)絡(luò)本身會嚴(yán)重影響用戶在使用web應(yīng)用時的體驗。在網(wǎng)絡(luò)層面應(yīng)用用戶體驗的主要因素是網(wǎng)速。從圖I也可以看出除了互聯(lián)網(wǎng)本身的結(jié)構(gòu)非常復(fù)雜外,應(yīng)用程序的部署也有一定的復(fù)雜性。一般中大規(guī)模的企業(yè)應(yīng)用都會采用集群方式部署。關(guān)于此處的“集群”,簡單解釋如下參考圖1,用戶的請求先由客戶端11經(jīng)由Internet網(wǎng)絡(luò)12、防火墻13發(fā)送到負(fù)載均衡設(shè)備14,由負(fù)載均衡設(shè)備14通過一定的算法將請求轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器集群中的某一臺應(yīng)用服務(wù)器15上,由這臺應(yīng)用服務(wù)器15來響應(yīng)用戶的請求,并將處理結(jié)果返回給客戶端11 ;處在集群里的每臺應(yīng)用服務(wù)器15都是對等的關(guān)系,每臺應(yīng)用服務(wù)器15都是互為備份,任何一臺或者幾臺服務(wù)器出現(xiàn)故障都不會影響整個集群為用戶正常提供服務(wù)。當(dāng)web應(yīng)用出現(xiàn)性能問題時最直接的表現(xiàn)就是打開網(wǎng)頁的速度很慢,當(dāng)出現(xiàn)這種問題時對于系統(tǒng)的維護(hù)或開發(fā)人員來說首先需要定位出現(xiàn)此問題是否是由于應(yīng)用程序的性能問題導(dǎo)致的?!按蜷_網(wǎng)頁的速度很慢”也就是系統(tǒng)響應(yīng)的速度慢。一般HTTP請求響應(yīng)的時間包括兩部分I、web程序處理http請求所消耗的時間。當(dāng)程序存在缺陷或者設(shè)計方案不合理的時候就有可能導(dǎo)致程序在處理用戶請求的時候會有較大的時間消耗。還有ー種可能是集群中的某些服務(wù)器由于硬件故障或者訪問壓力的増加也可能導(dǎo)致用戶請求處理耗時較大。2、網(wǎng)絡(luò)傳輸請求和響應(yīng)內(nèi)容時消耗的時間。由于用戶使用的網(wǎng)絡(luò)的帶寬等因素的影響不同網(wǎng)絡(luò)條件下的用戶對同一程序的同一功能的使用感受會有很大的區(qū)別。對于這個原因引起的系統(tǒng)響應(yīng)慢的問題,一般可以通過改善網(wǎng)絡(luò)條件解決。從以上的分析可以看出,當(dāng)系統(tǒng)的維護(hù)人員接到用戶關(guān)于性能問題的反饋時,首先需要定位問題出現(xiàn)在哪里,這里需要考慮兩方面的問題,首先,需要定位導(dǎo)致響應(yīng)慢的問題是由于用戶的網(wǎng)絡(luò)環(huán)境問題還是程序本身的性能問題;其次,如果是程序的問題需要定 位當(dāng)時處理用戶請求的那臺服務(wù)器,然后再結(jié)合一些硬件的監(jiān)控以及程序的日志再來分析和解決程序的性能問題。圖2是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的方法在web服務(wù)器上執(zhí)行的流程示意圖。如圖2所示,web服務(wù)器在將客戶端的客戶端請求轉(zhuǎn)發(fā)至應(yīng)用服務(wù)器,并由后者處理該請求之后,web服務(wù)器主要執(zhí)行以下步驟步驟S21 :接收應(yīng)用服務(wù)器對客戶端請求的響應(yīng)。步驟S22 :為客戶端請求分配客戶端請求標(biāo)識。步驟S221 :將應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、應(yīng)用服務(wù)器對客戶端請求的響應(yīng)時間、以及客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中。步驟S222 :將所述響應(yīng)、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給提出客戶端請求的客戶端設(shè)備。步驟S221和步驟S222可以同步進(jìn)行,也可以先執(zhí)行步驟S222,再執(zhí)行步驟S221??蛻舳嗽谑盏缴鲜龅挠糜诔尸F(xiàn)web應(yīng)用程序性能反饋頁面的代碼后,運行該代碼即在輸出裝置例如顯示器上呈現(xiàn)上述頁面,其中包含性能反饋表單,該表單中提示用戶填寫對于頁面性能反饋的評價,包括頁面打開的速度,以及頁面的其他表現(xiàn)。步驟S23 :接收客戶端提交的信息。這里的信息包括步驟S22中的客戶端請求標(biāo)識,以及web應(yīng)用程序性能反饋頁面獲取的反饋信息,并且由客戶端對應(yīng)地一井保存在數(shù)據(jù)庫中。在步驟S23之后由分析裝置(所述分析裝置可以是內(nèi)置于web服務(wù)器中的功能模塊,也可以是獨立于web服務(wù)器,具有分析功能的獨立服務(wù)器或其他計算裝置)繼續(xù)執(zhí)行以下步驟步驟S24:在數(shù)據(jù)庫中捜索該反饋信息對應(yīng)的客戶端請求標(biāo)識,在日志中查詢該客戶端請求標(biāo)識對應(yīng)的響應(yīng)時間。步驟S25 :判斷步驟S24中查詢得到的響應(yīng)時間是否大于預(yù)設(shè)值,若是,則進(jìn)入步驟S26,否則返回步驟S24。步驟S26 :輸出步驟S24中查詢得到的響應(yīng)時間對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址或輸出報警信息。在步驟S26之后,網(wǎng)絡(luò)管理人員能夠獲得響應(yīng)較慢(大于預(yù)設(shè)值)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址,網(wǎng)絡(luò)管理人員可以調(diào)取該應(yīng)用服務(wù)器的所有響應(yīng)時間以進(jìn)行分析;另外在步驟S26中也可以同時輸出步驟S24中查詢得到的響應(yīng)時間供網(wǎng)絡(luò)管理人員參考。另一方面,根據(jù)步驟S23中收到的客戶端提交的信息,可以得知用戶認(rèn)為哪些服務(wù)響應(yīng)較慢。通過對比用戶指出的服務(wù)響應(yīng)速度和應(yīng)用服務(wù)器的實際響應(yīng)時間,就能夠確定是應(yīng)用服務(wù)器本身響應(yīng)較慢還是用戶使用的網(wǎng)絡(luò)的性能不佳。圖3是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的方法在客戶端執(zhí)行的流程示意圖,主要包括如下步驟
步驟S31 :向web服務(wù)器發(fā)送客戶端請求。步驟S33 :接收web服務(wù)器對所述客戶端請求的響應(yīng)。本步驟的響應(yīng)中包含客戶端請求的標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼。步驟S35 :根據(jù)所述響應(yīng)呈現(xiàn)所述反饋頁面。在本步驟中,反饋頁面是否呈現(xiàn)也可以由用戶決定,用戶需要提交性能反饋時候可以通過頁面的按鈕或者快捷鍵觸發(fā)從而打開反饋頁面。步驟S37 :通過呈現(xiàn)的反饋頁面獲取web應(yīng)用程序性能反饋信息。步驟S39 :將所述請求標(biāo)識和獲取的反饋信息對應(yīng)地發(fā)送給提供web應(yīng)用的應(yīng)用服務(wù)器。將圖2和圖3所示的流程結(jié)合,可以得到圖4所示的流程,圖4是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的方法的整體流程的示意圖。步驟S23中的數(shù)據(jù)庫可以和分析裝置設(shè)置在同一計算機(jī)中,圖4示出了這種情形。在實際的網(wǎng)絡(luò)系統(tǒng)中,可以將web服務(wù)器和應(yīng)用服務(wù)器部署在同一臺計算機(jī)內(nèi),也可以分別部署在不同計算機(jī)內(nèi),這些計算機(jī)可以共享同一個數(shù)據(jù)庫,該數(shù)據(jù)庫在這里主要用于存儲圖2和圖3中涉及的數(shù)據(jù),例如應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、應(yīng)用服務(wù)器對客戶端請求的響應(yīng)時間、以及客戶端請求標(biāo)識等。根據(jù)圖4所示的流程,用戶從客戶端發(fā)送的HTTP請求通過web服務(wù)器的轉(zhuǎn)發(fā)后到達(dá)應(yīng)用服務(wù)器。應(yīng)用服務(wù)器處理完成HTTP請求,將響應(yīng)內(nèi)容發(fā)送回客戶端。返回的響應(yīng)內(nèi)容會經(jīng)過web服務(wù)器的過濾。在過濾過程中可在返回的HTML代碼中添加<meta/>標(biāo)簽,在<meta/>標(biāo)簽中會添加請求唯一標(biāo)識(以下用UNIQUE_REQUEST_ID表示)的值。針對返回內(nèi)容不是HTML代碼的AJAX調(diào)用,可以在HTTP Header中將UNIQUE_REQUEST_ID添加到新響應(yīng)頭信息中。web服務(wù)器在響應(yīng)內(nèi)容處理完成后記錄日志。每一條日志至少包括應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址,例如URL的內(nèi)容;UNIQUE_REQUEST_ID ;處理請求的服務(wù)器耗吋。web服務(wù)器在響應(yīng)內(nèi)容中加入UNIQUE_REQUEST_ID的同時還可以加入額外的js腳本。在提交反饋的時候可以觸發(fā)這個js腳本里的功能打開反饋頁面,在反饋頁面中詢問用戶對網(wǎng)絡(luò)的響應(yīng)速度是否滿意,用戶根據(jù)自己對于網(wǎng)絡(luò)服務(wù)功能的使用體驗進(jìn)行判斷,在判斷結(jié)果為“是”,即用戶滿意本次網(wǎng)絡(luò)服務(wù)的情況下流程結(jié)束,否則用戶填寫反饋表單。用戶提交表單以后,web服務(wù)器將UNIQUE_REQUEST_ID和反饋信息ー并保存在上述的數(shù)據(jù)庫中。在具有上述數(shù)據(jù)庫的情況下,可以由網(wǎng)絡(luò)維護(hù)人員按照圖5所示的流程進(jìn)行系統(tǒng)分析。圖5是根據(jù)本申請實施例的網(wǎng)絡(luò)維護(hù)人員進(jìn)行系統(tǒng)分析的主要流程的示意圖。在圖5所示的流程中,根據(jù)與用戶反饋信息一并提交的UNIQUE_REQUEST_ID查找服務(wù)器上記錄的請求響應(yīng)耗時日志;根據(jù)日志所在的服務(wù)器或者日志中記錄的信息可以確定當(dāng)時處理用戶請求的具體服務(wù)器;根據(jù)日志中記錄的處理請求的耗時可以定位導(dǎo)致性能問題的原因是出自網(wǎng)絡(luò)原因還是程序自身問題。這里程序自身的性能即體現(xiàn)了應(yīng)用服務(wù)器的性能。圖6是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的裝置的示意圖。該裝置可以安裝在作為web服務(wù)器和應(yīng)用服務(wù)器的計算機(jī)中。如圖6所示,監(jiān)控web應(yīng)用程序性能的裝置60主要包括以下模塊第一接收模塊61,用于接收應(yīng)用服務(wù)器對客戶端請求的響應(yīng);分配模塊62,用于為所述客戶端請求分配客戶端請求標(biāo)識;保存模塊63,用于將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存; 發(fā)送模塊64,用于將所述響應(yīng)和所述標(biāo)識對應(yīng)地發(fā)送給所述客戶端;第二接收模塊65,用于接收到包含有客戶端請求標(biāo)識的查詢指令;客戶端反饋接收模塊66,用于接收客戶端提交的帶有請求標(biāo)識的性能反饋信息并保存;輸出模塊67,用于根據(jù)所述查詢指令中的所述標(biāo)識確定并輸出該標(biāo)識對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址和應(yīng)用服務(wù)器對客戶端請求的響應(yīng)時間。發(fā)送模塊還可以用于將所述標(biāo)識添加到所述響應(yīng)的HTTP消息頭中然后將所述響應(yīng)發(fā)送給所述客戶端,還可以用于在所述響應(yīng)的HTML代碼中記錄所述標(biāo)識以及所述用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼,再將所述HTML代碼發(fā)送給所述客戶端。圖7是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的另ー種裝置的示意圖。該裝置可安裝在客戶端計算機(jī)中。如圖7所示,監(jiān)控web應(yīng)用程序性能的裝置70主要包括以下模塊請求模塊71,用于向web服務(wù)器發(fā)送客戶端請求;接收模塊72,用于接收所述web服務(wù)器對所述客戶端請求的響應(yīng),所述響應(yīng)中包含所述客戶端請求的標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼;呈現(xiàn)模塊73,用于根據(jù)所述響應(yīng)呈現(xiàn)所述反饋頁面;獲取模塊74,用于通過呈現(xiàn)的反饋頁面獲取web應(yīng)用程序性能反饋信息;提交模塊75,用于將所述請求標(biāo)識和反饋信息對應(yīng)地發(fā)送給提供所述web應(yīng)用的應(yīng)用服務(wù)器。圖8是根據(jù)本申請實施例的監(jiān)控web應(yīng)用程序性能的系統(tǒng)的示意圖。如圖8所示,監(jiān)控web應(yīng)用程序性能的系統(tǒng)80主要包括web服務(wù)器81和分析裝置82。其中web服務(wù)器81用于在向應(yīng)用服務(wù)器轉(zhuǎn)發(fā)客戶端請求后,接收應(yīng)用服務(wù)器執(zhí)行應(yīng)用程序邏輯后返回給所述客戶端的響應(yīng)內(nèi)容,并為所述客戶端請求分配客戶端請求標(biāo)識,然后,將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中,將所述響應(yīng)內(nèi)容、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給所述客戶端,接收所述客戶端通過所述頁面獲取的web應(yīng)用程序性能反饋信息,然后將所述標(biāo)識和所述web應(yīng)用程序性能反饋信息對應(yīng)地保存在數(shù)據(jù)庫中;分析裝置82用于接收所述web應(yīng)用程序性能反饋頁面獲取的反饋信息,在所述數(shù)據(jù)庫中搜索該反饋信息對應(yīng)的客戶端請求標(biāo)識,在所述日志中查詢該客戶端請求標(biāo)識對應(yīng)的響應(yīng)時間,并在該響應(yīng)時間大于預(yù)設(shè)值的情況下輸出該響應(yīng)時間對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址或輸出報警信息。分析裝置82的一種可選結(jié)構(gòu)是包括接收模塊,用于接收所述web應(yīng)用程序性能反饋頁面獲取的反饋信息;捜索模塊,用于在所述數(shù)據(jù)庫中搜索該反饋信息對應(yīng)的客戶端請求標(biāo)識;查詢模塊,用于在所述日志中查詢所述搜索模塊搜索到的客戶端請求標(biāo)識對應(yīng)的響應(yīng)時間;分析輸出模塊,用于在所述查詢模塊查詢到的響應(yīng)時間大于預(yù)設(shè)值的情況下輸出該響應(yīng)時間對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址。分析裝置82的另ー種可選結(jié)構(gòu)是包括查找模塊和提示模塊,其中查找模塊用于從日志中查找大于預(yù)設(shè)時間值的所述響應(yīng)時間,并且確定該響應(yīng)時間所對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址;提示模塊用于輸出查找模塊確定的網(wǎng)絡(luò)地址。提示模塊也可以將查找模塊查找到的響應(yīng)時間和應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址ー并輸出。本申請實施例的技術(shù)方案可采用Apache作為web服務(wù)器來完成(當(dāng)然不僅限于Apache,其他的web服務(wù)器如Nginx等也都可以實現(xiàn))??梢栽贏pache上安裝mod_unique_idso為姆個web請求生產(chǎn)卩隹一標(biāo)識并記錄到apache訪問日志中。然后,開發(fā)ー個module作為Apache的Filter,實現(xiàn)修改HTML代碼的功能。a.在head部分添加<meta/>標(biāo)簽記 錄請求的卩隹ー標(biāo)識;b.在head部分添加額外的js文件,新增的js文件主要功能是用戶可以通過事先設(shè)定的快捷鍵展現(xiàn)用戶問題反饋頁面,并對系統(tǒng)問題提供反饋功能。接下來當(dāng)用戶需要反饋性能問題時觸發(fā)快捷鍵,填寫反饋表単。提交后系統(tǒng)會收集到用戶的反饋信息,其中包括UNIQUE_REQUEST_ID。這樣系統(tǒng)維護(hù)人員就可以通過這個唯一標(biāo)識去分析事先記錄的Apache訪問日志以定位性能問題出在程序本身還是網(wǎng)絡(luò)傳輸問題。上述具體方案能夠在解決“定位系統(tǒng)性能問題”這ー難題的前提下同時做到對應(yīng)用程序的代碼無侵入,不需要修改或添加任何業(yè)務(wù)代碼即可實現(xiàn)此功能。根據(jù)本申請實施例的技術(shù)方案,為每個發(fā)往服務(wù)器的請求都設(shè)置ー個唯一的標(biāo)識,這個標(biāo)識在服務(wù)器端會記錄到日志、數(shù)據(jù)庫等介質(zhì)中。同時發(fā)往客戶端的響應(yīng)中在HTML內(nèi)容或者HTTP頭信息(HTTP Headers)中會添加此唯一的標(biāo)識這樣就將用戶的請求和服務(wù)器端的日志記錄進(jìn)行了一一對應(yīng)。當(dāng)用戶需要反饋系統(tǒng)的性能問題的時候,用戶提交的反饋表單會將用戶發(fā)出的對應(yīng)操作的唯一標(biāo)識發(fā)送給服務(wù)器并記錄到數(shù)據(jù)庫中。系統(tǒng)的維護(hù)人員可能根據(jù)用戶反饋的唯一的標(biāo)識搜索服務(wù)器的上的日志從而定位到有問題的服務(wù)器。采用本申請實施例的技術(shù)方案后用戶的每個請求都會被設(shè)置ー個唯一的標(biāo)識。用戶所有的操作的響應(yīng)時間都會被記錄到日志中。這種就解決了如何全面監(jiān)控用戶請求的問題。另外,本申請實施例的技術(shù)方案完全是在用戶進(jìn)行系統(tǒng)的真實操作時進(jìn)行監(jiān)控。這樣可以真實記錄系統(tǒng)的響應(yīng)時間,從而能分析出系統(tǒng)的性能問題是否是因為用戶當(dāng)?shù)鼐W(wǎng)絡(luò)問題導(dǎo)致,解決了如何真實反映用戶所處的網(wǎng)絡(luò)環(huán)境的問題。因此,采用本申請實施例的技術(shù)方案,能夠有效監(jiān)控web應(yīng)用程序性能,獲得較佳的監(jiān)控效果。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本申請的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者根據(jù)它們分別制作集成電路模塊,或者根據(jù)它們中的多個模塊或步驟制作成單個集成電路模塊。這樣,本申請不限制于任何特定的硬件和軟件結(jié)合。
以上所述僅為本申請的優(yōu)選實施例而已,并不用于限制本申請,對于本領(lǐng)域的技 術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種監(jiān)控web應(yīng)用程序性能的方法,其特征在于,包括 web服務(wù)器在向應(yīng)用服務(wù)器轉(zhuǎn)發(fā)客戶端請求后,接收應(yīng)用服務(wù)器執(zhí)行應(yīng)用程序邏輯后返回給所述客戶端的響應(yīng)內(nèi)容,并為所述客戶端請求分配客戶端請求標(biāo)識,然后, 將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中, 將所述響應(yīng)內(nèi)容、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給所述客戶端, 接收所述客戶端對應(yīng)地提交的所述標(biāo)識和通過所述頁面獲取的web應(yīng)用程序性能反饋信息,然后將所述標(biāo)識和所述web應(yīng)用程序性能反饋信息對應(yīng)地保存在數(shù)據(jù)庫中; 分析裝置接收所述web應(yīng)用程序性能反饋頁面獲取的反饋信息,在所述數(shù)據(jù)庫中搜索該反饋信息對應(yīng)的客戶端請求標(biāo)識,在所述日志中查詢該客戶端請求標(biāo)識對應(yīng)的響應(yīng)時間,并在該響應(yīng)時間大于預(yù)設(shè)值的情況下輸出該響應(yīng)時間對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址或輸出報警信息。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,將所述響應(yīng)內(nèi)容、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給所述客戶端包括在作為所述響應(yīng)內(nèi)容的HTML代碼中記錄所述標(biāo)識以及所述代碼,再將所述HTML代碼發(fā)送給所述客戶端。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述web應(yīng)用程序性能反饋頁面中包含用于接收web應(yīng)用程序性能反饋信息的表單。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中之后,所述方法還包括 從所述日志中查找大于預(yù)設(shè)時間值的所述響應(yīng)時間,確定查找到的所述響應(yīng)時間對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址然后輸出該網(wǎng)絡(luò)地址。
5.—種web服務(wù)器,其特征在于,包括 第一接收模塊,用于接收應(yīng)用服務(wù)器對客戶端請求的響應(yīng); 分配模塊,用于為所述客戶端請求分配客戶端請求標(biāo)識; 保存模塊,用于將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中; 第一發(fā)送模塊,用于將所述響應(yīng)內(nèi)容、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給所述客戶端; 第二接收模塊,用于接收所述客戶端通過所述頁面獲取并發(fā)送的web應(yīng)用程序性能反饋信息以及對應(yīng)該反饋信息發(fā)送的客戶端請求標(biāo)識; 第二發(fā)送模塊,用于將所述反饋信息和所述標(biāo)識對應(yīng)地發(fā)送至數(shù)據(jù)庫。
6.一種監(jiān)控web應(yīng)用程序性能的系統(tǒng),其特征在于,包括web服務(wù)器和分析裝置,其中web服務(wù)器,用干 在向應(yīng)用服務(wù)器轉(zhuǎn)發(fā)客戶端請求后,接收應(yīng)用服務(wù)器執(zhí)行應(yīng)用程序邏輯后返回給所述客戶端的響應(yīng)內(nèi)容,并為所述客戶端請求分配客戶端請求標(biāo)識,然后, 將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中,將所述響應(yīng)內(nèi)容、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給所述客戶端, 接收所述客戶端通過所述頁面獲取的web應(yīng)用程序性能反饋信息,然后將所述標(biāo)識和所述web應(yīng)用程序性能反饋信息對應(yīng)地保存在數(shù)據(jù)庫中; 分析裝置,用干 接收所述web應(yīng)用程序性能反饋頁面獲取的反饋信息,在所述數(shù)據(jù)庫中搜索該反饋信息對應(yīng)的客戶端請求標(biāo)識,在所述日志中查詢該客戶端請求標(biāo)識對應(yīng)的響應(yīng)時間,并在該響應(yīng)時間大于預(yù)設(shè)值的情況下輸出該響應(yīng)時間對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址或輸出報警信息。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述web服務(wù)器包括 第一接收模塊,用于接收應(yīng)用服務(wù)器對客戶端請求的響應(yīng); 分配模塊,用于為所述客戶端請求分配客戶端請求標(biāo)識; 保存模塊,用于將所述應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、所述應(yīng)用服務(wù)器對所述客戶端請求的響應(yīng)時間、以及所述客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中; 第一發(fā)送模塊,用于將所述響應(yīng)內(nèi)容、所述標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給所述客戶端; 第二接收模塊,用于接收所述客戶端通過所述頁面獲取的web應(yīng)用程序性能反饋信息以及對應(yīng)該反饋信息發(fā)送的客戶端請求標(biāo)識; 第二發(fā)送模塊,用于將所述反饋信息和所述標(biāo)識對應(yīng)地發(fā)送給數(shù)據(jù)庫。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述第一發(fā)送模塊還用于在作為所述響應(yīng)內(nèi)容的HTML代碼中記錄所述標(biāo)識以及所述代碼,再將所述HTML代碼發(fā)送給所述客戶端。
9 根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述分析裝置包括 接收模塊,用于接收所述web應(yīng)用程序性能反饋頁面獲取的反饋信息; 捜索模塊,用于在所述數(shù)據(jù)庫中搜索該反饋信息對應(yīng)的客戶端請求標(biāo)識; 查詢模塊,用于在所述日志中查詢所述搜索模塊搜索到的客戶端請求標(biāo)識對應(yīng)的響應(yīng)時間; 分析輸出模塊,用于在所述查詢模塊查詢到的響應(yīng)時間大于預(yù)設(shè)值的情況下輸出該響應(yīng)時間對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址。
10.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述分析裝置包括 查找模塊,用于從所述日志中查找大于預(yù)設(shè)時間值的所述響應(yīng)時間,并且確定該響應(yīng)時間所對應(yīng)的應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址; 提示模塊,用于輸出所述查找模塊確定的網(wǎng)絡(luò)地址。
全文摘要
本申請?zhí)峁┝艘环N監(jiān)控web應(yīng)用程序性能的方法、系統(tǒng)和web服務(wù)器,以解決現(xiàn)有技術(shù)中難以有效監(jiān)控web應(yīng)用程序性能或者監(jiān)控效果不佳的問題。該方法包括web服務(wù)器在向應(yīng)用服務(wù)器轉(zhuǎn)發(fā)客戶端請求后,接收應(yīng)用服務(wù)器的響應(yīng)內(nèi)容,并為客戶端請求分配客戶端請求標(biāo)識,然后將應(yīng)用服務(wù)器的網(wǎng)絡(luò)地址、應(yīng)用服務(wù)器對客戶端請求的響應(yīng)時間、以及客戶端請求標(biāo)識三者相對應(yīng)地保存在日志中,將響應(yīng)內(nèi)容、標(biāo)識和用于呈現(xiàn)web應(yīng)用程序性能反饋頁面的代碼對應(yīng)地發(fā)送給客戶端,接收客戶端對應(yīng)地提交的標(biāo)識和通過頁面獲取的web應(yīng)用程序性能反饋信息,然后將標(biāo)識和web應(yīng)用程序性能反饋信息對應(yīng)地保存在數(shù)據(jù)庫中;分析裝置對保存的數(shù)據(jù)以及日志進(jìn)行分析以確定應(yīng)用程序的性能。
文檔編號H04L29/08GK102684934SQ201110064820
公開日2012年9月19日 申請日期2011年3月17日 優(yōu)先權(quán)日2011年3月17日
發(fā)明者何進(jìn), 余金波 申請人:阿里巴巴集團(tuán)控股有限公司