[發明專利]一種計算機程序運行異常檢測方法、裝置和介質在審
| 申請號: | 201710952987.0 | 申請日: | 2017-10-13 |
| 公開(公告)號: | CN107783844A | 公開(公告)日: | 2018-03-09 |
| 發明(設計)人: | 周堯生 | 申請(專利權)人: | 銳捷網絡股份有限公司 |
| 主分類號: | G06F9/52 | 分類號: | G06F9/52;G06F11/34 |
| 代理公司: | 北京同達信恒知識產權代理有限公司11291 | 代理人: | 黃志華 |
| 地址: | 350002 福建省福州市倉*** | 國省代碼: | 福建;35 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 計算機 程序 運行 異常 檢測 方法 裝置 介質 | ||
技術領域
本發明涉及計算機技術領域,尤其涉及一種程序運行異常檢測方法、裝置和介質。
背景技術
本部分旨在為權利要求書中陳述的本發明的實施方式提供背景或上下文。此處的描述不因為包括在本部分中就承認是現有技術。
隨著計算機技術的發展,在Linux操作系統中,多任務、多線程及多處理器技術應用已經非常廣泛。所述多任務是指多個程序能同時啟動運行,運行的形態稱之為進程;所述多線程是指同一個程序能有幾個并發執行的路徑,這些任務或線程可以共享內存地址空間,可以并發異步執行。死鎖是指兩個或兩個以上的進程/線程在執行過程中,因競爭共享資源而造成的一種相互等待使用共享資源的異常現象,若無外力作用,它們都將無法推進下去。死循環是指某個進程/線程一直在運行一小段代碼邏輯,沒有跳出該段邏輯,去執行線程應該運行的其他正常邏輯。無論是死鎖還是死循環,這些故障一旦發生通常會導致整個計算機程序的服務癱瘓。
因此,在計算機程序運行過程中需要對以上故障進行檢測,使得系統能夠快速恢復正常運行。在目前的檢測方法中,可以分為靜態代碼分析和運行時分析。靜態代碼分析,是指對目標源程序進行分析,找出目標線程和相關的資源,建立線程和資源自檢的關系圖,如果存在循環就認為存在死鎖或死循環,由于死鎖或死循環指在設計例如正在執行的線程交錯或時序的特定條件下才可能發生,在大型復雜系統中,特別是存在函數指針代碼匯總,這種靜態代碼分析難以檢測出全部的故障。
運行時分析對于死鎖檢查需要增加額外的數據結構和軟件模塊,每當有線程使用資源(獲取或者釋放)時加以記錄分析,然后建立資源鎖圖,從資源鎖圖中判斷是否存在死鎖。但是對于很多大型的計算機程序來說,代碼量較大,運行時涉及的進程和線程眾多,則資源鎖的需求數量也大,使得生成資源鎖圖及從資源鎖圖中搜索等檢測死鎖的操作需要消耗大量時間和系統資源,性能不是很好。
運行時分析對于死循環檢查,通常采用請求相應的查詢方法,即創建檢測線程,該檢測線程周期性向其他所有線程發送查詢消息并等待其他線程響應回復消息,如果在幾個查詢周期中,檢測線程都未收到某個線程的回復消息,則認為該線程出現死循環。只要給的時間足夠合理,便能檢測出死循環,同時該方法也能檢測出死鎖問題。而這種方案的缺陷是為被檢測線程帶來額外的系統開銷,同時當被檢測線程數量多時,嚴重影響系統性能,因為被檢測線程需要消耗時間片用于接收并回復查詢消息。
發明內容
本發明實施例提供一種計算機程序運行異常檢測方法、裝置和介質,用以對計算機程序運行過程中出現的死循環或者死鎖故障進行檢測,減少被檢測程序與檢測程序之間交互的消息,提高系統運行性能。
本發明實施例提供一種計算機程序運行異常檢測方法,包括:
針對任一已注冊的被檢測程序,按照預設的檢測周期從共享內存表中讀取該檢測程序的保活信息;
根據讀取的保活信息判斷被檢測程序是否運行異常。
可選地,所述保活信息包括保活序列字段值;以及
根據讀取的保活信息判斷被檢測程序是否存在異常,具體包括:
比較當前周期讀取的保活序列字段值與上一周期讀取的保活序列字段值是否相同;
如果當前周期讀取的保活序列字段值與上一周期讀取的保活序列字段值相同,則確定所述被檢測程序運行異常;
如果當前周期讀取的保活序列字段值與上一周期讀取的保活序列字段值不同,則確定所述被檢測程序運行正常;并更新記錄的所述被檢測程序對應的保活序列值。
可選地,如果當前周期讀取的保活序列字段值與上一周期讀取的保活序列字段值相同,則在確定所述被檢測程序運行異常之前,還包括:
更新記錄的程序運行異常計數;以及
確定所述程序運行異常計數超過預設閾值。
可選地,如果當前周期讀取的保活序列字段值與上一周期讀取的保活序列字段值不同,則還包括:
判斷記錄的程序運行異常計數是否為零;
如果所述程序運行異常計數不為零,則重置所述程序運行異常計數。
可選地,按照以下流程對被檢測程序進行注冊:
接收所述被檢測程序發送的運行異常檢測注冊請求,所述運行異常檢測注冊請求中攜帶有所述被檢測程序對應的進程標識符PID;
修改所述共享內存表中所述PID對應的在位字段值;以及
初始化所述共享內存表中所述PID對應的保活序列字段值并記錄;
向所述被檢測程序返回注冊結果。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于銳捷網絡股份有限公司,未經銳捷網絡股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710952987.0/2.html,轉載請聲明來源鉆瓜專利網。





