亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種快照抓取方法和數(shù)據(jù)監(jiān)控工具的制作方法

文檔序號(hào):6633185閱讀:266來(lái)源:國(guó)知局
一種快照抓取方法和數(shù)據(jù)監(jiān)控工具的制作方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例公開(kāi)了一種快照抓取方法和數(shù)據(jù)監(jiān)控工具,用于在Tomcat服務(wù)器中,準(zhǔn)確的定位WEB應(yīng)用發(fā)生間歇性響應(yīng)變慢的時(shí)間點(diǎn),及時(shí)在間歇性響應(yīng)變慢時(shí)抓取到重要信息。本發(fā)明實(shí)施例方法包括:數(shù)據(jù)監(jiān)控工具獲取Tomcat服務(wù)器中WEB應(yīng)用的繁忙線程數(shù),當(dāng)確定該繁忙線程數(shù)大于預(yù)置線程閾值時(shí),獲取該Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照。
【專(zhuān)利說(shuō)明】一種快照抓取方法和數(shù)據(jù)監(jiān)控工具

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種快照抓取方法和數(shù)據(jù)監(jiān)控工具。

【背景技術(shù)】
[0002]部署在Tomcat服務(wù)器中的WEB應(yīng)用,當(dāng)應(yīng)用發(fā)生阻塞或者前端有超過(guò)預(yù)計(jì)并發(fā)的訪問(wèn)時(shí),應(yīng)用系統(tǒng)響應(yīng)往往會(huì)變慢,這會(huì)影響用戶的使用,有時(shí)候這個(gè)影響會(huì)持續(xù)一段時(shí)間,有時(shí)候就短短幾秒。
[0003]目前,有監(jiān)控工具監(jiān)控系統(tǒng)的健康狀態(tài),當(dāng)應(yīng)用發(fā)生阻塞或者前端有超過(guò)預(yù)計(jì)并發(fā)的訪問(wèn)時(shí),該監(jiān)控工具發(fā)出警報(bào),提示用戶該應(yīng)用不可使用。
[0004]在實(shí)際應(yīng)用中,僅僅反映應(yīng)用的可用性狀況,并不能解決使得應(yīng)用響應(yīng)變慢的問(wèn)題,在用戶的正式環(huán)境中,發(fā)生這種間歇性響應(yīng)變慢時(shí),如果不及時(shí)抓取到重要的信息,后續(xù)就很難定位問(wèn)題,因?yàn)閱?wèn)題發(fā)生的時(shí)間很難確定,而靠人工分析也難以把握住時(shí)間點(diǎn)。


【發(fā)明內(nèi)容】

[0005]本發(fā)明實(shí)施例提供了一種快照抓取方法和數(shù)據(jù)監(jiān)控工具,用于在Tomcat服務(wù)器中,準(zhǔn)確的定位WEB應(yīng)用發(fā)生間歇性響應(yīng)變慢的時(shí)間點(diǎn),及時(shí)在間歇性響應(yīng)變慢時(shí)抓取到重要信息。
[0006]一種快照抓取方法,包括:
[0007]數(shù)據(jù)監(jiān)控工具獲取Tomcat服務(wù)器的繁忙線程數(shù);
[0008]當(dāng)確定所述繁忙線程數(shù)大于預(yù)置線程閾值時(shí),所述數(shù)據(jù)監(jiān)控工具獲取所述Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照。
[0009]一種數(shù)據(jù)監(jiān)控工具,包括:
[0010]線程獲取模塊,用于獲取Tomcat服務(wù)器的繁忙線程數(shù);
[0011]快照獲取模塊,用于當(dāng)確定所述線程獲取模塊獲取的繁忙線程數(shù)大于預(yù)置線程閾值時(shí),獲取所述Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照。
[0012]從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):當(dāng)確定繁忙線程數(shù)大于預(yù)置線程閾值時(shí),獲取該Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照。繁忙線程數(shù),表示實(shí)際正在處理HTTP請(qǐng)求業(yè)務(wù)的線程數(shù),一般狀況下,繁忙線程數(shù)可能比較低,當(dāng)發(fā)生瞬間訪問(wèn)量增大或者系統(tǒng)發(fā)生阻塞時(shí),繁忙線程數(shù)就會(huì)增加,有時(shí)可能突然增加很大,有時(shí)可能持續(xù)增大,這時(shí),系統(tǒng)的響應(yīng)就會(huì)變慢,導(dǎo)致間歇性響應(yīng)變慢,這樣,設(shè)置一個(gè)預(yù)置線程閾值,當(dāng)超過(guò)預(yù)置線程閾值時(shí),數(shù)據(jù)監(jiān)控工具就抓取JVM線程快照,同時(shí)抓取Tomcat服務(wù)器中的HTTP請(qǐng)求快照,這樣就準(zhǔn)確的定位了 WEB應(yīng)用發(fā)生間歇性響應(yīng)變慢的時(shí)間點(diǎn),抓到HTTP請(qǐng)求內(nèi)容的快照,同時(shí)又抓住了 JVM線程的快照這兩個(gè)重要信息,HTTP請(qǐng)求表示要做什么,JVM線程表示實(shí)際在做什么,將這兩個(gè)重要信息結(jié)合,可以很方便的確定出是因?yàn)槭裁丛驅(qū)е碌拈g歇性響應(yīng)變慢。

【專(zhuān)利附圖】

【附圖說(shuō)明】
[0013]圖1為本發(fā)明實(shí)施例中快照抓取方法一個(gè)流程示意圖;
[0014]圖2為本發(fā)明實(shí)施例中快照抓取方法另一個(gè)流程示意圖;
[0015]圖3為本發(fā)明實(shí)施例中獲取第一組件的數(shù)據(jù)一個(gè)實(shí)例示意圖;
[0016]圖4為本發(fā)明實(shí)施例中獲取JVM線程快照的組件一個(gè)實(shí)例示意圖;
[0017]圖5為本發(fā)明實(shí)施例中獲取HTTP請(qǐng)求快照的組件一個(gè)實(shí)例示意圖;
[0018]圖6為本發(fā)明實(shí)施例中HTTP請(qǐng)求快照一個(gè)實(shí)例示意圖;
[0019]圖7為本發(fā)明實(shí)施例中JVM線程快照一個(gè)實(shí)例示意圖;
[0020]圖8為本發(fā)明實(shí)施例中數(shù)據(jù)監(jiān)控工具一個(gè)結(jié)構(gòu)示意圖;
[0021]圖9為本發(fā)明實(shí)施例中數(shù)據(jù)監(jiān)控工具另一個(gè)結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0022]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0023]此處在本發(fā)明的描述中使用的術(shù)語(yǔ)是用于描述特定實(shí)施例的目的并且不旨在作為對(duì)本發(fā)明的限制。
[0024]術(shù)語(yǔ)“Tomcat 服務(wù)器”是 Apache 軟件基金會(huì)(Apache Software Foundat1n)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun和其他一些公司及個(gè)人共同開(kāi)發(fā)而成,Tomcat服務(wù)器是一個(gè)免費(fèi)的開(kāi)放源代碼的Web應(yīng)用服務(wù)器,基于JMX的服務(wù)器全面監(jiān)視及Web程序管理。
[0025]術(shù)語(yǔ)“JMX(JavaManagement Extens1ns, Java 管理擴(kuò)展)”是一個(gè)為應(yīng)用程序、設(shè)備、系統(tǒng)等植入管理功能的框架。JMX可以跨越一系列異構(gòu)操作系統(tǒng)平臺(tái)、系統(tǒng)體系結(jié)構(gòu)和網(wǎng)絡(luò)傳輸協(xié)議,靈活的開(kāi)發(fā)無(wú)縫集成的系統(tǒng)、網(wǎng)絡(luò)和服務(wù)管理應(yīng)用?!?br> [0026]術(shù)語(yǔ)“WEB應(yīng)用”表示一種可以通過(guò)網(wǎng)頁(yè)Web訪問(wèn)的應(yīng)用程序。
[0027]術(shù)語(yǔ)“繁忙線程數(shù)”表示Tomcat服務(wù)器中實(shí)際正在處理具體事務(wù)的HTTP線程的數(shù)目。相應(yīng)的,還有Tomcat服務(wù)器中的“線程總數(shù)”,表示Tomcat服務(wù)器中可以使用的線程數(shù)目,Tomcat服務(wù)器中繁忙線程數(shù)不能超過(guò)它的線程總數(shù)。
[0028]術(shù)語(yǔ)“預(yù)置線程閾值”為預(yù)設(shè)的線程閾值,其可以根據(jù)Tomcat服務(wù)器中的線程總數(shù)來(lái)設(shè)定,例如設(shè)定為線程總數(shù)的1/2、3/4,或者4/5等,還可以根據(jù)Tomcat服務(wù)器正常運(yùn)行一般需要的線程數(shù)來(lái)設(shè)定,例如設(shè)定為50個(gè)、100個(gè)、130個(gè)等,還可以有很多的設(shè)定方式,保證其不超過(guò)線程總數(shù)且能滿足Tomcat服務(wù)器中WEB應(yīng)用的正常使用,具體的設(shè)定方式,此處不作限定。
[0029]術(shù)語(yǔ)“ JVM線程快照”表示當(dāng)前所有JVM正在執(zhí)行與已經(jīng)執(zhí)行過(guò)的方法調(diào)用序列的一個(gè)集合,各個(gè)線程執(zhí)行不同的方法調(diào)用,各個(gè)線程采用線程序列號(hào)進(jìn)行區(qū)分,JVM線程快照里既包含了當(dāng)前正在執(zhí)行的方法調(diào)用,也包含了該線程完成前的所有歷史方法調(diào)用,通過(guò)一個(gè)JVM線程快照,可以知道一個(gè)線程從開(kāi)始到當(dāng)前都執(zhí)行了什么方法調(diào)用。其中,術(shù)語(yǔ)“JVM”是Java Virtual Machine (Java虛擬機(jī))的縮寫(xiě),JVM是一種用于計(jì)算設(shè)備的規(guī)范,它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。
[0030]術(shù)語(yǔ)“Http請(qǐng)求快照”表示當(dāng)前所有訪問(wèn)Tomcat服務(wù)器的Http請(qǐng)求的一個(gè)集合,其中包含有Http請(qǐng)求的內(nèi)容。
[0031]請(qǐng)參閱圖1,本發(fā)明實(shí)施例中快照抓取方法一個(gè)實(shí)施例包括:
[0032]101、數(shù)據(jù)監(jiān)控工具獲取Tomcat服務(wù)器的繁忙線程數(shù);
[0033]當(dāng)Tomcat服務(wù)器運(yùn)行時(shí),數(shù)據(jù)監(jiān)控工具可以持續(xù)的實(shí)時(shí)獲取Tomcat服務(wù)器的繁忙線程數(shù)。
[0034]102、當(dāng)確定所述繁忙線程數(shù)大于預(yù)置線程閾值時(shí),所述數(shù)據(jù)監(jiān)控工具獲取所述Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照。
[0035]數(shù)據(jù)監(jiān)控工具獲取到Tomcat服務(wù)器的繁忙線程數(shù)后,會(huì)與預(yù)置線程閾值進(jìn)行比較,當(dāng)確定該繁忙線程數(shù)大于預(yù)置線程閾值時(shí),該數(shù)據(jù)監(jiān)控工具獲取Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照。
[0036]該HTTP請(qǐng)求快照中包含有當(dāng)前訪問(wèn)Tomcat服務(wù)器的Http請(qǐng)求的內(nèi)容,表示需要運(yùn)行在Tomcat服務(wù)器上的WEB應(yīng)用執(zhí)行什么操作,JVM線程快照中包含有JVM正在執(zhí)行與已經(jīng)執(zhí)行過(guò)的方法調(diào)用序列,表示該運(yùn)行在Tomcat服務(wù)器上的WEB應(yīng)用執(zhí)行了什么操作。
[0037]可以理解的是,該預(yù)置線程閾值應(yīng)該設(shè)定在不超過(guò)線程總數(shù)且能滿足Tomcat服務(wù)器上的WEB應(yīng)用的正常使用的范圍內(nèi),若預(yù)置線程閾值設(shè)置合理,當(dāng)繁忙線程數(shù)大于預(yù)置線程閾值時(shí),即表示Tomcat服務(wù)器上的WEB應(yīng)用瞬間響應(yīng)量變大,或者系統(tǒng)發(fā)生阻塞,即將進(jìn)入響應(yīng)變慢的狀態(tài),此時(shí)獲取HTTP請(qǐng)求快照和JVM線程快照正好可以獲取到使得響應(yīng)變慢的原因的重要信息。
[0038]本發(fā)明實(shí)施例中當(dāng)確定繁忙線程數(shù)大于預(yù)置線程閾值時(shí),獲取該Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照。繁忙線程數(shù),表示實(shí)際正在處理HTTP請(qǐng)求業(yè)務(wù)的線程數(shù),一般狀況下,繁忙線程數(shù)可能比較低,當(dāng)發(fā)生瞬間訪問(wèn)量增大或者系統(tǒng)發(fā)生阻塞時(shí),繁忙線程數(shù)就會(huì)增加,有時(shí)可能突然增加很大,有時(shí)可能持續(xù)增大,這時(shí),系統(tǒng)的響應(yīng)就會(huì)變慢,導(dǎo)致間歇性響應(yīng)變慢,這樣,設(shè)置一個(gè)預(yù)置線程閾值,當(dāng)超過(guò)預(yù)置線程閾值時(shí),數(shù)據(jù)監(jiān)控工具就抓取JVM線程快照,同時(shí)抓取TOMCAT服務(wù)器中的HTTP請(qǐng)求快照,這樣就準(zhǔn)確的定位了 WEB應(yīng)用發(fā)生間歇性響應(yīng)變慢的時(shí)間點(diǎn),抓到HTTP請(qǐng)求內(nèi)容的快照,同時(shí)又抓住了 JVM線程的快照這兩個(gè)重要信息,HTTP請(qǐng)求表示要做什么,JVM線程表示實(shí)際在做什么,將這兩個(gè)重要信息結(jié)合,可以很方便的確定出是因?yàn)槭裁丛驅(qū)е碌拈g歇性響應(yīng)變慢。
[0039]下面對(duì)本發(fā)明實(shí)施例中的快照抓取方法進(jìn)行具體描述,請(qǐng)參閱圖2,本發(fā)明實(shí)施例中快照抓取方法另一個(gè)實(shí)施例包括:
[0040]201、數(shù)據(jù)監(jiān)控工具通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第一組件的數(shù)據(jù),所述第一組件的數(shù)據(jù)中包括有所述Tomcat服務(wù)器的繁忙線程數(shù)和線程總數(shù);
[0041]當(dāng)Tomcat服務(wù)器運(yùn)行時(shí),數(shù)據(jù)監(jiān)控工具通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第一組件的數(shù)據(jù),所述第一組件的數(shù)據(jù)中包括有所述Tomcat服務(wù)器的繁忙線程數(shù)和線程總數(shù)。
[0042]如圖3所示,為利用Java語(yǔ)言的軟件開(kāi)發(fā)工具包((Java Development Kit, JDK)里面的一個(gè)工具Jconsole獲取該第一組件的數(shù)據(jù)的示例,其中屬性currentThreadsBusy的值表示當(dāng)前的繁忙線程數(shù),屬性currentThreadCount的值表示當(dāng)前的總線程數(shù)。
[0043]202、所述數(shù)據(jù)監(jiān)控工具根據(jù)所述線程總數(shù)確定預(yù)置線程閾值;
[0044]數(shù)據(jù)監(jiān)控工具得到該WEB應(yīng)用的線程總數(shù)后,根據(jù)該線程總數(shù)確定預(yù)置線程閾值,該預(yù)置線程閾值不大于該線程總數(shù)。
[0045]分配給Tomcat服務(wù)器中WEB應(yīng)用的線程總數(shù)是Tomcat等WEB容器一個(gè)很重要的資源池,用來(lái)響應(yīng)瀏覽器發(fā)起的HTTP請(qǐng)求,一般線程總數(shù)的大小是可以配置的,具體配置多少要根據(jù)WEB應(yīng)用的特征跟應(yīng)用服務(wù)器硬件的處理能力而定。例如,一般對(duì)于8線程SG內(nèi)存的設(shè)備,將線程總數(shù)大小配置為200個(gè)較為合適。
[0046]繁忙線程數(shù)就是那些正在處理具體事務(wù)的HTTP線程,這個(gè)數(shù)越大,說(shuō)明當(dāng)前正在處理的事務(wù)越多,當(dāng)達(dá)到一定數(shù)量的時(shí)候,硬件的計(jì)算資源可能會(huì)出現(xiàn)瓶頸,因此前端用戶就會(huì)有變慢的感覺(jué),或者當(dāng)發(fā)生什么特別的異常,如數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題、網(wǎng)絡(luò)出現(xiàn)問(wèn)題、磁盤(pán)1出現(xiàn)問(wèn)題等,HTTP線程都可能出現(xiàn)大量等待,這時(shí)繁忙線程數(shù)可能快速上漲,這時(shí)候只有捕捉到快照才能定位問(wèn)題出現(xiàn)在哪里,所以我們?cè)谶@里就設(shè)置一個(gè)預(yù)置線程閾值,當(dāng)超過(guò)預(yù)置線程閾值的時(shí)候就自動(dòng)抓取快照,一般這個(gè)預(yù)置線程閾值設(shè)置為線程總數(shù)的一半較為合適;例如,配置線程總數(shù)為200,那么預(yù)置線程閾值可以設(shè)置為100,當(dāng)然,根據(jù)具體的情況還可以有其他的設(shè)置方式,例如設(shè)置另外的數(shù)值,或者,按其他的百分比來(lái)設(shè)定,此處不做限定。
[0047]203、當(dāng)確定所述繁忙線程數(shù)大于預(yù)置線程閾值時(shí),數(shù)據(jù)監(jiān)控工具通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第二組件的數(shù)據(jù),所述第二組件的數(shù)據(jù)中包括有HTTP請(qǐng)求數(shù)據(jù);
[0048]當(dāng)確定該線程繁忙數(shù)大于預(yù)置線程閾值時(shí),該數(shù)據(jù)監(jiān)控工具通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第二組件的數(shù)據(jù),該第二組件的數(shù)據(jù)中包括有HTTP請(qǐng)求數(shù)據(jù);
[0049]如圖4所示,為利用Java語(yǔ)言的軟件開(kāi)發(fā)工具包((Java Development Kit,JDK)里面的一個(gè)工具Jconsole獲取該第二組件的數(shù)據(jù)的示例,其中,第二組件下文件夾RequestProcessor中即記錄了 Tomcat服務(wù)器中響應(yīng)各HTTP請(qǐng)求的線程,每個(gè)對(duì)象中包含有具體的HTTP請(qǐng)求的內(nèi)容。
[0050]204、當(dāng)確定所述繁忙線程數(shù)大于預(yù)置線程閾值時(shí),數(shù)據(jù)監(jiān)控工具通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第三組件的數(shù)據(jù),所述第三組件的數(shù)據(jù)中包括有JVM線程數(shù)據(jù);
[0051]當(dāng)確定所述繁忙線程數(shù)大于預(yù)置線程閾值時(shí),數(shù)據(jù)監(jiān)控工具通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第三組件的數(shù)據(jù),所述第三組件的數(shù)據(jù)中包括有JVM線程數(shù)據(jù);
[0052]如圖5所示,為利用Java語(yǔ)言的軟件開(kāi)發(fā)工具包((Java Development Kit,JDK)里面的一個(gè)工具Jconsole獲取該第三組件的數(shù)據(jù)的示例,其中,通過(guò)該第三組件Threading即可得到Tomcat服務(wù)器的JVM線程數(shù)據(jù)。
[0053]可以理解的是,步驟204可以在步驟203之前執(zhí)行,可以在步驟203之后執(zhí)行,也可以與步驟203同時(shí)執(zhí)行,此處不作限定。
[0054]205、所述數(shù)據(jù)監(jiān)控工具根據(jù)所述HTTP請(qǐng)求數(shù)據(jù)生成所述Tomcat服務(wù)器的HTTP請(qǐng)求快照,根據(jù)所述JVM線程數(shù)據(jù)生成所述Tomcat服務(wù)器的JVM線程快照。
[0055]該數(shù)據(jù)監(jiān)控工具得到Tomcat服務(wù)器的HTTP請(qǐng)求數(shù)據(jù)后,可以根據(jù)該HTTP請(qǐng)求數(shù)據(jù)生成HTTP請(qǐng)求快照,得到Tomcat服務(wù)器的JVM線程數(shù)據(jù)后,可以根據(jù)該JVM線程數(shù)據(jù)生成JVM線程快照。
[0056]可以理解的是,該JMX線程數(shù)據(jù)記錄了實(shí)際執(zhí)行的操作,該HTTP請(qǐng)求數(shù)據(jù)記錄了請(qǐng)求執(zhí)行的操作。
[0057]206、根據(jù)所述HTTP請(qǐng)求快照和JVM線程快照,分析所述Tomcat服務(wù)器中WEB應(yīng)用的性能。
[0058]該數(shù)據(jù)監(jiān)控工具得到HTTP請(qǐng)求快照和JVM線程快照后,根據(jù)該HTTP請(qǐng)求快照和JVM線程快照,分析該Tomcat服務(wù)器中WEB應(yīng)用的性能。
[0059]可以理解的,對(duì)該HTTP請(qǐng)求快照和JVM線程快照的分析,可以由人工(例如開(kāi)發(fā)人員)來(lái)完成,也可以設(shè)定標(biāo)準(zhǔn)的流程,由設(shè)備來(lái)自動(dòng)完成,此處不作限定。
[0060]下面舉例對(duì)采用人工方式根據(jù)HTTP請(qǐng)求快照和JVM線程快照分析WEB應(yīng)用的性能進(jìn)行說(shuō)明:
[0061 ] 如圖6所示,為截取到的一個(gè)HTTP請(qǐng)求快照的示例,假設(shè)該快照名為:中間件主機(jī)22_HttpRequestTrace_20130715163001.html ;
[0062]如圖7所示,為截取到的一個(gè)JVM線程快照的示例,假設(shè)該快照名為:
[0063]中間件主機(jī)22_ThreadTrace_20130715163001.html ;
[0064]開(kāi)發(fā)人員發(fā)現(xiàn)該HTTP請(qǐng)求快照(中間件主機(jī)22_HttpRequestTrace_20130715163001.html)中存在大量的對(duì)目標(biāo)地址 http://oa.test,cn//j_acegi_security_check進(jìn)行的訪問(wèn),而出現(xiàn)大量類(lèi)似請(qǐng)求說(shuō)明某一功能可能出現(xiàn)大量訪問(wèn)或者出現(xiàn)阻塞問(wèn)題;
[0065]開(kāi)發(fā)人員確定請(qǐng)求該目標(biāo)地址http://oa.test, cn//j_acegi_security_check的線程名有:http-80-200,http-80-107, http-80-233, http-80-181 等;
[0066]開(kāi)發(fā)人員選取其中一部分,以http-80-107為例,在線程快照中間件主機(jī)22_ThreadTrace_20130715163001.html 中搜索到同樣線程名 http-80-107 的線程堆棧,從堆棧的最后知道當(dāng)前線程正在跟數(shù)據(jù)庫(kù)進(jìn)行通信,如果發(fā)現(xiàn)不同的線程堆棧(例如http-80-200,http-80-233和http-80-181等的線程堆棧)都是處理類(lèi)似的問(wèn)題,這樣開(kāi)發(fā)人員就能知道問(wèn)題出現(xiàn)在什么地方了,比如如果大量出現(xiàn)調(diào)用數(shù)據(jù)庫(kù)的訪問(wèn)方法,那說(shuō)明數(shù)據(jù)庫(kù)發(fā)生阻塞了,開(kāi)發(fā)人員就將分析轉(zhuǎn)向數(shù)據(jù)庫(kù)端分析,如果大量出現(xiàn)1讀取調(diào)用,那可能出現(xiàn)磁盤(pán)瓶頸等,還可以根據(jù)不同的情況,定位出其他很多問(wèn)題,這里不再一一列舉。
[0067]可選的,也可以由設(shè)備自動(dòng)的來(lái)對(duì)HTTP請(qǐng)求快照和JVM線程快照進(jìn)行分析,具體的:當(dāng)所述HTTP請(qǐng)求快照中對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程的數(shù)目超出預(yù)置數(shù)值時(shí),所述數(shù)據(jù)監(jiān)控工具可以記錄所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程的線程名;所述數(shù)據(jù)監(jiān)控工具在所述JVM線程快照中查找記錄的所述線程名,確定所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程執(zhí)行的操作;根據(jù)所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程執(zhí)行的操作,確定所述繁忙線程數(shù)大于預(yù)置線程閾值時(shí)所述WEB應(yīng)用存在的問(wèn)題。而對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程執(zhí)行的操作與WEB應(yīng)用存在的問(wèn)題的對(duì)應(yīng)關(guān)系,可以事先由開(kāi)發(fā)人員存儲(chǔ)在該數(shù)據(jù)監(jiān)控工具上,也可以有該數(shù)據(jù)監(jiān)控工具從網(wǎng)絡(luò)上獲取,此處不做限定。
[0068]本發(fā)明實(shí)施例中,數(shù)據(jù)監(jiān)控工具可以通過(guò)Tomcat服務(wù)器中的第一組件來(lái)獲取該繁忙進(jìn)程數(shù),使得得到繁忙進(jìn)程數(shù)更加可靠,對(duì)系統(tǒng)變慢的時(shí)機(jī)把握的更加準(zhǔn)確,進(jìn)一步的,得到HTTP請(qǐng)求快照和JVM線程快照,根據(jù)這兩個(gè)快照,可以分析出Tomcat服務(wù)器中WEB應(yīng)用的性能,能方便快速的定位系統(tǒng)變慢時(shí)的問(wèn)題所在,進(jìn)行分析時(shí),如果只有一個(gè)快照,例如只有HTTP請(qǐng)求快照,因?yàn)榫€程中的信息沒(méi)有跟HTTP請(qǐng)求信息綁定,很難或者沒(méi)法知道請(qǐng)求的目標(biāo)內(nèi)容是什么,難以定位問(wèn)題,若只有JVM線程快照,由于信息龐雜,沒(méi)有目標(biāo),也很難定位出問(wèn)題的根源,只有兩者結(jié)合,才能準(zhǔn)確快速的定位出導(dǎo)致系統(tǒng)變慢的真正原因,從而方便對(duì)其進(jìn)行解決。
[0069]下面對(duì)本發(fā)明實(shí)施例中的數(shù)據(jù)監(jiān)控工具進(jìn)行描述,請(qǐng)參閱圖8,本發(fā)明實(shí)施例中數(shù)據(jù)監(jiān)控工具一個(gè)實(shí)施例包括:
[0070]線程獲取模塊801,用于獲取Tomcat服務(wù)器的繁忙線程數(shù);
[0071]快照獲取模塊802,用于當(dāng)確定所述線程獲取模塊801獲取的繁忙線程數(shù)大于預(yù)置線程閾值時(shí),獲取所述Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照。
[0072]本發(fā)明實(shí)施例中當(dāng)確定繁忙線程數(shù)大于預(yù)置線程閾值時(shí),快照獲取模塊802獲取該Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照。繁忙線程數(shù),表示實(shí)際正在處理HTTP請(qǐng)求業(yè)務(wù)的線程數(shù),一般狀況下,繁忙線程數(shù)可能比較低,當(dāng)發(fā)生瞬間訪問(wèn)量增大或者系統(tǒng)發(fā)生阻塞時(shí),繁忙線程數(shù)就會(huì)增加,有時(shí)可能突然增加很大,有時(shí)可能持續(xù)增大,這時(shí),系統(tǒng)的響應(yīng)就會(huì)變慢,導(dǎo)致間歇性響應(yīng)變慢,這樣,設(shè)置一個(gè)預(yù)置線程閾值,當(dāng)超過(guò)預(yù)置線程閾值時(shí),快照獲取模塊802就抓取JVM線程快照,同時(shí)抓取TOMCAT服務(wù)器中的HTTP請(qǐng)求快照,這樣就準(zhǔn)確的定位了 WEB應(yīng)用發(fā)生間歇性響應(yīng)變慢的時(shí)間點(diǎn),抓到HTTP請(qǐng)求內(nèi)容的快照,同時(shí)又抓住了 JVM線程的快照這兩個(gè)重要信息,HTTP請(qǐng)求表示要做什么,JVM線程表示實(shí)際在做什么,將這兩個(gè)重要信息結(jié)合,可以很方便的確定出是因?yàn)槭裁丛驅(qū)е碌拈g歇性響應(yīng)變慢。
[0073]下面對(duì)本發(fā)明實(shí)施例中的數(shù)據(jù)監(jiān)控工具進(jìn)行具體描述,請(qǐng)參閱圖9,本發(fā)明實(shí)施例中的數(shù)據(jù)監(jiān)控工具包括:
[0074]線程獲取模塊901,用于獲取Tomcat服務(wù)器的繁忙線程數(shù);
[0075]快照獲取模塊902,用于當(dāng)確定所述線程獲取模塊901獲取的繁忙線程數(shù)大于預(yù)置線程閾值時(shí),獲取所述Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照;
[0076]本實(shí)施例中,該線程獲取模塊901具體用于,通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第一組件的數(shù)據(jù),所述第一組件的數(shù)據(jù)中包括有所述Tomcat服務(wù)器的繁忙線程數(shù)和線程總數(shù);
[0077]該數(shù)據(jù)監(jiān)控工具還包括:
[0078]閾值確定模塊903,用于根據(jù)所述線程總數(shù)確定所述預(yù)置線程閾值,所述預(yù)置線程閾值不大于所述線程總數(shù);
[0079]可選的,該快照獲取模塊902具體包括:
[0080]第一獲取單元9021,用于通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第二組件的數(shù)據(jù),所述第二組件的數(shù)據(jù)中包括有HTTP請(qǐng)求數(shù)據(jù);
[0081]第二獲取單元9022,用于通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第三組件的數(shù)據(jù),所述第三組件的數(shù)據(jù)中包括有JVM線程數(shù)據(jù);
[0082]快照生成單元9023,用于根據(jù)所述HTTP請(qǐng)求數(shù)據(jù)生成所述Tomcat服務(wù)器的HTTP請(qǐng)求快照,根據(jù)所述JVM線程數(shù)據(jù)生成所述Tomcat服務(wù)器的JVM線程快照;
[0083]可選的,該數(shù)據(jù)監(jiān)控工具還可以包括:
[0084]分析模塊904,用于根據(jù)所述HTTP請(qǐng)求快照和JVM線程快照,分析所述Tomcat服務(wù)器中WEB應(yīng)用的性能;
[0085]可選的,該分析模塊904具體可以包括:
[0086]記錄單元9041,用于當(dāng)所述HTTP請(qǐng)求快照中對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程的數(shù)目超出預(yù)置數(shù)值時(shí),記錄所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程的線程名;
[0087]查找單元9042,用于在所述JVM線程快照中查找記錄的所述線程名,確定所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程執(zhí)行的操作;
[0088]確定單元9043,用于根據(jù)所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程執(zhí)行的操作,確定所述繁忙線程數(shù)大于預(yù)置線程閾值時(shí)所述Tomcat服務(wù)器中WEB應(yīng)用存在的問(wèn)題。
[0089]本發(fā)明實(shí)施例中,線程獲取模塊901可以通過(guò)Tomcat服務(wù)器中的第一組件來(lái)獲取該繁忙進(jìn)程數(shù),使得得到繁忙進(jìn)程數(shù)更加可靠,對(duì)系統(tǒng)變慢的時(shí)機(jī)把握的更加準(zhǔn)確,進(jìn)一步的,快照獲取模塊902得到HTTP請(qǐng)求快照和JVM線程快照,根據(jù)這兩個(gè)快照,分析模塊904可以分析該WEB應(yīng)用的性能,能方便快速的定位系統(tǒng)變慢時(shí)的問(wèn)題所在,進(jìn)行分析時(shí),如果只有一個(gè)快照,例如只有HTTP請(qǐng)求快照,因?yàn)榫€程中的信息沒(méi)有跟HTTP請(qǐng)求信息綁定,很難或者沒(méi)法知道請(qǐng)求的目標(biāo)內(nèi)容是什么,難以定位問(wèn)題,若只有JVM線程快照,由于信息龐雜,沒(méi)有目標(biāo),也很難定位出問(wèn)題的根源,只有兩者結(jié)合,才能準(zhǔn)確快速的定位出導(dǎo)致系統(tǒng)變慢的真正原因,從而方便對(duì)其進(jìn)行解決。
[0090]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
[0091]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。
[0092]所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
[0093]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
[0094]所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-OnlyMemory)、隨機(jī)存取存儲(chǔ)器(RAM, Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0095]以上所述,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種快照抓取方法,其特征在于,包括: 數(shù)據(jù)監(jiān)控工具獲取Tomcat服務(wù)器的繁忙線程數(shù); 當(dāng)確定所述繁忙線程數(shù)大于預(yù)置線程閾值時(shí),所述數(shù)據(jù)監(jiān)控工具獲取所述Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)監(jiān)控工具獲取Tomcat服務(wù)器的繁忙線程數(shù)具體包括: 數(shù)據(jù)監(jiān)控工具通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第一組件的數(shù)據(jù),所述第一組件的數(shù)據(jù)中包括有所述Tomcat服務(wù)器的繁忙線程數(shù)和線程總數(shù); 所述方法還包括: 所述數(shù)據(jù)監(jiān)控工具根據(jù)所述線程總數(shù)確定所述預(yù)置線程閾值,所述預(yù)置線程閾值不大于所述線程總數(shù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)監(jiān)控工具獲取所述Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照具體包括: 所述數(shù)據(jù)監(jiān)控工具通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第二組件的數(shù)據(jù),所述第二組件的數(shù)據(jù)中包括有HTTP請(qǐng)求數(shù)據(jù); 所述數(shù)據(jù)監(jiān)控工具通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第三組件的數(shù)據(jù),所述第三組件的數(shù)據(jù)中包括有JVM線程數(shù)據(jù); 所述數(shù)據(jù)監(jiān)控工具根據(jù)所述HTTP請(qǐng)求數(shù)據(jù)生成所述Tomcat服務(wù)器的HTTP請(qǐng)求快照,根據(jù)所述JVM線程數(shù)據(jù)生成所述Tomcat服務(wù)器的JVM線程快照。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 根據(jù)所述HTTP請(qǐng)求快照和JVM線程快照,分析所述Tomcat服務(wù)器中WEB應(yīng)用的性能。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)所述HTTP請(qǐng)求快照和JVM線程快照,分析所述Tomcat服務(wù)器中WEB應(yīng)用的性能具體包括: 當(dāng)所述HTTP請(qǐng)求快照中對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程的數(shù)目超出預(yù)置數(shù)值時(shí),所述數(shù)據(jù)監(jiān)控工具記錄所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程的線程名; 所述數(shù)據(jù)監(jiān)控工具在所述JVM線程快照中查找記錄的所述線程名,確定所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程執(zhí)行的操作; 根據(jù)所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程執(zhí)行的操作,確定所述繁忙線程數(shù)大于預(yù)置線程閾值時(shí)所述Tomcat服務(wù)器中WEB應(yīng)用存在的問(wèn)題。
6.一種數(shù)據(jù)監(jiān)控工具,其特征在于,包括: 線程獲取模塊,用于獲取Tomcat服務(wù)器的繁忙線程數(shù); 快照獲取模塊,用于當(dāng)確定所述線程獲取模塊獲取的繁忙線程數(shù)大于預(yù)置線程閾值時(shí),獲取所述Tomcat服務(wù)器的HTTP請(qǐng)求快照和JVM線程快照。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)監(jiān)控工具,其特征在于,所述線程獲取模塊具體用于,通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第一組件的數(shù)據(jù),所述第一組件的數(shù)據(jù)中包括有所述Tomcat服務(wù)器的繁忙線程數(shù)和線程總數(shù); 所述數(shù)據(jù)監(jiān)控工具還包括: 閾值確定模塊,用于根據(jù)所述線程總數(shù)確定所述預(yù)置線程閾值,所述預(yù)置線程閾值不大于所述線程總數(shù)。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)監(jiān)控工具,其特征在于,所述快照獲取模塊具體包括: 第一獲取單元,用于通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第二組件的數(shù)據(jù),所述第二組件的數(shù)據(jù)中包括有HTTP請(qǐng)求數(shù)據(jù); 第二獲取單元,用于通過(guò)JMX協(xié)議采集Tomcat服務(wù)器中第三組件的數(shù)據(jù),所述第三組件的數(shù)據(jù)中包括有JVM線程數(shù)據(jù); 快照生成單元,用于根據(jù)所述HTTP請(qǐng)求數(shù)據(jù)生成所述Tomcat服務(wù)器的HTTP請(qǐng)求快照,根據(jù)所述JVM線程數(shù)據(jù)生成所述Tomcat服務(wù)器的JVM線程快照。
9.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的數(shù)據(jù)監(jiān)控工具,其特征在于,所述數(shù)據(jù)監(jiān)控工具還包括: 分析模塊,用于根據(jù)所述HTTP請(qǐng)求快照和JVM線程快照,分析所述Tomcat服務(wù)器中WEB應(yīng)用的性能。
10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)監(jiān)控工具,其特征在于,所述分析模塊具體包括: 記錄單元,用于當(dāng)所述HTTP請(qǐng)求快照中對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程的數(shù)目超出預(yù)置數(shù)值時(shí),記錄所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程的線程名; 查找單元,用于在所述JVM線程快照中查找記錄的所述線程名,確定所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程執(zhí)行的操作; 確定單元,用于根據(jù)所述對(duì)同一目標(biāo)地址進(jìn)行訪問(wèn)的線程執(zhí)行的操作,確定所述繁忙線程數(shù)大于預(yù)置線程閾值時(shí)所述Tomcat服務(wù)器中WEB應(yīng)用存在的問(wèn)題。
【文檔編號(hào)】G06F11/14GK104410671SQ201410614080
【公開(kāi)日】2015年3月11日 申請(qǐng)日期:2014年11月3日 優(yōu)先權(quán)日:2014年11月3日
【發(fā)明者】徐霞, 楊健偉, 林殿興, 賈江兵 申請(qǐng)人:深圳市藍(lán)凌軟件股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1