[發(fā)明專利]一種進(jìn)程監(jiān)控方法和裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201410857076.6 | 申請(qǐng)日: | 2014-12-31 |
| 公開(公告)號(hào): | CN104536870B | 公開(公告)日: | 2018-05-04 |
| 發(fā)明(設(shè)計(jì))人: | 任勇全;趙安安;陳磊 | 申請(qǐng)(專利權(quán))人: | 北京奇虎科技有限公司;奇智軟件(北京)有限公司 |
| 主分類號(hào): | G06F11/30 | 分類號(hào): | G06F11/30 |
| 代理公司: | 北京潤(rùn)澤恒知識(shí)產(chǎn)權(quán)代理有限公司11319 | 代理人: | 劉祥景 |
| 地址: | 100088 北京市西城區(qū)新*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 進(jìn)程 監(jiān)控 方法 裝置 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種進(jìn)程監(jiān)控方法和裝置。
背景技術(shù)
在Linux、Unix等操作系統(tǒng)中通常運(yùn)行有多個(gè)進(jìn)程。目前,在進(jìn)程出現(xiàn)運(yùn)行時(shí)間長(zhǎng)、運(yùn)行錯(cuò)誤等問題時(shí),需要通過監(jiān)控進(jìn)程來分析問題的原因。
現(xiàn)有方案可以將strace和pstack工具結(jié)合起來使用,直接用來找到影響進(jìn)程運(yùn)行時(shí)間的函數(shù)調(diào)用,再有針對(duì)地對(duì)相關(guān)函數(shù)進(jìn)行代碼分析和優(yōu)化。其中,strace工具可以跟蹤進(jìn)程使用的底層系統(tǒng)調(diào)用,可輸出系統(tǒng)調(diào)用被執(zhí)行的時(shí)間點(diǎn)以及各個(gè)調(diào)用的耗時(shí);pstack工具可以對(duì)指定PID(進(jìn)程ID,Process Identity)的進(jìn)程輸出函數(shù)調(diào)用棧。
PHP(超文本處理器,Hypertext Preprocessor)腳本是一種由PHP解釋器來執(zhí)行的進(jìn)程,然而現(xiàn)有strace和pstack僅僅能夠提供PHP解釋器的系統(tǒng)調(diào)用信息,而無法提供PHP腳本的信息,因此,無法滿足PHP腳本的分析需求。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種進(jìn)程監(jiān)控方法和裝置。
依據(jù)本發(fā)明的一個(gè)方面,提供了一種進(jìn)程監(jiān)控方法,包括:
將PHP解釋器的操作執(zhí)行函數(shù)替換為預(yù)置的監(jiān)控函數(shù);以及
利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對(duì)進(jìn)程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息。
可選地,所述利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息的步驟進(jìn)一步包括:
根據(jù)待監(jiān)控信息對(duì)應(yīng)變量相對(duì)預(yù)置全局變量的偏移量,獲取所述變量的地址;以及
利用所述監(jiān)控函數(shù),監(jiān)控所述變量的地址在所述操作的執(zhí)行過程中的信息。
可選地,在所述利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對(duì)進(jìn)程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息的步驟之前,所述方法還包括:
通過讀取共享內(nèi)存,判斷所述進(jìn)程對(duì)應(yīng)的監(jiān)控開關(guān)是否開啟;
在所述進(jìn)程對(duì)應(yīng)的監(jiān)控開關(guān)開啟時(shí),利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對(duì)進(jìn)程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息;
將所述函數(shù)信息寫入所述共享內(nèi)存,由命令行工具從所述共享內(nèi)存中讀取所述函數(shù)信息。
可選地,所述將所述函數(shù)信息寫入所述共享內(nèi)存的步驟,包括:
將所述函數(shù)信息寫入所述共享內(nèi)存中所述進(jìn)程對(duì)應(yīng)的內(nèi)存映射文件。
可選地,所述方法還包括:
利用pstack得到進(jìn)程對(duì)應(yīng)PHP解釋器的調(diào)用棧信息;以及
依據(jù)所述PHP解釋器的全局成員變量,在所述PHP解釋器的調(diào)用棧信息中查找所述PHP解釋器執(zhí)行的各操作對(duì)應(yīng)的函數(shù)調(diào)用棧信息。
可選地,所述依據(jù)所述PHP解釋器的全局變量,在所述PHP解釋器的調(diào)用棧信息中查找所述PHP解釋器執(zhí)行的各操作對(duì)應(yīng)的函數(shù)調(diào)用棧信息的步驟進(jìn)一步包括:
依據(jù)PHP解釋器的操作執(zhí)行的上下文環(huán)境,得到所述PHP解釋器執(zhí)行的當(dāng)前操作的操作執(zhí)行信息;以及
依據(jù)所述PHP解釋器的全局變量和所述當(dāng)前操作的操作執(zhí)行信息,在所述PHP解釋器的調(diào)用棧信息中查找所述PHP解釋器執(zhí)行的當(dāng)前操作對(duì)應(yīng)的函數(shù)調(diào)用棧信息。
可選地,所述監(jiān)控開關(guān)的開啟和關(guān)閉由所述命令行工具控制。
依據(jù)本發(fā)明的另一方面,提供了一種進(jìn)程監(jiān)控裝置,包括:
替換模塊,用于將PHP解釋器的操作執(zhí)行函數(shù)替換為預(yù)置的監(jiān)控函數(shù);以及
監(jiān)控模塊,用于利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對(duì)進(jìn)程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息。
可選地,所述監(jiān)控模塊,進(jìn)一步包括:
地址獲取子模塊,用于根據(jù)待監(jiān)控信息對(duì)應(yīng)變量相對(duì)預(yù)置全局變量的偏移量,獲取所述變量的地址;以及
監(jiān)控子模塊,用于利用所述監(jiān)控函數(shù),監(jiān)控所述變量的地址在所述操作的執(zhí)行過程中的信息。
可選地,所述裝置還包括:
判斷模塊,用于在所述利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對(duì)進(jìn)程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息的操作之前,通過讀取共享內(nèi)存,判斷所述進(jìn)程對(duì)應(yīng)的監(jiān)控開關(guān)是否開啟;
則所述監(jiān)控模塊,具體用于在所述進(jìn)程對(duì)應(yīng)的監(jiān)控開關(guān)開啟時(shí),利用所述監(jiān)控函數(shù)執(zhí)行所述PHP解釋器針對(duì)進(jìn)程編譯得到的操作,且利用所述監(jiān)控函數(shù)監(jiān)控所述操作的執(zhí)行過程中的函數(shù)信息;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京奇虎科技有限公司;奇智軟件(北京)有限公司,未經(jīng)北京奇虎科技有限公司;奇智軟件(北京)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410857076.6/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測(cè);錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過測(cè)試作故障硬件的檢測(cè)或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過處理作錯(cuò)誤檢測(cè)、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過軟件的測(cè)試或調(diào)試防止錯(cuò)誤
- 一種進(jìn)程自動(dòng)恢復(fù)方法
- 進(jìn)程啟動(dòng)方法及內(nèi)核、進(jìn)程
- 一種進(jìn)程間的通信方法和裝置
- 進(jìn)程解析裝置、進(jìn)程解析方法和進(jìn)程解析程序
- 32位進(jìn)程和64位進(jìn)程交叉注入方法及裝置
- 一種應(yīng)用進(jìn)程控制方法及裝置
- 插件下載方法及裝置
- 進(jìn)程間的數(shù)據(jù)傳輸方法和裝置
- 進(jìn)程監(jiān)視裝置、進(jìn)程監(jiān)視方法和進(jìn)程監(jiān)視程序
- 一種基于動(dòng)態(tài)監(jiān)測(cè)的進(jìn)程優(yōu)化調(diào)度方法
- 多級(jí)校內(nèi)監(jiān)控系統(tǒng)
- 多級(jí)校內(nèi)監(jiān)控系統(tǒng)
- 一種范圍廣、力度大的校內(nèi)監(jiān)控系統(tǒng)
- 一種監(jiān)控的方法及系統(tǒng)
- 設(shè)備的監(jiān)控方法、裝置、系統(tǒng)和空調(diào)
- 多級(jí)校內(nèi)監(jiān)控系統(tǒng)
- 設(shè)備監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備及存儲(chǔ)介質(zhì)
- 風(fēng)險(xiǎn)雷達(dá)預(yù)警的監(jiān)控方法及系統(tǒng)
- 區(qū)塊鏈網(wǎng)絡(luò)監(jiān)控系統(tǒng)、裝置及方法
- 基于機(jī)器視覺的車站客流安全智能監(jiān)控系統(tǒng)
- 一種數(shù)據(jù)庫(kù)讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





