代碼跟蹤方法及其系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開一種代碼跟蹤方法及其系統(tǒng),其中該方法包括:創(chuàng)建共享內(nèi)存,所述共享內(nèi)存中存儲有多個子進程的狀態(tài)信息;通過所述共享內(nèi)存存儲的子進程的狀態(tài)信息判斷子進程的當前狀態(tài)持續(xù)時間是否超時;如果超時,則通過父進程跟蹤超時的子進程并記錄所述子進程的堆棧信息。通過本發(fā)明能夠自動對線上服務代碼的性能瓶頸進行跟蹤。
【專利說明】代碼跟蹤方法及其系統(tǒng)
【技術(shù)領域】
[0001]本發(fā)明涉及一種代碼跟蹤方法及其系統(tǒng),尤其是一種針對線上服務代碼的代碼跟蹤方法及其系統(tǒng)。
【背景技術(shù)】
[0002]服務代碼在測試階段能發(fā)現(xiàn)大部分性能瓶頸,并針對性能瓶頸進行優(yōu)化,但線上的環(huán)境是復雜多變的,代碼上線之后有可能會出現(xiàn)各種問題。當出現(xiàn)服務質(zhì)量下降,延遲升高時,就需要使用一定的方法對性能瓶頸進行定位,并進行優(yōu)化。
[0003]有鑒于此,當代碼出現(xiàn)性能瓶頸時,一般會對性能瓶頸進行初步定位,記錄關鍵點執(zhí)行時間并記日志,然后對關鍵點執(zhí)行時間進行分析,如果執(zhí)行時間超過設定的值時就記為一個日志文件(Log),最后通過分析系統(tǒng)日志來定位性能瓶頸。
[0004]參考圖1,是現(xiàn)有技術(shù)中的一種性能瓶頸的跟蹤方案的執(zhí)行流程,包括:在關鍵點前紀錄開始時間(Start),在關鍵點結(jié)束時紀錄結(jié)束時間(End),將結(jié)束時間減去開始時間(End-Start)紀錄到日志中,從而確定可優(yōu)化點。
[0005]然而,上述方式要求維護人員對代碼結(jié)構(gòu)有一定的了解,能夠初步定位問題,設置關鍵點;并且,在關鍵點處需要記錄執(zhí)行時間,如果執(zhí)行時間大于設置的時間還需要寫日志,增加了代碼的執(zhí)行時間。
[0006]綜上所述,可知現(xiàn)有技術(shù)中存在的線上服務代碼跟蹤方案復雜,不能夠智能實現(xiàn)性能瓶頸跟蹤的技術(shù)問題。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的主要目的在于提供一種代碼跟蹤方法及其系統(tǒng),以解決現(xiàn)有技術(shù)中存在的線上服務代碼跟蹤方案復雜,不能夠智能實現(xiàn)性能瓶頸跟蹤的技術(shù)問題。
[0008]為解決上述問題,根據(jù)本發(fā)明的一個方面提供一種代碼跟蹤方法,其包括:創(chuàng)建共享內(nèi)存,所述共享內(nèi)存中存儲有多個子進程的狀態(tài)信息;通過所述共享內(nèi)存存儲的子進程的狀態(tài)信息判斷子進程的當前狀態(tài)持續(xù)時間是否超時;如果超時,則通過父進程跟蹤超時的子進程并記錄所述子進程的堆棧信息。
[0009]其中,所述方法還包括:在子進程處理請求的狀態(tài)改變時,更新所述共享內(nèi)存中存儲的子進程的狀態(tài)信息。
[0010]其中,所述方法還包括:所述父進程定期獲取所述共享內(nèi)存存儲的多個子進程的狀態(tài)信息,并分別記錄每個子進程當前狀態(tài)的初始時間信息。
[0011]其中,所述判斷子進程的當前狀態(tài)持續(xù)時間是否超時的步驟包括:設置時間閾值;根據(jù)初始時間信息及當前時間計算子進程的當前狀態(tài)持續(xù)時間;判斷當前狀態(tài)持續(xù)時間是否超過所述時間閾值,若是則判定子進程的當前狀態(tài)持續(xù)時間超時。
[0012]其中,所述通過父進程記錄超時的子進程的堆棧信息的步驟包括:通過父進程將超時的子進程的堆棧信息記錄至系統(tǒng)日志文件中。[0013]根據(jù)本發(fā)明的另一個方面提供一種代碼跟蹤系統(tǒng),其包括:創(chuàng)建模塊,用于創(chuàng)建共享內(nèi)存,所述共享內(nèi)存中存儲有多個子進程的狀態(tài)信息;判斷模塊,用于通過所述共享內(nèi)存存儲的子進程的狀態(tài)信息判斷子進程的當前狀態(tài)持續(xù)時間是否超時;跟蹤處理模塊,用于如果所述判斷模塊判斷超時,則跟蹤超時的子進程并記錄所述子進程的堆棧信息。
[0014]其中,所述系統(tǒng)還包括:更新模塊,用于在子進程處理請求的狀態(tài)改變時,更新所述共享內(nèi)存中存儲的子進程的狀態(tài)信息。
[0015]其中,所述系統(tǒng)還包括:獲取模塊,用于定期獲取所述共享內(nèi)存存儲的多個子進程的狀態(tài)信息;時間記錄模塊,用于分別記錄每個子進程當前狀態(tài)的初始時間信息。
[0016]其中,所述判斷模塊包括:讀取子模塊,用于讀取預設的時間閾值;計算子模塊,用于根據(jù)初始時間信息及當前時間計算子進程的當前狀態(tài)持續(xù)時間;判斷子模塊,用于判斷當前狀態(tài)持續(xù)時間是否超過所述時間閾值,若是則判定子進程的當前狀態(tài)持續(xù)時間超時。
[0017]其中,所述跟蹤處理模塊還用于,通過父進程將超時的子進程的堆棧信息記錄至系統(tǒng)日志文件中。
[0018]根據(jù)本發(fā)明的技術(shù)方案,通過創(chuàng)建共享內(nèi)存,并通過獲取所述共享內(nèi)存存儲的子進程的狀態(tài)信息判斷該子進程的當前狀態(tài)持續(xù)時間是否超時,并跟蹤超時的子進程。本發(fā)明能夠自動對線上服務代碼的性能瓶頸進行跟蹤,從而對Master-worker模型服務代碼的性能瓶頸進行優(yōu)化處理。
[0019]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【專利附圖】
【附圖說明】
[0020]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0021]圖1是現(xiàn)有技術(shù)中的一種性能瓶頸的跟蹤方案的示意圖;
[0022]圖2是根據(jù)本發(fā)明實施例的代碼跟蹤方法的流程圖;
[0023]圖3是根據(jù)本發(fā)明實施例的進程關聯(lián)共享內(nèi)存的示意圖;
[0024]圖4是根據(jù)本發(fā)明實施例的父進程執(zhí)行代碼跟蹤方法的流程圖;
[0025]圖5是根據(jù)本發(fā)明一個實施例的代碼跟蹤系統(tǒng)的結(jié)構(gòu)框圖;
[0026]圖6是根據(jù)本發(fā)明另一實施例的代碼跟蹤系統(tǒng)的結(jié)構(gòu)框圖。
【具體實施方式】
[0027]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領域的技術(shù)人員。
[0028]本發(fā)明用于代碼測試階段,通過父進程和子進程關聯(lián)共享內(nèi)存,抽離跟蹤代碼,使用異步進程來完成程序性能瓶頸自動定位,對超時的子進程打印出當前的堆棧數(shù)據(jù),有利于定位Master-worker (主-從)進程模型服務代碼的性能瓶頸。
[0029]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,以下結(jié)合附圖及具體實施例,對本發(fā)明作進一步地詳細說明。
[0030]參考圖2,圖2是根據(jù)本發(fā)明實施例的代碼跟蹤方法的流程圖,所述方法至少包括(步驟 S202-S206):
[0031]步驟S202,創(chuàng)建共享內(nèi)存,所述共享內(nèi)存中存儲有多個子進程的狀態(tài)信息。
[0032]在Master-worker進程模型中,Master進程主要負責管理全部的worker進程,worker進程在Master進程的管理下負責執(zhí)行具體的工作。在本發(fā)明實施例中,父進程相當于Master進程,子進程相當于worker進程,而子進程在處理請求過程中所執(zhí)行的程序稱為代碼,通過追蹤代碼能夠定位系統(tǒng)的性能瓶頸。
[0033]參考圖3,圖3是根據(jù)本發(fā)明實施例的進程關聯(lián)共享內(nèi)存的示意圖。系統(tǒng)在初始化狀態(tài)時創(chuàng)建一共享內(nèi)存,父進程和多個子進程(子進程1、子進程2...子進程η)都關聯(lián)該共享內(nèi)存,父進程和子進程通過該共享內(nèi)存共享數(shù)據(jù)。
[0034]子進程擁有對于共享內(nèi)存的寫權(quán)限,多個子進程將其狀態(tài)信息(例如狀態(tài)值)寫入到共享內(nèi)存。在實際應用中,共享內(nèi)存可以通過其內(nèi)部的數(shù)組來保存每個子進程的狀態(tài)信
肩、O
[0035]當子進程處理請求的狀態(tài)改變時,可以實時或定期更新所述共享內(nèi)存中存儲的子進程的狀態(tài)信息,本發(fā)明對于更新的時間方式不進行限定。
[0036]所謂子進程的狀態(tài)信息,是指子進程處理請求的狀態(tài)和請求相關的信息,例如:處理中、處理結(jié)束等。每個子進程處理請求都會有相應的時間要求,如果延時則有可能導致性能下降。
[0037]父進程擁有對于共享內(nèi)存的讀權(quán)限,父進程可以通過讀取共享內(nèi)存存儲的多個子進程的狀態(tài)信息,從而獲取到子進程的狀態(tài)信息。當父進程確定子進程超時后跟蹤超時的子進程。一般情況下,父進程通過定期方式(例如輪詢)獲取共享內(nèi)存存儲的子進程的狀態(tài)信息。父進程在取得子進程的狀態(tài)信息后,記錄該子進程的當前狀態(tài)的初始時間,此后,當父進程再次取得該子進程的狀態(tài)信息后,如果狀態(tài)沒有發(fā)生變化則不變更初始時間信息;如果狀態(tài)發(fā)生變化則父進程需要更新子進程的狀態(tài)信息并重新記錄新的狀態(tài)的初始時間信息。
[0038]步驟S204,通過共享內(nèi)存存儲的子進程的狀態(tài)信息判斷子進程的當前狀態(tài)持續(xù)時間是否超時。
[0039]通過共享內(nèi)存,可以得到子進程當前請求的狀態(tài)信息,根據(jù)父進程存儲的子進程當前狀態(tài)的初始時間信息和當前的時間信息,能夠計算出子進程當前所處狀態(tài)的持續(xù)時間,如果子進程當前狀態(tài)的持續(xù)時間超過了預設的時間閾值,則判定子進程的當前狀態(tài)持續(xù)時間超時。
[0040]步驟S206,如果超時,則通過父進程跟蹤超時的子進程并記錄所述子進程的堆棧信息。
[0041]在判斷子進程當前狀態(tài)持續(xù)時間超時的情況下,由父進程跟蹤到超時的子進程,將該子進程的堆棧信息記錄至系統(tǒng)日志文件中,然后通過分析日志文件定位代碼的性能瓶頸。
[0042]下面結(jié)合圖4詳細描述上述處理的細節(jié)。父進程在初始化狀態(tài)后,創(chuàng)建一共享內(nèi)存,例如,在Unix環(huán)境中,可以通過shmget函數(shù)創(chuàng)建共享內(nèi)存。每個子進程將其狀態(tài)信息寫入共享內(nèi)存中,這樣所述共享內(nèi)存中存儲著多個子進程的狀態(tài)信息。
[0043]圖4是根據(jù)本發(fā)明實施例的父進程執(zhí)行代碼跟蹤方法的流程圖,所述方法包括以下步驟:
[0044]步驟S402,父進程訪問共享內(nèi)存,通過共享內(nèi)存獲取子進程當前的狀態(tài)信息。例如,父進程可以通過輪詢方式獲取共享內(nèi)存存儲的多個子進程當前的狀態(tài)信息。
[0045]步驟S404,判斷子進程的狀態(tài)信息是否發(fā)生變化,將步驟S402中父進程得知的子進程當前的狀態(tài)信息,與父進程預先存儲的該子進程的狀態(tài)信息進行比較,判斷上述的兩個狀態(tài)是否相同,若相同則執(zhí)行步驟S408,否則執(zhí)行步驟S406。需要說明的是,若父進程中沒有存儲該子進程的狀態(tài)信息,則不執(zhí)行判斷操作,只是將步驟S402中獲取的子進程的狀態(tài)信息以及該狀態(tài)的初始時間存儲起來,待下次獲取子進程的狀態(tài)信息之后再執(zhí)行判斷的操作。
[0046]步驟S406,子進程的狀態(tài)已發(fā)生變化,在這種情況下需要更新子進程的狀態(tài)信息并重新記錄時間信息。具體地,父進程根據(jù)共享內(nèi)存中存儲的子進程的狀態(tài)信息更新其存儲的子進程的狀態(tài)信息,并重新記錄新狀態(tài)信息的初始時間信息,然后在父進程定期輪詢共享內(nèi)存時重新執(zhí)行步驟S402。
[0047]步驟S408,子進程的狀態(tài)沒有發(fā)生變化,父進程根據(jù)該狀態(tài)的初始時間信息和當前的時間信息計算子進程當前狀態(tài)的持續(xù)時間,具體計算過程請參考本文之前的描述,不再贅述。
[0048]步驟S410,判斷子進程當前狀態(tài)的持續(xù)時間是否超過預設的閾值,若是則執(zhí)行步驟S412,否則繼續(xù)執(zhí)行步驟S402。
[0049]步驟S412,子進程當前狀態(tài)的持續(xù)時間超時,說明該子進程發(fā)生異常情況,父進程跟蹤超時的子進程并記錄該子進程的堆棧信息,并且還可以打印出當前的堆棧數(shù)據(jù),分析性能瓶頸原因,本流程結(jié)束。
[0050]參考圖5,圖5是根據(jù)本發(fā)明一個實施例的代碼跟蹤系統(tǒng)的結(jié)構(gòu)框圖,如圖所示,該系統(tǒng)至少包括:創(chuàng)建模塊510、判斷模塊520和跟蹤處理模塊530,下面詳細描述各模塊的結(jié)構(gòu)和連接關系。
[0051]創(chuàng)建模塊510用于創(chuàng)建共享內(nèi)存,所述共享內(nèi)存中存儲有多個子進程的狀態(tài)信
肩、O
[0052]判斷模塊520用于通過所述共享內(nèi)存存儲的子進程的狀態(tài)信息判斷子進程的當前狀態(tài)持續(xù)時間是否超時。
[0053]跟蹤處理模塊530與判斷模塊520相耦接,用于如果所述判斷模塊判斷超時,則跟蹤超時的子進程并記錄所述子進程的堆棧信息。具體地,跟蹤處理模塊530通過父進程將超時的子進程的堆棧信息記錄至系統(tǒng)日志文件中。
[0054]參考圖6,圖5是根據(jù)本發(fā)明另一實施例的代碼跟蹤系統(tǒng)的結(jié)構(gòu)框圖,如圖所示,所述代碼跟蹤系統(tǒng)包括有:創(chuàng)建模塊610、判斷模塊620、跟蹤處理模塊630、更新模塊640、獲取模塊650和時間記錄模塊660。[0055]其中,創(chuàng)建模塊610、判斷模塊620、跟蹤處理模塊630分別與圖5所示的創(chuàng)建模塊510、判斷模塊520和跟蹤處理模塊530類似,不再贅述。
[0056]更新模塊640用于在子進程處理請求的狀態(tài)改變時,更新所述共享內(nèi)存中存儲的子進程的狀態(tài)信息。
[0057]獲取模塊650,用于定期獲取所述共享內(nèi)存存儲的多個子進程的狀態(tài)信息;時間記錄模塊660,用于分別記錄每個子進程當前狀態(tài)的初始時間信息。
[0058]繼續(xù)參考圖6,所述判斷模塊620進一步包括:讀取子模塊622,用于讀取預設的時間閾值;計算子模塊624,用于根據(jù)初始時間信息及當前時間計算子進程的當前狀態(tài)持續(xù)時間;判斷子模塊626,用于判斷當前狀態(tài)持續(xù)時間是否超過所述時間閾值,若是則判定子進程的當前狀態(tài)持續(xù)時間超時。
[0059]本發(fā)明的方法的操作步驟與系統(tǒng)的結(jié)構(gòu)特征對應,可以相互參照,不再一一贅述。
[0060]綜上所述,根據(jù)本發(fā)明的技術(shù)方案,通過創(chuàng)建共享內(nèi)存,并通過獲取所述共享內(nèi)存存儲的子進程的狀態(tài)信息判斷該子進程的當前狀態(tài)持續(xù)時間是否超時,并跟蹤超時的子進程。本發(fā)明能夠自動對線上服務代碼的性能瓶頸進行跟蹤,從而對Master-worker模型服務代碼的性能瓶頸進行優(yōu)化處理。
[0061]在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
[0062]在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0063]類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權(quán)利要求書由此明確地并入該【具體實施方式】,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
[0064]本領域那些技術(shù)人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
[0065]此外,本領域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
[0066]本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術(shù)人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的代碼跟蹤系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0067]應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設計出替換實施例。在權(quán)利要求中,不應將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
【權(quán)利要求】
1.一種代碼跟蹤方法,用于代碼測試階段,所述方法包括: 創(chuàng)建共享內(nèi)存,所述共享內(nèi)存中存儲有多個子進程的狀態(tài)信息; 通過所述共享內(nèi)存存儲的子進程的狀態(tài)信息判斷子進程的當前狀態(tài)持續(xù)時間是否超時; 如果超時,則通過父進程跟蹤超時的子進程并記錄所述子進程的堆棧信息。
2.根據(jù)權(quán)利要求1所述的方法,還包括: 在子進程處理請求的狀態(tài)改變時,更新所述共享內(nèi)存中存儲的子進程的狀態(tài)信息。
3.根據(jù)權(quán)利要求1所述的方法,還包括: 所述父進程定期獲取所述共享內(nèi)存存儲的多個子進程的狀態(tài)信息,并分別記錄每個子進程當前狀態(tài)的初始時間信息。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述判斷子進程的當前狀態(tài)持續(xù)時間是否超時的步驟包括: 設置時間閾值; 根據(jù)初始時間信息及當前時間計算子進程的當前狀態(tài)持續(xù)時間; 判斷當前狀態(tài)持續(xù)時間是否超過所述時間閾值,若是則判定子進程的當前狀態(tài)持續(xù)時間超時。
5.根據(jù)權(quán)利要求1所述的方法,其中,所述通過父進程記錄超時的子進程的堆棧信息的步驟包括: 通過父進程將超時的子進程的堆棧信息記錄至系統(tǒng)日志文件中。
6.一種代碼跟蹤系統(tǒng),包括: 創(chuàng)建模塊,用于創(chuàng)建共享內(nèi)存,所述共享內(nèi)存中存儲有多個子進程的狀態(tài)信息; 判斷模塊,用于通過所述共享內(nèi)存存儲的子進程的狀態(tài)信息判斷子進程的當前狀態(tài)持續(xù)時間是否超時; 跟蹤處理模塊,用于如果所述判斷模塊判斷超時,則跟蹤超時的子進程并記錄所述子進程的堆棧信息。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),還包括: 更新模塊,用于在子進程處理請求的狀態(tài)改變時,更新所述共享內(nèi)存中存儲的子進程的狀態(tài)信息。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),還包括: 獲取模塊,用于定期獲取所述共享內(nèi)存存儲的多個子進程的狀態(tài)信息; 時間記錄模塊,用于分別記錄每個子進程當前狀態(tài)的初始時間信息。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中,所述判斷模塊包括: 讀取子模塊,用于讀取預設的時間閾值; 計算子模塊,用于根據(jù)初始時間信息及當前時間計算子進程的當前狀態(tài)持續(xù)時間;判斷子模塊,用于判斷當前狀態(tài)持續(xù)時間是否超過所述時間閾值,若是則判定子進程的當前狀態(tài)持續(xù)時間超時。
10.根據(jù)權(quán)利要求6所述的系統(tǒng),其中,所述跟蹤處理模塊還用于,通過父進程將超時的子進程的堆棧信息記錄至系統(tǒng)日志文件中。
【文檔編號】G06F11/36GK103810099SQ201310595356
【公開日】2014年5月21日 申請日期:2013年11月21日 優(yōu)先權(quán)日:2013年11月21日
【發(fā)明者】陳飛, 朱超, 王超 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司