性能監(jiān)視方法和裝置的制造方法
【技術領域】
[0001 ]本申請涉及計算機技術,特別涉及性能監(jiān)視方法和裝置。
【背景技術】
[0002]在大型的程序開發(fā)過程中,常常會遇到一些性能瓶頸,比如在高并發(fā)的情況下,產(chǎn)生的處理失敗如:數(shù)據(jù)庫連接池過低,服務器連接數(shù)超過上限,數(shù)據(jù)庫鎖控制考慮不足等)、內(nèi)存泄露如在長時間運行下,內(nèi)存沒有正常釋放,發(fā)生宕機等、CPU使用偏離如高并發(fā)導致CPU使用率過高、日志打印過多等。
[0003]為保證程序開發(fā)的順利進行,就需要迅速定位出產(chǎn)生性能瓶頸的原因,以提高程序開發(fā)的效率。
【發(fā)明內(nèi)容】
[0004]本申請?zhí)峁┝诵阅鼙O(jiān)視方法和裝置,以實現(xiàn)通過自定義方法監(jiān)視性能,快速定位出影響性能的因素。
[0005]本申請?zhí)峁┑募夹g方案包括:
[0006]—種性能監(jiān)視方法,該方法包括:
[0007]確定用戶選中的需要監(jiān)視的函數(shù);
[0008]利用所述函數(shù)對應的監(jiān)視要求編寫監(jiān)視腳本;
[0009]在調(diào)用所述函數(shù)時,先調(diào)用所述監(jiān)視腳本,當所述監(jiān)視腳本被調(diào)用完畢時,繼續(xù)調(diào)用所述函數(shù)。
[0010]一種性能監(jiān)視裝置,該裝置包括:
[0011 ]確定單元,用于確定用戶選中的需要監(jiān)視的函數(shù);
[0012]腳本單元,用于利用所述函數(shù)對應的監(jiān)視要求編寫監(jiān)視腳本;
[0013]控制單元,用于在調(diào)用所述函數(shù)時,先調(diào)用所述監(jiān)視腳本,當所述監(jiān)視腳本被調(diào)用完畢時,繼續(xù)調(diào)用所述函數(shù)。
[0014]由以上技術方案可以看出,本發(fā)明中,通過針對函數(shù)編寫監(jiān)視腳本,在調(diào)用函數(shù)時,并非直接調(diào)用函數(shù),而是先調(diào)用函數(shù)的監(jiān)視腳本,以開啟函數(shù)的監(jiān)視,之后,在監(jiān)視腳本被調(diào)用完畢時,繼續(xù)調(diào)用函數(shù),即實現(xiàn)了函數(shù)的監(jiān)視,因為函數(shù)是描述性能的,也就相當于實現(xiàn)了性能的監(jiān)視。通過該監(jiān)視,能夠快速定位出導致性能瓶頸的問題,效率大大提高。
【附圖說明】
[0015]圖1為本發(fā)明提供的方法流程圖;
[0016]圖2a為現(xiàn)有技術調(diào)用函數(shù)的示意圖;
[0017]圖2b為本發(fā)明中調(diào)用函數(shù)的示意圖;
[0018]圖3為本發(fā)明實施例提供的方法流程圖;
[0019]圖4為本發(fā)明提供的裝置結構示意圖。
【具體實施方式】
[0020]為了使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖和具體實施例對本發(fā)明進行詳細描述。
[0021]本發(fā)明提供的方法包括圖1所示的流程:
[0022]參見圖1,圖1為本發(fā)明提供的流程圖。如圖1所示,該流程可包括以下步驟:
[0023]步驟101,確定用戶選中的需要監(jiān)視的函數(shù)。
[0024]作為本發(fā)明的一個實施例,在windows開發(fā)應用環(huán)境中,步驟101確定用戶選中的需要監(jiān)視的函數(shù)可包括:
[0025]從程序數(shù)據(jù)庫(pdb:program dDatabase)文件(fiIe)中讀取所有的函數(shù)提供給使用者;
[0026]確定使用者從被提供的函數(shù)中選中的需要監(jiān)視的函數(shù)。
[0027]步驟102,利用所述函數(shù)對應的監(jiān)視要求編寫監(jiān)視腳本。
[0028]該監(jiān)視腳本中描述了函數(shù)對應的監(jiān)視要求,比如監(jiān)視函數(shù)被運行的次數(shù)、時間等。
[0029]步驟103,在調(diào)用所述函數(shù)時,先調(diào)用所述監(jiān)視腳本,當所述監(jiān)視腳本被調(diào)用完畢時,繼續(xù)調(diào)用所述函數(shù)。
[0030]從步驟103可以看出,當調(diào)用函數(shù)時,并非直接調(diào)用函數(shù),而是先調(diào)用函數(shù)的監(jiān)視腳本,以開啟函數(shù)的監(jiān)視,之后,在監(jiān)視腳本被調(diào)用完畢時,繼續(xù)調(diào)用函數(shù),圖2a至圖2b分別示出了現(xiàn)有技術和本發(fā)明在程序調(diào)用函數(shù)時的示意圖。因為函數(shù)是描述性能的,如此,在本發(fā)明中,函數(shù)的監(jiān)視也就相當于實現(xiàn)了性能的監(jiān)視,即本發(fā)明實現(xiàn)了性能監(jiān)視。
[0031]至此,完成圖1所示的流程。
[0032]通過圖1所示的流程可以看出,本發(fā)明中,通過針對函數(shù)編寫監(jiān)視腳本,在調(diào)用函數(shù)時,并非直接調(diào)用函數(shù),而是先調(diào)用函數(shù)的監(jiān)視腳本,以開啟函數(shù)的監(jiān)視,之后,在監(jiān)視腳本被調(diào)用完畢時,繼續(xù)調(diào)用函數(shù),即實現(xiàn)了函數(shù)的監(jiān)視,因為函數(shù)是描述性能的,也就相當于實現(xiàn)了性能的監(jiān)視。通過該監(jiān)視,能夠快速定位出導致性能瓶頸的問題,效率大大提高。
[0033]下面通過一個具體實施例對圖1所示流程進行描述:
[0034]參見圖3,圖3為本發(fā)明提供的實施例流程圖。如圖3所示,該流程可包括以下步驟:
[0035]步驟301,從pdb文件中讀取所有的函數(shù)提供給使用者。
[0036]具體地,步驟301為:以函數(shù)的標識為關鍵字從pdb文件中讀取含有該關鍵字的符號并提供給使用者。
[0037]步驟302,確定使用者從被提供的函數(shù)中選中的需要監(jiān)視的函數(shù)(這里以函數(shù)a為例)。
[0038]需要說明的是,在本發(fā)明中,函數(shù)a只是泛指一個函數(shù),并不具體限定某一個函數(shù)。
[0039]步驟303,利用函數(shù)a對應的監(jiān)視要求編寫監(jiān)視腳本。
[0040]如上所述,函數(shù),其是描述性能的,很明顯,其也具有一定的性能要求,基于此,在步驟303中,利用函數(shù)a對應的監(jiān)視要求編寫監(jiān)視腳本具體為:
[0041 ]利用函數(shù)a描述的性能所對應的性能要求編寫監(jiān)視腳本。
[0042]步驟304,將監(jiān)視腳本編譯成機器碼。
[0043]具體地,步驟304中,可通過腳本編譯器將監(jiān)視腳本編譯成機器碼。
[0044]當監(jiān)視腳本編譯成機器碼時,其在實時監(jiān)視函數(shù)對應的性能時執(zhí)行效率很高,并且?guī)缀醪粫樵绦蛟黾尤魏呜摀?br>[0045]步驟305,從待監(jiān)視進程內(nèi)分配一塊內(nèi)存,將步驟304編譯的機器碼寫入該內(nèi)存中。
[0046]步驟306,在調(diào)用函數(shù)a時,先跳轉至內(nèi)存執(zhí)行內(nèi)存中的機器碼,以實現(xiàn)所述監(jiān)視腳本的執(zhí)行,當內(nèi)存中的機器碼執(zhí)行完畢后,跳轉執(zhí)行函數(shù)a。
[0047]步驟306是上述步驟103中先調(diào)用所述監(jiān)視腳本,當所述監(jiān)視腳本被調(diào)用完畢時,繼續(xù)調(diào)用所述函數(shù)的一個具體實現(xiàn)方式。
[0048]在步驟306中,跳轉至內(nèi)存執(zhí)行所述內(nèi)存中的機器碼包括:
[0049]在函數(shù)的開頭加入第一跳轉(jmp)匯編指令,以跳轉至所述內(nèi)存執(zhí)行所述內(nèi)存中的機器碼。
[0050]這里,第一跳轉匯編指令中可包含內(nèi)存的地址信息,基于該地址信息,則可方便跳轉至內(nèi)存執(zhí)行所述內(nèi)存中的機器碼。
[0051]在本發(fā)明中,為保證步驟306中在內(nèi)存中的機器碼執(zhí)行完畢后,跳轉執(zhí)行函數(shù),可進一步包括:
[0052]在機器碼的最后加入第二jmp匯編指令,以跳轉執(zhí)行函數(shù)a;
[0053]這里,第二jmp匯編指令可包含函數(shù)a的地址信息,基于該地址信息,則可方便跳轉至函數(shù)a。
[0054]基于此,步驟306中,當內(nèi)存中的機器碼執(zhí)行完畢后,跳轉執(zhí)行函數(shù)a包括:
[0055]依據(jù)執(zhí)行到的內(nèi)存中機器碼的第二jmp匯編指令跳轉執(zhí)行函數(shù)a。這里,當執(zhí)行到的內(nèi)存中機器碼的第二 jmp匯編指令,意味著內(nèi)存中的機器碼執(zhí)行完畢。
[0056]至此,完成圖3所示的流程。
[0057]通過圖3所示的流程可以看出,本發(fā)明中,將針對函數(shù)編寫的監(jiān)視腳本編譯成機器碼,通過該機器碼能夠?qū)崟r監(jiān)測函數(shù)對應的性能,達