自動異步切換標識的制作方法
【專利摘要】可以自動地檢測線程與其他軟件組件之間的異步切換,并且可以跟蹤對應的工作對象。系統(tǒng)可以報告包括原始請求和對應的異步請求的整個事務的監(jiān)視信息。自動地檢測異步請求可以包括儀表化虛擬機例如Java虛擬機(JVM)以檢測線程切換對象的創(chuàng)建以及對象和/或線程執(zhí)行??梢宰詣拥馗櫋⒒陔S時間推移而學習到的數(shù)據(jù)來跟蹤、基于用戶輸入來跟蹤以及以另外的方式配置線程切換對象。在一些實施方式中,在檢測到線程切換對象的創(chuàng)建之后,調(diào)用的對象的標識可以被標識為在其他服務器或應用中被跟蹤。
【專利說明】
自動異步切換標識
【背景技術(shù)】
[0001]萬維網(wǎng)已擴展為使Web服務成為消費者的日常生活的一部分。Web服務可以由使用一種或更多種服務來處理事務的Web應用來提供。應用可以分布在幾個機器上。內(nèi)容頁(例如,Web頁)可以呈現(xiàn)在網(wǎng)絡瀏覽器應用中并且可以提供來自由幾個內(nèi)容頁元素請求的內(nèi)容的信息。在一些內(nèi)容頁中,可以從不同的遠端應用來異步地加載頁元素。例如,響應于請求,內(nèi)容頁可以啟動多個異步請求。
[0002]當前的應用跟蹤工具不跟蹤該多個異步請求。典型的系統(tǒng)監(jiān)視單個內(nèi)容頁的后端事務。因此,當多個元素啟動不同的進程和服務時,不使用現(xiàn)有技術(shù)的監(jiān)視系統(tǒng)來跟蹤它們。這提供了作為提供內(nèi)容頁的一部分的事務以及內(nèi)容頁呈現(xiàn)的真實性質(zhì)的不充分的視圖。
[0003]在本技術(shù)領(lǐng)域中需要具有改善了的監(jiān)視能力的應用監(jiān)視。
【發(fā)明內(nèi)容】
[0004]本技術(shù)可以自動地檢測線程與其他軟件組件之間的異步切換(asynchronoushandoff)。該系統(tǒng)可以報告包括原始請求以及對應的異步請求的整個事務的監(jiān)視信息。自動地檢測異步請求可以包括儀表化(instrument)虛擬機例如Java虛擬機(JVM)以檢測線程切換對象的創(chuàng)建以及對象和/或線程執(zhí)行。可以自動地跟蹤、基于隨時間推移而學習到的數(shù)據(jù)來跟蹤、基于用戶輸入來跟蹤以及以另外的方式配置線程切換對象。在一些實施方式中,在檢測到線程切換對象的創(chuàng)建之后,調(diào)用的目標的標識可以被標識為在其他服務器或應用中被跟蹤。
[0005]實施方式可以包括用于監(jiān)視業(yè)務事務的方法。所述方法可以由服務器上的代理自動地檢測對象的構(gòu)造。所述對象可以被配置成將事務的控制從第一線程切換至第二線程。所構(gòu)造的對象可以與監(jiān)視參數(shù)相關(guān)聯(lián)并且第二線程可以與所述監(jiān)視參數(shù)相關(guān)聯(lián)。
[0006]所述方法可以作為系統(tǒng)或者是在計算機可讀介質(zhì)上實現(xiàn)的可執(zhí)行程序來實現(xiàn)。
【附圖說明】
[0007]圖1是用于監(jiān)視業(yè)務事務的示例性系統(tǒng)的框圖。
[0008]圖2是具有多個元素的內(nèi)容頁的框圖。
[0009]圖3是用于監(jiān)視業(yè)務事務的示例性方法。
[0010]圖4是用于自動地儀表化構(gòu)造器對象的示例性方法。
[0011]圖5是用于檢測線程切換對象的構(gòu)造的示例性方法。
[0012]圖6是將數(shù)據(jù)發(fā)送至控制器的示例性方法。
[0013 ]圖7是控制器的操作的示例性方法。
[0014]圖8是示例性計算設備的框圖。
【具體實施方式】
[0015]本技術(shù)監(jiān)視由一個或更多個分布式應用提供的網(wǎng)絡應用或Web應用。Web應用可以由各自被實現(xiàn)為虛擬機的或被實現(xiàn)為在虛擬機上實施的一個或更多個應用的一個或更多個Web服務來提供??梢栽谝粋€或更多個虛擬機上通過跟蹤工作對象創(chuàng)建和執(zhí)行來自動地檢測異步切換。檢測異步切換可以幫助監(jiān)視系統(tǒng)標識和跟蹤內(nèi)容頁以及具有多個異步請求的其他模塊的分布式業(yè)務事務。
[0016]自動地檢測異步請求可以包括儀表化虛擬機例如Java虛擬機(JVM)以檢測線程切換對象的創(chuàng)建。線程切換對象可以預先被知曉,可以隨時間推移被學習到,可以由用戶提供或者可以以其他方式被標識。例如,線程切換對象可以包括java調(diào)用,例如java.runable、java.callable和java.thread。
[0017]圖1是用于監(jiān)視業(yè)務事務的示例性系統(tǒng)的框圖。圖1的系統(tǒng)100包括客戶端設備105、移動設備115、網(wǎng)絡120、網(wǎng)絡服務器125、應用服務器130、140、150和160、異步網(wǎng)絡機170、數(shù)據(jù)庫180和185以及控制器190。
[0018]客戶端設備105可以包括網(wǎng)絡瀏覽器110并且可以被實現(xiàn)為計算設備,例如便攜式計算機、臺式機、工作站或一些其他計算設備。網(wǎng)絡瀏覽器110可以是用于對由應用服務器例如應用服務器130通過網(wǎng)絡120經(jīng)由網(wǎng)絡服務器125提供的內(nèi)容進行查看的客戶端應用。移動設備115被連接至網(wǎng)絡120并且可以被實現(xiàn)為適用于通過網(wǎng)絡接收內(nèi)容的便攜式設備,例如移動電話、智能手機或其他便攜式設備。客戶端設備105和移動設備115兩者可以包括被配置成對由網(wǎng)絡服務器125提供的Web服務進行訪問的硬件和/或軟件。
[0019]網(wǎng)絡120可以促進不同服務器、設備和機器之間的數(shù)據(jù)通信。該網(wǎng)絡可以被實現(xiàn)為專用網(wǎng)絡、公共網(wǎng)絡、內(nèi)聯(lián)網(wǎng)、因特網(wǎng)、無線網(wǎng)絡、蜂窩網(wǎng)絡或這些網(wǎng)絡的組合。
[0020]網(wǎng)絡服務器125被連接至網(wǎng)絡120并且可以接收和處理通過網(wǎng)絡120接收的請求。網(wǎng)絡服務器125可以被實現(xiàn)為實施網(wǎng)絡服務的一個或更多個服務器。當網(wǎng)絡120為因特網(wǎng)時,網(wǎng)絡服務器125可以被實現(xiàn)為Web服務器。
[0021]應用服務器130與網(wǎng)絡服務器125、應用服務器140和150以及控制器190通信。應用服務器130還可以與其他機器和設備(圖1中未示出)通信。應用服務器130可以托管應用或者分布式應用的一部分并且包括虛擬機132、代理134及其他軟件模塊。如圖1所示,應用服務器130可以被實現(xiàn)為一個服務器或多個服務器。
[0022]虛擬機132可以由在一個或更多個應用服務器上運行的代碼來實現(xiàn)。上述代碼可以實現(xiàn)計算機程序、模塊和數(shù)據(jù)結(jié)構(gòu)以實現(xiàn)用于執(zhí)行程序和應用的虛擬機模式。在一些實施方式中,不止一個虛擬機132可以在應用服務器130上執(zhí)行。虛擬機可以被實現(xiàn)為Java虛擬機(JVM)來實現(xiàn)。虛擬機132可以執(zhí)行由包括系統(tǒng)100的應用服務器執(zhí)行的業(yè)務事務的全部或一部分。虛擬機可以被看作是實現(xiàn)Web服務的幾種服務之一。
[0023]可以使用字節(jié)代碼插入或字節(jié)代碼儀表化來儀表化虛擬機132,以修改虛擬機的對象代碼。經(jīng)儀表化的對象代碼可以包括用于以下操作的代碼:檢測由虛擬機132接收的調(diào)用,檢測由虛擬機132發(fā)送的調(diào)用,以及在虛擬機132上的應用執(zhí)行期間與代理134通信??商娲?,其他代碼可以是經(jīng)儀表化的字節(jié)代碼,例如包括在虛擬機132中執(zhí)行的應用或在應用服務器130上而且在虛擬機132外部執(zhí)行的應用的代碼。
[0024]應用服務器130上的代理134可以通過對象代碼的儀表化、將應用下載至該服務器或以某種其他方式被安裝在應用服務器130上??梢詧?zhí)行代理134以監(jiān)視應用服務器130和監(jiān)視虛擬機132并且與應用服務器130、虛擬機132或在應用服務器130上的另一個應用上的字節(jié)儀表化代碼通信。代理134可以通過應用服務器130和虛擬機132來檢測例如接收調(diào)用和發(fā)送請求的操作。代理134可以接收來自于虛擬機132的經(jīng)儀表化的代碼的數(shù)據(jù)、處理上述數(shù)據(jù)并且將上述數(shù)據(jù)發(fā)送至控制器190。如本文所討論的,代理134可以執(zhí)行與監(jiān)視虛擬機132和應用服務器130相關(guān)的其他操作。例如,代理134可以標識其他應用,共享業(yè)務事務數(shù)據(jù),聚集檢測運行時間數(shù)據(jù)以及執(zhí)行其他操作。
[0025]代理134可以包括用于存儲對象標識符和監(jiān)視參數(shù)相關(guān)配對的映射表。當經(jīng)儀表化的線程切換對象構(gòu)造器被創(chuàng)建時,代理可以檢測上述創(chuàng)建并且存儲對象ID以及所創(chuàng)建的對象的監(jiān)視數(shù)據(jù)。監(jiān)視ID可以由代理或其他實體來創(chuàng)建。當在所創(chuàng)建的對象上執(zhí)行經(jīng)修改的對象運行方法時,針對該對象ID而存儲的監(jiān)視參數(shù)與該對象的線程處理執(zhí)行相關(guān)聯(lián),并且監(jiān)視參數(shù)可以包括在本地的對象執(zhí)行中或包括在遠端應用的對象執(zhí)行中。可以通過將監(jiān)視參數(shù)與執(zhí)行對象相關(guān)聯(lián)來監(jiān)視執(zhí)行對象。監(jiān)視數(shù)據(jù)被報告至具有監(jiān)視參數(shù)的控制器,并且分布的(例如,“連續(xù)的”)事務可以由可以使來自不同代理和應用的數(shù)據(jù)相關(guān)聯(lián)的控制器綁結(jié)在一起。
[0026]應用服務器140、150和160中的每一個可以包括應用和代理。每個應用可以在對應的應用服務器上或虛擬機上運行。應用服務器140至160上的虛擬機142、152和162中的每一個的操作可以類似于虛擬機132的操作并且托管執(zhí)行分布式業(yè)務事務的至少一部分的一個或更多個應用。代理144、154和164可以監(jiān)視虛擬機142至162,采集和處理虛擬機的運行時間處的數(shù)據(jù)并且與控制器190通信。虛擬機132、142、152和162可以彼此通信作為執(zhí)行分布式事務的一部分。具體地,每個虛擬機可以調(diào)用另一個虛擬機的任何應用或方法。
[0027]控制器190可以控制和管理分布在應用服務器130至160上的業(yè)務事務的監(jiān)視。控制器190可以從代理134至164中的每一個接收運行時間數(shù)據(jù),使業(yè)務事務數(shù)據(jù)的各部分相關(guān)聯(lián),與代理通信以配置運行時間數(shù)據(jù)的采集并且提供性能數(shù)據(jù)和通過接口的報告。該接口可以被看作是能夠通過移動設備115、客戶端設備105或一些其他設備查看的基于Web的接口。在一些實施方式中,客戶端設備192可以與控制器190直接通信以查看用于監(jiān)視數(shù)據(jù)的接口。
[0028]異步網(wǎng)絡機170可以參與與例如應用服務器150和160的一個或更多個應用服務器的異步通信。例如,應用服務器150可以將幾個調(diào)用或消息發(fā)送至異步網(wǎng)絡機。異步網(wǎng)絡機可以處理信息并且最終向應用服務器160提供例如處理信息的響應,而不是傳回應用服務器150。由于從異步網(wǎng)絡機至應用服務器150沒有返回信息,所以異步網(wǎng)絡機與應用服務器150之間的通信是異步的。
[0029]數(shù)據(jù)庫180和185可以各自由例如應用服務器150的應用服務器訪問。數(shù)據(jù)庫185還可以由應用服務器150訪問。數(shù)據(jù)庫180和185中的每個數(shù)據(jù)庫可以存儲數(shù)據(jù),處理所述數(shù)據(jù)并且返回從應用服務器接收的查詢。數(shù)據(jù)庫180和185中的每個數(shù)據(jù)庫可以包括或不包括代理。
[0030]圖2是具有多個元素的內(nèi)容頁的框圖。圖2包括內(nèi)容頁200和250??梢愿鶕?jù)從一個或更多個遠端應用例如Web服務應用接收的內(nèi)容來在網(wǎng)絡瀏覽器應用中呈現(xiàn)內(nèi)容頁200和250中的每個內(nèi)容頁。
[0031]內(nèi)容頁200包括可選內(nèi)容頁元素205。當被用戶選擇時,提供內(nèi)容頁200的網(wǎng)絡瀏覽器可以用內(nèi)容頁250來替換內(nèi)容頁200。內(nèi)容頁250包括異步內(nèi)容頁元素210、220、230和240。
[0032]在實施方式中,當網(wǎng)絡瀏覽器呈現(xiàn)內(nèi)容頁250時異步內(nèi)容頁元素210至240中的一個或更多個可以啟動針對內(nèi)容的異步調(diào)用。例如,上述內(nèi)容頁元素中的一個或更多個可以設置對網(wǎng)頁服務、資源、遠端對象或其他元素的調(diào)用。異步內(nèi)容頁元素所做出的每個調(diào)用可以獨立于其他異步內(nèi)容頁元素的操作并且可以與其自身的分布式事務相關(guān)聯(lián)。同樣地,當內(nèi)容頁250被呈現(xiàn)時,內(nèi)容頁元素210至240可以并行地操作以檢索要在網(wǎng)絡瀏覽器應用內(nèi)的內(nèi)容頁200中再現(xiàn)的內(nèi)容。
[0033]由于內(nèi)容頁元素并行地工作以接收內(nèi)容,與內(nèi)容頁200相關(guān)聯(lián)的線程可以將控制切換至與各個異步內(nèi)容頁元素中的每個異步內(nèi)容頁元素相關(guān)聯(lián)的單獨的線程。類似地,每個內(nèi)容頁元素線程可以將控制切換至另一線程,例如在遠端應用處的線程?,F(xiàn)有技術(shù)的應用監(jiān)視系統(tǒng)無法將針對可選內(nèi)容頁元素205而接收的請求與和異步內(nèi)容頁元素210至240相關(guān)聯(lián)的一個或更多個異步請求相關(guān)聯(lián)。本技術(shù)能夠自動跟蹤線程切換對象以提供較好的跟蹤以及在內(nèi)容頁250中提供內(nèi)容的整個過程(分布式事務或連續(xù)性事務)的相關(guān)性。
[0034]圖3是用于監(jiān)視業(yè)務事務的示例性方法。首先,在步驟310處可以自動地儀表化構(gòu)造器對象。上述儀表化可以包括儀表化應用服務器字節(jié)代碼或?qū)ο蟠a。構(gòu)造器可以被儀表化以使得當構(gòu)造器隨后創(chuàng)建對象(具體為線程切換對象)時,該對象可以被跟蹤。線程切換對象可以是很可能導致新線程被分配以從現(xiàn)有線程取得對進程的控制的任何對象。經(jīng)自動地儀表化的構(gòu)造器的示例包括構(gòu)造可調(diào)用對象、可運行對象和線程對象的構(gòu)造器。新線程可以是原始線程的子線程。盡管參照步驟310討論了虛擬機,但為了檢測線程切換對象的創(chuàng)建,可以儀表化應用的其他部分。關(guān)于儀表化字節(jié)代碼和/或?qū)ο蟠a以檢測線程切換對象的創(chuàng)建的更多細節(jié)參照圖4的方法來討論。
[0035]在步驟315處可以自動地儀表化運行方法。運行方法可以包括用于執(zhí)行在步驟310處被儀表化的線程切換對象的一種或更多種方法。例如,針對可調(diào)用對象、可運行對象和線程對象,執(zhí)行所述對象的方法可以包括調(diào)用方法、運行方法和線程方法。無論用戶輸入、系統(tǒng)行為及其他因素如何,都可以自動地儀表化步驟310的構(gòu)造器和步驟315的方法。
[0036]在步驟320處可以構(gòu)造另外的構(gòu)造器和運行方法。所述另外的構(gòu)造器和運行方法可以不像步驟310和315中那些構(gòu)造器和運行方法那樣構(gòu)造,而是可以基于用戶輸入、隨時間推移的系統(tǒng)行為學習及其他因素來構(gòu)造。
[0037]在以下美國專利申請中討論了關(guān)于儀表化代碼、安裝代理以及監(jiān)視事務的另外的信息:于2010年9月9 日提交的標題為 “Monitoring Distributed Web Applicat1nTransact1ns”的美國專利申請N0.1 2/878,919、于20 11年7月22日提交的標題為“Automatic Capture of Diagnostic Data Based on Transact1n Behav1r Learning”的美國專利申請N0.13/189,360、以及于2012年2月2日提交的標題為“Automatic Captureof Detailed Analysis Informat1n for Web Applicat1n Outliers with Very LowOverhead”的美國專利申請N0.13/365,171,以上三個申請的全部內(nèi)容通過引用而合并到本文中。
[0038]在步驟325處可以將代理安裝在應用中并且可以配置控制器。代理可以被安裝在應用服務器上以及虛擬機內(nèi)、應用內(nèi)或虛擬機外??梢酝ㄟ^字節(jié)代碼儀表化、通過將要安裝的代碼下載到應用服務器上或者通過一些其他方法來添加代理。在某個點處,還可以配置控制器190。配置控制器190可以包括將軟件加載到控制器190上用于與一個或更多個代理通信,處理運行時間數(shù)據(jù),報告性能信息以及執(zhí)行其他操作。參照圖7來更加詳細地討論某個控制器190的操作。
[0039]在步驟330處可以檢測線程切換對象的構(gòu)造。當構(gòu)造器創(chuàng)建對象時經(jīng)儀表化的構(gòu)造器可以通知代理。該對象可以是由在步驟310處被自動地儀表化的構(gòu)造器或在步驟320處非自動地儀表化的構(gòu)造器創(chuàng)建的對象之一。
[0040]在某些情況下,當檢測到線程切換對象的構(gòu)造時,可以用監(jiān)視參數(shù)來修改用于執(zhí)行線程切換對象的調(diào)用。應用服務器上的作出該調(diào)用的代理可以修改該調(diào)用作為業(yè)務事務的一部分。代理可以用例如應用標識符、事務標識符、請求標識符、調(diào)用鏈信息和診斷狀態(tài)的監(jiān)視參數(shù)來修改所述調(diào)用。在一些實施方式中,通過向輸出線程添加例如來自“線程本地”文件的監(jiān)視參數(shù)的線程信息來修改調(diào)用??梢杂纱韺⒈O(jiān)視參數(shù)數(shù)據(jù)添加至“線程本地”文件。步驟330的更多細節(jié)參照圖5的方法來討論。
[0041 ]在步驟335處,當創(chuàng)建了線程切換對象時,存儲對象標識符和監(jiān)視參數(shù)。對象標識符可以標識所創(chuàng)建的例如具有唯一標識符的對象。監(jiān)視參數(shù)可以標識與最終啟動對象創(chuàng)建的請求相關(guān)聯(lián)的事務ID。可以由虛擬機上的代理或者可以執(zhí)行所創(chuàng)建的對象的其他節(jié)點來將對象標識符和監(jiān)視參數(shù)存儲在內(nèi)存映射中。
[0042]在步驟340處可以檢測對象的執(zhí)行。當經(jīng)儀表化的運行方法在例如在步驟330處創(chuàng)建的線程切換對象的對象上被調(diào)用時可以檢測對象執(zhí)行。經(jīng)儀表化的調(diào)用方法可以告知代理何時通過該方法執(zhí)行對象。
[0043]在步驟345處檢索與被執(zhí)行的對象相關(guān)聯(lián)的事務監(jiān)視參數(shù)。代理可以接收包括正在被執(zhí)行的對象的標識符的對象執(zhí)行消息。代理可以檢索與該對象標識符對應的監(jiān)視參數(shù)。然后在步驟350處,代理可以將被執(zhí)行的對象與檢索到的監(jiān)視參數(shù)相關(guān)聯(lián)。在一些情況下,代理可以通過將監(jiān)視參數(shù)與正執(zhí)行對象的線程相關(guān)聯(lián)來將被執(zhí)行的對象與監(jiān)視參數(shù)相關(guān)耳關(guān)。
[0044]在步驟355處完成對象執(zhí)行。對象的執(zhí)行可以包括將對象執(zhí)行的控制切換至另一線程,該另一線程可以在本地位于調(diào)用該對象的同一虛擬機或應用上或者在遠端位于另外的虛擬機或應用上。在任何情況下,監(jiān)視參數(shù)可以保持與對象執(zhí)行相關(guān)聯(lián)。在某些情況下,對象的執(zhí)行可以包括創(chuàng)建并且執(zhí)行另一線程切換對象。當這種情況發(fā)生時,如在前的對象一樣,另外的線程切換對象與監(jiān)視參數(shù)相關(guān)聯(lián),另外的對象的執(zhí)行完成,并且可以基于另外的線程切換對象執(zhí)行的結(jié)果來執(zhí)行在前的線程切換對象直至完成。
[0045]在步驟360處可以將數(shù)據(jù)發(fā)送至控制器。該數(shù)據(jù)可以包括監(jiān)視數(shù)據(jù)、所聚集的運行時間數(shù)據(jù)及其他數(shù)據(jù)??梢酝ㄟ^監(jiān)視線程切換對象創(chuàng)建和執(zhí)行的代理來報告該數(shù)據(jù)。參考圖6的方法來討論將數(shù)據(jù)發(fā)送至控制器的更多信息。
[0046]圖4是用于自動地儀表化構(gòu)造器對象的示例性方法。圖4的方法提供關(guān)于圖3的方法的步驟310的更多細節(jié)。在步驟410處儀表化虛擬機以檢測可運行對象構(gòu)造器。可運行對象可以被稱為線程切換對象,并且將期望監(jiān)視該對象的創(chuàng)建。在步驟420處可以儀表化虛擬機以檢測可調(diào)用對象構(gòu)造器。在步驟430處可以儀表化虛擬機以檢測線程對象構(gòu)造器。
[0047]在步驟410至430處的儀表化可以檢測很可能將控制從一個線程切換至另一線程的對象。可以執(zhí)行儀表化以使得:當構(gòu)造器創(chuàng)建對象時,代碼被插入到構(gòu)造器、構(gòu)造器的代理以及代理名稱中。
[0048]圖4的方法的步驟可以以任何順序來執(zhí)行并且可以單獨執(zhí)行。例如,可以在可運行對象構(gòu)造器之前儀表化可調(diào)用對象構(gòu)造器,或者可以僅針對特定的應用來儀表化可調(diào)用對象構(gòu)造器。此外,除了儀表化在圖4的方法的步驟中列出的對象構(gòu)造器之外,還可以儀表化其他的對象構(gòu)造器。
[0049]圖5是用于檢測線程切換對象的構(gòu)造的示例性方法。圖5的方法提供了關(guān)于圖3的方法的步驟330的更多細節(jié)。步驟510至520首先確定是否檢測到很可能執(zhí)行切換的對象構(gòu)造。在步驟510處,確定是否檢測到可運行對象的構(gòu)造。如果檢測到可運行對象,則圖5的方法繼續(xù)至跟蹤該對象的步驟525。跟蹤該對象可以包括在存儲映射中存儲關(guān)于該對象的數(shù)據(jù)。在步驟515處確定是否檢測到可調(diào)用對象的構(gòu)造。如果檢測到可調(diào)用對象的構(gòu)造,則在步驟525處跟蹤所構(gòu)造的對象。在步驟520處確定是否檢測到線程對象的構(gòu)造。如果未檢測到線程對象的構(gòu)造,則圖5的方法結(jié)束而不跟蹤對象的構(gòu)造。如果在步驟520處檢測到線程對象的構(gòu)造,則可以在步驟525處跟蹤檢測到的對象。
[0050]圖6是用于將數(shù)據(jù)發(fā)送至控制器的示例性方法。在步驟610處可以聚集運行時間數(shù)據(jù)。代理所收集的運行時間數(shù)據(jù)可以基于監(jiān)視參數(shù)來聚集以及在例如I分鐘的時間段內(nèi)被平均。
[0051]當與調(diào)用相關(guān)聯(lián)的運行時間數(shù)據(jù)被接收時可以將其存儲。在一些實施方式中,運行時間數(shù)據(jù)可以指示完成調(diào)用的響應時間。運行時間數(shù)據(jù)可以包括與業(yè)務事務、調(diào)用鏈及其他參數(shù)信息相關(guān)聯(lián)的定時信息及其他數(shù)據(jù)。代理可以接收或檢索與應用調(diào)用、方法調(diào)用及其他操作的開始和結(jié)束對應的時間戳。當調(diào)用完成時,可以產(chǎn)生用于整個調(diào)用以及將調(diào)用插入至其他應用的響應時間。
[0052]在步驟620處可以檢測運行時間數(shù)據(jù)報告事件。運行時間報告事件可以是幾個事件中的任何事件,例如,計時器的終止、報告運行時間數(shù)據(jù)的應用服務器的一個或更多個資源的狀態(tài)或者另一個事件。然后可以在步驟630處由代理將運行時間數(shù)據(jù)發(fā)送至控制器190??刂破?90可以接收來自一個或更多個代理的數(shù)據(jù),處理該數(shù)據(jù)并且可以提供關(guān)于正被監(jiān)視的系統(tǒng)的監(jiān)視信息。
[0053]圖7是用于控制器的操作的示例性方法。在步驟710處可以從一個或更多個代理接收聚集運行時間數(shù)據(jù)??梢曰谑录?,基于數(shù)據(jù)的負載大小或者基于一些其他標準來定期接收聚集運行時間數(shù)據(jù)。聚集運行時間數(shù)據(jù)可以指示業(yè)務事務、調(diào)用鏈數(shù)據(jù)、時間戳數(shù)據(jù)及其他數(shù)據(jù)。業(yè)務事務可以與請求相關(guān)聯(lián)。聚集數(shù)據(jù)中的調(diào)用鏈數(shù)據(jù)可以包括在請求的頭部中接收的調(diào)用鏈數(shù)據(jù),如果存在的話,還可以包括處理請求的應用或虛擬機的標識符。聚集數(shù)據(jù)可以被發(fā)送以用于每個調(diào)用鏈組合。
[0054]在步驟720處可以根據(jù)所接收的聚集數(shù)據(jù)來構(gòu)造用于業(yè)務事務的調(diào)用鏈。可以基于所接收的聚集數(shù)據(jù)中的調(diào)用鏈數(shù)據(jù)通過連接與業(yè)務事務的一部分相關(guān)聯(lián)的數(shù)據(jù)來構(gòu)造調(diào)用鏈。
[0055]構(gòu)造調(diào)用鏈可以包括將一個或更多個異步請求與父請求相關(guān)聯(lián)。例如,在客戶端處的內(nèi)容頁中接收的請求可以導致由不同于處理原始請求的線程的多個線程啟動多個異步請求。在本文所描述的每個技術(shù)中,多個異步請求可以被綁定至原始請求,所有這些原始請求由不同的線程處理??刂破骺梢詫⒃颊埱蟮男阅軘?shù)據(jù)及其他數(shù)據(jù)與后續(xù)的異步請求相關(guān)聯(lián)作為單一的分布式或連續(xù)事務以進行進一步分析。
[0056]在步驟730處可以確定針對業(yè)務事務的性能信息。性能信息可以指示針對業(yè)務事務的總響應時間和每個節(jié)點(例如,在業(yè)務事務中的每個應用服務器或虛擬機的處理時間)的本地響應時間、系統(tǒng)內(nèi)的虛擬機之間的時間段、以及性能是否能夠被接受。
[0057]可以在步驟740處基于所確定的性能來確定用于業(yè)務事務的性能基線和告警。在一些實施方式中,可以針對業(yè)務事務的一部分來確定平均性能或基線性能,例如通過對一段時間內(nèi)每個部分的性能數(shù)據(jù)求平均。可以在步驟750處報告業(yè)務事務的性能。
[0058]圖8是示例性計算設備的框圖。圖8的系統(tǒng)800可以在像應用服務器130至160、網(wǎng)絡服務器125、數(shù)據(jù)庫180和185以及客戶端105和192這樣的環(huán)境中來實現(xiàn)。圖8的計算系統(tǒng)800包括一個或更多個處理器810和存儲器810。主存儲器810部分地存儲供處理器810執(zhí)行的指令和數(shù)據(jù)。當操作時主存儲器810可以存儲可執(zhí)行代碼。圖8的系統(tǒng)800還包括大容量存儲設備830、便攜式存儲介質(zhì)驅(qū)動840、輸出設備850、用戶輸入設備860、圖形顯示器870和外圍設備880。
[0059]圖8所示的組件被描述為經(jīng)由單個總線890來連接。然而,上述組件可以通過一個或更個數(shù)據(jù)傳輸裝置來連接。例如,處理器單元810和主存儲器810可以經(jīng)由本地微處理器總線來連接,并且大容量存儲設備830、外圍設備880、便攜式存儲設備840和顯示系統(tǒng)870可以經(jīng)由一個或更多個輸入/輸出(I /0)總線來連接。
[0060]可以用磁盤驅(qū)動器或光盤驅(qū)動器來實現(xiàn)的大容量存儲設備830是用于對供處理器單元810使用的數(shù)據(jù)和指令進行存儲的非易失性存儲設備。為將用于實現(xiàn)本發(fā)明的實施方式的系統(tǒng)軟件加載至主存儲器810,大容量存儲設備830可以存儲該系統(tǒng)軟件。
[0061]便攜式存儲設備840結(jié)合例如軟盤、致密盤或數(shù)字視頻盤的便攜式非易失性存儲介質(zhì)來操作以往/從圖8的計算機系統(tǒng)800輸入/輸出數(shù)據(jù)和代碼。用于實現(xiàn)本發(fā)明的實施方式的系統(tǒng)軟件可以存儲在這樣的便攜式介質(zhì)上并且經(jīng)由便攜式存儲設備840被輸入至計算機系統(tǒng)800。
[0062]輸入設備860提供了用戶接口的一部分。輸入設備860可以包括字母數(shù)字小鍵盤,例如鍵盤,用于輸入字母數(shù)字及其他信息;或定點設備,例如鼠標、追蹤球、手寫筆或光標方向鍵。此外,如圖8所示的系統(tǒng)800包括輸出設備850。合適的輸出設備的示例包括揚聲器、打印機、網(wǎng)絡接口和監(jiān)視器。
[0063]顯示系統(tǒng)870可以包括液晶顯示器(IXD)或其他合適的顯示設備。顯示系統(tǒng)870接收文本和圖形信息,并且處理該信息以輸出至顯示設備。
[0064]外圍設備880可以包括任意類型的用于為計算機系統(tǒng)添加另外功能的計算機支持設備。例如,外圍設備880可以包括調(diào)制解調(diào)器或路由器。
[0065]包括在圖8的計算機系統(tǒng)800中的組件是通常在計算機中出現(xiàn)的可能適用于本發(fā)明的實施方式的那些組件并且意在表示本領(lǐng)域所熟知的這樣的計算機組件的廣泛類別。因此,圖8的計算機系統(tǒng)800可以是個人計算機、手持計算設備、電話、移動計算設備、工作站、服務器、小型計算機、大型計算機或任何其他計算設備。計算機還可以包括不同的總線配置、聯(lián)網(wǎng)平臺、多處理器平臺等??梢允褂酶鞣N操作系統(tǒng),包括Unix、Linux、Windows、Mac
OS,Palm OS及其他合適的操作系統(tǒng)。
[0066]類似于圖8的計算系統(tǒng)的計算系統(tǒng)可以用于實現(xiàn)移動設備115,但是還可以包括通常出現(xiàn)在這樣的移動設備中的另外的元件。例如,實現(xiàn)移動設備15的系統(tǒng)除了包括圖8的系統(tǒng)的元件以外,還可以包括用于無線通信的一個或更多個天線及相關(guān)電路、揚聲器、觸摸屏以及用于實現(xiàn)例如智能手機、平板電腦等移動設備的其他組件。
[0067]上面出于說明和描述的目的而對本文的技術(shù)進行了詳細描述。上述描述非意在為窮盡性或者將本技術(shù)限于所公開的精確形式。根據(jù)上述教導,可以作出許多修改和變型。為了最佳地解釋本技術(shù)的原理及其實際應用而選擇了所描述的實施方式,從而使本領(lǐng)域的其他技術(shù)人員能夠最佳地利用不同實施方式中的技術(shù)并且利用本技術(shù)的適用于所設想的具體用途的多種修改。意在通過所附權(quán)利要求書來限定本技術(shù)的范圍。
【主權(quán)項】
1.一種用于監(jiān)視業(yè)務事務的方法,包括: 由服務器上的代理自動地檢測對象的構(gòu)造,所述對象被配置成將事務的控制從第一線程切換至第二線程; 將所構(gòu)造的對象與監(jiān)視參數(shù)相關(guān)聯(lián);以及 將所述第二線程與所述監(jiān)視參數(shù)相關(guān)聯(lián)。2.根據(jù)權(quán)利要求1所述的方法,其中,所述對象是可調(diào)用對象。3.根據(jù)權(quán)利要求1所述的方法,其中,所述對象是可運行對象。4.根據(jù)權(quán)利要求1所述的方法,其中,所述對象是線程對象。5.根據(jù)權(quán)利要求1所述的方法,還包括: 自動地檢測所述對象的執(zhí)行,其中,所述對象的執(zhí)行將事務的控制從第一線程傳遞至第二線程,其中,所述監(jiān)視參數(shù)與所述第一線程相關(guān)聯(lián)。6.根據(jù)權(quán)利要求1所述的方法,其中,所述對象創(chuàng)建要作為事務的一部分執(zhí)行的子線程。7.根據(jù)權(quán)利要求1所述的方法,其中,所述對象由多個獨立執(zhí)行內(nèi)容頁元素中的第一獨立執(zhí)行內(nèi)容頁元素來啟動。8.根據(jù)權(quán)利要求1所述的方法,其中,所述對象構(gòu)造由在構(gòu)造所述對象的服務器上執(zhí)行的代理來檢測。9.根據(jù)權(quán)利要求1所述的方法,其中,所述事務由構(gòu)造所述對象的第一線程以及由所述對象啟動的第二線程來執(zhí)行。10.根據(jù)權(quán)利要求9所述的方法,其中,監(jiān)視所述事務包括監(jiān)視所述第一線程和所述第二線程。11.一種包含有程序的計算機可讀存儲介質(zhì),所述程序能夠由處理器執(zhí)行以執(zhí)行用于監(jiān)視業(yè)務事務的方法,所述方法包括: 自動地檢測對象的構(gòu)造,所述對象被配置成將事務的控制從第一線程切換至第二線程; 將所構(gòu)造的對象與監(jiān)視參數(shù)相關(guān)聯(lián);以及 將所述第二線程與所述監(jiān)視參數(shù)相關(guān)聯(lián)。12.根據(jù)權(quán)利要求11所述的計算機可讀存儲介質(zhì),其中,所述對象是可調(diào)用對象。13.根據(jù)權(quán)利要求11所述的計算機可讀存儲介質(zhì),其中,所述對象是可運行對象。14.根據(jù)權(quán)利要求11所述的計算機可讀存儲介質(zhì),其中,所述對象是線程對象。15.根據(jù)權(quán)利要求11所述的計算機可讀存儲介質(zhì),自動地檢測所述對象的執(zhí)行,其中,所述對象的執(zhí)行將事務的控制從第一線程傳遞至第二線程,其中,所述監(jiān)視參數(shù)與所述第一線程相關(guān)聯(lián)。16.根據(jù)權(quán)利要求11所述的計算機可讀存儲介質(zhì),其中,所述對象創(chuàng)建要作為事務的一部分執(zhí)行的子線程。17.根據(jù)權(quán)利要求11所述的計算機可讀存儲介質(zhì),其中,所述對象由多個獨立執(zhí)行內(nèi)容頁元素中的第一獨立執(zhí)行內(nèi)容頁元素來啟動。18.根據(jù)權(quán)利要求11所述的計算機可讀存儲介質(zhì),其中,所述對象構(gòu)造由在構(gòu)造所述對象的服務器上執(zhí)行的代理來檢測。19.根據(jù)權(quán)利要求11所述的計算機可讀存儲介質(zhì),其中,所述事務由構(gòu)造所述對象的第一線程以及由所述對象啟動的第二線程來執(zhí)行。20.根據(jù)權(quán)利要求19所述的計算機可讀存儲介質(zhì),其中,監(jiān)視所述事務包括監(jiān)視所述第一線程和所述第二線程。21.—種用于監(jiān)視業(yè)務事務的系統(tǒng),所述系統(tǒng)包括: 處理器; 存儲器;以及 一個或更多個模塊,所述一個或更多個模塊存儲在所述存儲器中并且能夠由所述處理器執(zhí)行以由服務器上的代理自動地檢測對象的構(gòu)造,所述對象被配置成將事務的控制從第一線程切換至第二線程、將所構(gòu)造的對象與監(jiān)視參數(shù)相關(guān)聯(lián)以及將所述第二線程與所述監(jiān)視參數(shù)相關(guān)聯(lián)。22.根據(jù)權(quán)利要求21所述的系統(tǒng),其中,所述對象是可調(diào)用對象。23.根據(jù)權(quán)利要求21所述的系統(tǒng),其中,所述對象是可運行對象。24.根據(jù)權(quán)利要求21所述的系統(tǒng),其中,所述對象是線程對象。25.根據(jù)權(quán)利要求21所述的系統(tǒng),自動地檢測所述對象的執(zhí)行,其中,所述對象的執(zhí)行將事務的控制從第一線程傳遞至第二線程,其中,所述監(jiān)視參數(shù)與所述第一線程相關(guān)聯(lián)。26.根據(jù)權(quán)利要求21所述的系統(tǒng),其中,所述對象創(chuàng)建要作為事務的一部分執(zhí)行的子線程。27.根據(jù)權(quán)利要求21所述的系統(tǒng),其中,所述對象由多個獨立執(zhí)行內(nèi)容頁元素中的第一獨立執(zhí)行內(nèi)容頁元素來啟動。28.根據(jù)權(quán)利要求21所述的系統(tǒng),其中,所述對象構(gòu)造由在構(gòu)造所述對象的服務器上執(zhí)行的代理來檢測。29.根據(jù)權(quán)利要求21所述的系統(tǒng),其中,所述事務由構(gòu)造所述對象的第一線程以及由所述對象啟動的第二線程來執(zhí)行。30.根據(jù)權(quán)利要求29所述的系統(tǒng),其中,所述一個或更多個模塊能夠被執(zhí)行以監(jiān)視所述第一線程和所述第二線程。
【文檔編號】G06F3/00GK106030456SQ201480063050
【公開日】2016年10月12日
【申請日】2014年10月20日
【發(fā)明人】巴斯卡爾·松卡拉, 蘇拉杰·普瓦達, 馬諾伊·阿查里雅, 維奈·斯里尼瓦賽亞
【申請人】動力應用程序公司