Java Web應(yīng)用性能診斷方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及應(yīng)用性能管理領(lǐng)域,尤其涉及一種Java Web應(yīng)用性能診斷方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,具有卓越的通用性、高效性、平臺(tái)移植性和安全性。Java Web是用Java技術(shù)來(lái)解決相關(guān)web互聯(lián)網(wǎng)領(lǐng)域的技術(shù)總和。
[0003]為了監(jiān)控WEB服務(wù)器應(yīng)用的性能,存在兩類性能監(jiān)測(cè)工具。一類工具通過(guò)追蹤HTTP的請(qǐng)求過(guò)程來(lái)記錄應(yīng)用的性能、網(wǎng)絡(luò)信息和故障,此類工具具有可以從服務(wù)器外部發(fā)起、模擬用戶發(fā)起網(wǎng)絡(luò)請(qǐng)求、不針對(duì)具體的服務(wù)器編程語(yǔ)言等特征。然而此類工具有以下幾個(gè)缺點(diǎn):1)模擬用戶發(fā)起請(qǐng)求,如果采樣數(shù)量少,數(shù)據(jù)會(huì)不準(zhǔn)確,如果采樣數(shù)量大,會(huì)對(duì)服務(wù)器造成額外的壓力2)僅能記錄應(yīng)用的總響應(yīng)性能,無(wú)法更深入的追蹤到代碼級(jí)別,出現(xiàn)服務(wù)器性能問(wèn)題時(shí)無(wú)法定位具體原因。
[0004]另一類工具可對(duì)應(yīng)用服務(wù)器的性能進(jìn)行級(jí)監(jiān)控,例如JProfiler。此類工具可以查看當(dāng)前應(yīng)用的對(duì)象、對(duì)象引用、內(nèi)存、CPU使用情況、線程、線程運(yùn)行情況(阻塞、等待等),同時(shí)可以查找應(yīng)用內(nèi)存使用得熱點(diǎn),即:哪個(gè)對(duì)象占用的內(nèi)存比較多;或者CPU熱點(diǎn),即:哪個(gè)方法占用較大的CPU資源。然而此類工具有以下幾個(gè)缺點(diǎn):1)系統(tǒng)資源消耗大;2)僅監(jiān)控性能數(shù)據(jù),無(wú)法提供故障信息;3)性能數(shù)據(jù)不直觀,只有函數(shù)名稱及其對(duì)應(yīng)性能,沒(méi)有按照用途進(jìn)行分類,大部分沒(méi)有專業(yè)技能的人員不了解數(shù)據(jù)含義。
【發(fā)明內(nèi)容】
[0005]針對(duì)傳統(tǒng)技術(shù)的上述缺陷,本發(fā)明實(shí)施例提供一種Java Web應(yīng)用性能診斷方法及
目-ο
[0006]本發(fā)明實(shí)施例提供一種Java Web應(yīng)用性能診斷方法,方法包括如下步驟:
[0007]獲取處理HTTP請(qǐng)求的應(yīng)用的應(yīng)用配置信息,所述應(yīng)用配置信息包括是否開啟監(jiān)控服務(wù)開關(guān)、是否開啟記錄代碼執(zhí)行過(guò)程開關(guān)、代碼執(zhí)行時(shí)間閾值;
[0008]根據(jù)所述應(yīng)用配置信息對(duì)所述應(yīng)用開啟監(jiān)控服務(wù);
[0009]所述應(yīng)用結(jié)束時(shí),獲取所述應(yīng)用的代碼執(zhí)行時(shí)間;
[0010]根據(jù)所述應(yīng)用配置信息和所述應(yīng)用的代碼執(zhí)行時(shí)間記錄所述應(yīng)用的代碼的執(zhí)行過(guò)程數(shù)據(jù)。
[0011]在另一實(shí)施例中,所述獲取處理HTTP請(qǐng)求的應(yīng)用的應(yīng)用配置信息,包括:
[0012]獲取HTTP請(qǐng)求;
[0013]根據(jù)所述HTTP請(qǐng)求獲取請(qǐng)求的URL地址;
[0014]根據(jù)所述URL地址從哈希表中獲取處理所述HTTP請(qǐng)求的應(yīng)用的應(yīng)用配置信息,所述哈希表中存儲(chǔ)了所述URL地址與所述應(yīng)用的應(yīng)用配置信息的映射關(guān)系。
[0015]在另一實(shí)施例中,所述根據(jù)所述應(yīng)用配置信息對(duì)所述應(yīng)用開啟監(jiān)控服務(wù),包括:
[0016]根據(jù)所述應(yīng)用配置信息,判斷所述應(yīng)用的監(jiān)控服務(wù)開關(guān)是否處于開啟狀態(tài);
[0017]若所述監(jiān)控服務(wù)開關(guān)處于開啟狀態(tài),則開啟針對(duì)所述應(yīng)用的監(jiān)控服務(wù)。
[0018]在另一實(shí)施例中,所述根據(jù)所述應(yīng)用配置信息和所述應(yīng)用的代碼執(zhí)行時(shí)間記錄所述應(yīng)用的代碼的執(zhí)行過(guò)程數(shù)據(jù),包括:
[0019]判斷所述應(yīng)用的代碼執(zhí)行時(shí)間是否大于所述代碼執(zhí)行時(shí)間閾值,且所述應(yīng)用的所述記錄代碼執(zhí)行過(guò)程開關(guān)開啟;
[0020]若是,則記錄所述應(yīng)用的代碼的執(zhí)行過(guò)程數(shù)據(jù)。
[0021]在另一實(shí)施例中,所述應(yīng)用包括Http Servlet、數(shù)據(jù)庫(kù)訪問(wèn)、Framework、Memcache>NoSql、Except1n。
[0022]在本實(shí)施例的技術(shù)方案中,通過(guò)獲取處理HTTP請(qǐng)求的應(yīng)用的應(yīng)用配置信息,根據(jù)應(yīng)用配置信息對(duì)該應(yīng)用開啟監(jiān)控服務(wù);應(yīng)用結(jié)束時(shí),獲取該應(yīng)用的代碼執(zhí)行時(shí)間;根據(jù)應(yīng)用配置信息和應(yīng)用的代碼執(zhí)行時(shí)間記錄該應(yīng)用的代碼的執(zhí)行過(guò)程數(shù)據(jù)。實(shí)現(xiàn)依據(jù)不同的的HTTP請(qǐng)求中的URL地址從Java Web應(yīng)用性能診斷裝置中讀取動(dòng)態(tài)的應(yīng)用設(shè)置,避免研發(fā)人員的介入。
[0023]本發(fā)明實(shí)施例提供一種Java Web應(yīng)用性能診斷裝置,所述裝置包括:
[0024]獲取模塊,用于獲取處理HTTP請(qǐng)求的應(yīng)用的應(yīng)用配置信息,所述應(yīng)用配置信息包括是否開啟監(jiān)控服務(wù)開關(guān)、是否開啟記錄代碼執(zhí)行過(guò)程開關(guān)、代碼執(zhí)行時(shí)間閾值;
[0025]監(jiān)控模塊,用于根據(jù)所述應(yīng)用配置信息對(duì)所述應(yīng)用開啟監(jiān)控服務(wù);
[0026]處理模塊,用于所述應(yīng)用結(jié)束時(shí),獲取所述應(yīng)用的代碼執(zhí)行時(shí)間;
[0027]記錄模塊,用于根據(jù)所述應(yīng)用配置信息和所述應(yīng)用的代碼執(zhí)行時(shí)間記錄所述應(yīng)用的代碼的執(zhí)行過(guò)程數(shù)據(jù)。
[0028]在另一實(shí)施例中,所述獲取模塊包括:
[0029]第一獲取單元,用于獲取HTTP請(qǐng)求;
[0030]第二獲取單元,用于根據(jù)所述HTTP請(qǐng)求獲取請(qǐng)求的URL地址;
[0031 ] 第三獲取單元,用于根據(jù)所述URL地址從哈希表中獲取處理所述HTTP請(qǐng)求的應(yīng)用的應(yīng)用配置信息,所述哈希表中存儲(chǔ)了所述URL地址與所述應(yīng)用的應(yīng)用配置信息的映射關(guān)系。
[0032]在另一實(shí)施例中,所述監(jiān)控模塊包括:
[0033]第一判斷單元,用于根據(jù)所述應(yīng)用配置信息,判斷所述應(yīng)用的監(jiān)控服務(wù)開關(guān)是否處于開啟狀態(tài);
[0034]監(jiān)控單元,用于若所述監(jiān)控服務(wù)開關(guān)處于開啟狀態(tài),則開啟針對(duì)所述應(yīng)用的監(jiān)控服務(wù)。
[0035]在另一實(shí)施例中,所述記錄模塊包括:
[0036]第二判斷單元,用于判斷所述應(yīng)用的代碼執(zhí)行時(shí)間是否大于所述代碼執(zhí)行時(shí)間閾值,且所述應(yīng)用的所述記錄代碼執(zhí)行過(guò)程開關(guān)開啟;
[0037]記錄單元,用于若所述應(yīng)用的代碼執(zhí)行時(shí)間大于所述代碼執(zhí)行時(shí)間閾值,且所述應(yīng)用的所述記錄代碼執(zhí)行過(guò)程開關(guān)開啟,則記錄所述應(yīng)用的代碼的執(zhí)行過(guò)程數(shù)據(jù)。
[0038]在另一實(shí)施例中,所述應(yīng)用包括Http Servlet、數(shù)據(jù)庫(kù)訪問(wèn)、Framework、Memcacheλ NoSql、Except1n。
[0039]在本實(shí)施例的技術(shù)方案中,通過(guò)獲取處理HTTP請(qǐng)求的應(yīng)用的應(yīng)用配置信息,根據(jù)應(yīng)用配置信息對(duì)該應(yīng)用開啟監(jiān)控服務(wù);應(yīng)用結(jié)束時(shí),獲取該應(yīng)用的代碼執(zhí)行時(shí)間;根據(jù)應(yīng)用配置信息和應(yīng)用的代碼執(zhí)行時(shí)間記錄該應(yīng)用的代碼的執(zhí)行過(guò)程數(shù)據(jù)。實(shí)現(xiàn)依據(jù)不同的的HTTP請(qǐng)求中的URL地址從Java Web應(yīng)用性能診斷裝置中讀取動(dòng)態(tài)的應(yīng)用設(shè)置,避免研發(fā)人員的介入。
【附圖說(shuō)明】
[0040]圖1為本發(fā)明JavaWeb應(yīng)用性能診斷方法第一實(shí)施例流程圖;
[0041]圖2為本發(fā)明Java Web應(yīng)用性能診斷方法第二實(shí)施例流程圖
[0042]圖3為本發(fā)明Java Web應(yīng)用性能診斷裝置第一結(jié)構(gòu)示意圖;
[0043]圖4為本發(fā)明Java Web應(yīng)用性能診斷裝置第二結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0044]多個(gè)Java應(yīng)用運(yùn)行于Java Web服務(wù)器的JVM虛擬機(jī)之上,客戶端發(fā)送HTTP請(qǐng)求至Java Web服務(wù)器時(shí),Java Web服務(wù)器會(huì)立刻啟動(dòng)一個(gè)對(duì)應(yīng)的應(yīng)用處理該HTTP請(qǐng)求。本發(fā)明各實(shí)施例主要用于監(jiān)測(cè)Java Web服務(wù)器處理HTTP請(qǐng)求的應(yīng)用性能。
[0045]圖1為本發(fā)明Java Web應(yīng)用性能診斷方法第一實(shí)施例流程圖,如圖1所示,本發(fā)明實(shí)施例所提供的Java Web應(yīng)用性能診斷方法由Java Web應(yīng)用性能診斷裝置執(zhí)行,Java Web應(yīng)用性能診斷裝置可采用軟件/硬件實(shí)現(xiàn),該方法包括:
[0046]步驟S100,獲取處理HTTP請(qǐng)求的應(yīng)用的應(yīng)用配置信息;
[0047]具體地,客戶端發(fā)送HTTP請(qǐng)求至Java Web服務(wù)器,Java Web服務(wù)器啟動(dòng)處理該HTTP請(qǐng)求的應(yīng)用,Java Web應(yīng)用性能診斷裝置獲取該HTTP請(qǐng)求。該HTTP請(qǐng)求中包括對(duì)應(yīng)應(yīng)用的URL地址,Java Web應(yīng)用性能診斷裝置根據(jù)URL地址獲取處理該HTTP請(qǐng)求的應(yīng)用的應(yīng)用配置信息,其中應(yīng)用配置信息中包括是否開啟監(jiān)控服務(wù)開關(guān)、是否開啟記錄代碼執(zhí)行過(guò)程開關(guān)、代碼執(zhí)行時(shí)間閾值。
[0048]在另一實(shí)施例中,Java Web應(yīng)用性能診斷裝置通過(guò)SevletContext獲取應(yīng)用名稱,根據(jù)應(yīng)用名稱獲取處理HTTP請(qǐng)求的應(yīng)用的應(yīng)用配置信息。
[0049]在另一實(shí)施例中,用戶可以預(yù)先設(shè)置某個(gè)應(yīng)用的應(yīng)用配置信息。例如用戶在JavaWeb應(yīng)用性能診斷裝置中指定僅檢測(cè)某個(gè)虛擬主機(jī)下的應(yīng)用;或禁用對(duì)某個(gè)應(yīng)用或URL的監(jiān)控服務(wù)。
[0050]步驟S102,根據(jù)所述應(yīng)用配置信息對(duì)所述應(yīng)用開啟監(jiān)控服務(wù);
[0051]判斷應(yīng)用配置