一種系統(tǒng)故障檢測及處理方法、裝置制造方法
【專利摘要】本發(fā)明公開了一種系統(tǒng)故障檢測及處理方法、裝置,包括:中斷服務(wù)程序發(fā)送一級喂狗信號,并接收系統(tǒng)檢測任務(wù)的二級喂狗信號;在檢測到任務(wù)死循環(huán)或任務(wù)異常時,根據(jù)預(yù)先設(shè)定的處理策略進(jìn)行系統(tǒng)異常處理;其中,當(dāng)中斷服務(wù)程序在設(shè)定時間內(nèi)接收不到所述二級喂狗信號時,則中斷服務(wù)程序停止發(fā)送一級喂狗信號,進(jìn)行系統(tǒng)重啟。本發(fā)明可以實現(xiàn)軟件系統(tǒng)的故障自動檢測,并根據(jù)用戶策略自動恢復(fù)系統(tǒng);能夠同時檢測系統(tǒng)啟動過程和系統(tǒng)運行過程的系統(tǒng)異常,并自動恢復(fù);能夠?qū)ο到y(tǒng)運行過程中的異常類型分類識別,并根據(jù)用戶策略進(jìn)行異常判斷和自恢復(fù);系統(tǒng)異常檢測和自恢復(fù)策略用戶可配置,異常原因可以記錄,可查詢。
【專利說明】一種系統(tǒng)故障檢測及處理方法、裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及軟件系統(tǒng)故障檢測處理【技術(shù)領(lǐng)域】,特別是涉及一種系統(tǒng)故障檢測及處 理方法、裝置。
【背景技術(shù)】
[0002] 在軟件系統(tǒng)啟動和運行過程中,常常會發(fā)生故障導(dǎo)致系統(tǒng)無法工作,如:系統(tǒng)硬件 吊死、操作系統(tǒng)崩潰、任務(wù)異常、任務(wù)死循環(huán)、中斷過頻等。對于通信系統(tǒng)軟件來說,在軟件 系統(tǒng)發(fā)生故障時,能夠自動識別任務(wù)異常狀態(tài),并根據(jù)用戶的配置策略,進(jìn)行相應(yīng)的故障異 常告警、記錄以及系統(tǒng)恢復(fù),這都是必不可少的功能。特別是對于那些實時性要求較高的支 持語音業(yè)務(wù)的系統(tǒng),在系統(tǒng)運行到任何階段,遇到任何故障,都要求能夠完全準(zhǔn)確的異常識 另IJ、異常信息記錄和自恢復(fù)處理。
[0003] 現(xiàn)有的軟件系統(tǒng)故障檢測及自恢復(fù)方法,一般采用硬件狗或者軟件看門狗技術(shù)。 硬件狗就是一個簡單的定時復(fù)位器件,其需要軟件來定時為其產(chǎn)生脈沖喂狗信號,一旦超 過定時門限(一般1到2秒)沒有喂狗,則其會自動產(chǎn)生硬件復(fù)位信號,觸發(fā)系統(tǒng)復(fù)位。軟件 看門狗技術(shù)其實現(xiàn)原理是為了解決硬件狗時間太短的問題,通過一些簡單的心跳消息或者 同步監(jiān)聽機制來增加硬件看門狗的復(fù)位時間。這些方法雖然簡單易行,比較可靠,但是也有 其自身缺陷:不能對系統(tǒng)所出現(xiàn)的所有異常情況進(jìn)行檢測;不能對系統(tǒng)中的特殊應(yīng)用情況 進(jìn)行監(jiān)控;不能對系統(tǒng)故障類型進(jìn)行分類日志記錄。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明要解決的技術(shù)問題是提供一種系統(tǒng)故障檢測及處理方法、裝置,用以解決 現(xiàn)有技術(shù)不能對系統(tǒng)所出現(xiàn)的所有異常情況進(jìn)行檢測的問題。
[0005] 為解決上述技術(shù)問題,一方面,本發(fā)明提供一種系統(tǒng)故障檢測及處理方法,包括:
[0006] 中斷服務(wù)程序發(fā)送一級喂狗信號,并接收系統(tǒng)檢測任務(wù)的二級喂狗信號;
[0007] 在檢測到任務(wù)死循環(huán)或任務(wù)異常時,根據(jù)預(yù)先設(shè)定的處理策略進(jìn)行系統(tǒng)異常處 理;其中,當(dāng)中斷服務(wù)程序在設(shè)定時間內(nèi)接收不到所述二級喂狗信號時,則中斷服務(wù)程序停 止發(fā)送一級喂狗信號,進(jìn)行系統(tǒng)重啟。
[0008] 進(jìn)一步,當(dāng)系統(tǒng)出現(xiàn)操作系統(tǒng)崩潰或者硬件異常時,系統(tǒng)自動重啟恢復(fù)。
[0009] 進(jìn)一步,當(dāng)中斷超過設(shè)定閾值、比所述系統(tǒng)檢測任務(wù)優(yōu)先級更高的任務(wù)忙、系統(tǒng)啟 動期間系統(tǒng)異?;蛩鱿到y(tǒng)檢測任務(wù)自身異常掛起時,中斷服務(wù)程序接收不到所述二級喂 狗信號。
[0010] 進(jìn)一步,進(jìn)行任務(wù)死循環(huán)檢測時,包括:
[0011] 系統(tǒng)檢測任務(wù)定時二級軟件喂狗,低優(yōu)先級死循環(huán)輔助任務(wù)定時死循環(huán)?;罹S 持;
[0012] 定時統(tǒng)計中央處理器CPU占有率;
[0013] 判斷統(tǒng)計得到的CPU占有率是否高于CPU死循環(huán)判斷門限值,如果否,則判定上述 任務(wù)沒有出現(xiàn)任務(wù)死循環(huán);如果是,則進(jìn)一步判斷低優(yōu)先級死循環(huán)輔助任務(wù)是否?;钪梦唬?如果是,則判定沒有出現(xiàn)死循環(huán);如果否,則進(jìn)行告警,通知維護人員分析;
[0014] 判斷系統(tǒng)檢測任務(wù)在采樣檢測時間段內(nèi)是否只處理了一個消息,如果否,則進(jìn)行 告警,通知維護人員分析;如果是,則判定該任務(wù)處于死循環(huán)狀態(tài)。
[0015] 進(jìn)一步,進(jìn)行任務(wù)異常檢測時,包括:
[0016] 定時檢測所有任務(wù)的工作狀態(tài);
[0017] 根據(jù)檢測到的任務(wù)工作狀態(tài),以及結(jié)合預(yù)先配置的任務(wù)異常判斷策略,進(jìn)行任務(wù) 異常檢測。
[0018] 另一方面,本發(fā)明還提供一種系統(tǒng)故障檢測及處理裝置,包括:
[0019] 信號處理模塊,用于使中斷服務(wù)程序發(fā)送一級喂狗信號,并接收系統(tǒng)檢測任務(wù)的 二級喂狗信號;
[0020] 異常處理模塊,用于在檢測到任務(wù)死循環(huán)或任務(wù)異常時,根據(jù)預(yù)先設(shè)定的處理策 略進(jìn)行系統(tǒng)異常處理;其中,當(dāng)中斷服務(wù)程序在設(shè)定時間內(nèi)接收不到所述二級喂狗信號時, 則令中斷服務(wù)程序停止發(fā)送一級喂狗信號,進(jìn)行系統(tǒng)重啟。
[0021] 進(jìn)一步,所述裝置還包括:
[0022] 自重啟模塊,用于當(dāng)系統(tǒng)出現(xiàn)操作系統(tǒng)崩潰或者硬件異常時,系統(tǒng)自動重啟恢復(fù)。
[0023] 進(jìn)一步,當(dāng)中斷超過設(shè)定閾值、比所述系統(tǒng)檢測任務(wù)優(yōu)先級更高的任務(wù)忙、系統(tǒng)啟 動期間系統(tǒng)異?;蛩鱿到y(tǒng)檢測任務(wù)自身異常掛起時,中斷服務(wù)程序接收不到所述二級喂 狗信號。
[0024] 進(jìn)一步,所述裝置還包括:
[0025] CPU占有率統(tǒng)計模塊,用于系統(tǒng)檢測任務(wù)定時二級軟件喂狗,低優(yōu)先級死循環(huán)輔助 任務(wù)定時死循環(huán)?;罹S持時,定時統(tǒng)計中央處理器CPU占有率;
[0026] 任務(wù)死循環(huán)檢測模塊,用于系統(tǒng)檢測任務(wù)判斷統(tǒng)計得到的CPU占有率是否高于 (PU死循環(huán)判斷門限值,如果否,則判定上述任務(wù)沒有出現(xiàn)任務(wù)死循環(huán);如果是,則進(jìn)一步 判斷低優(yōu)先級死循環(huán)輔助任務(wù)是否?;钪梦?,如果是,則判定沒有出現(xiàn)死循環(huán);如果否,則 進(jìn)行告警,通知維護人員分析;判斷系統(tǒng)檢測任務(wù)在采樣檢測時間段內(nèi)是否只處理了一個 消息,如果否,則進(jìn)行告警,通知維護人員分析;如果是,則判定該任務(wù)處于死循環(huán)狀態(tài)。
[0027] 進(jìn)一步,所述裝置還包括:
[0028] 任務(wù)工作狀態(tài)檢測模塊,用于定時檢測所有任務(wù)的工作狀態(tài);
[0029] 任務(wù)異常檢測模塊,用于根據(jù)檢測到的任務(wù)工作狀態(tài),以及結(jié)合預(yù)先配置的任務(wù) 異常判斷策略,進(jìn)行任務(wù)異常檢測。
[0030] 本發(fā)明有益效果如下:
[0031] 本發(fā)明可以實現(xiàn)軟件系統(tǒng)的故障自動檢測,并根據(jù)用戶策略自動恢復(fù)系統(tǒng);能夠 同時檢測系統(tǒng)啟動過程和系統(tǒng)運行過程的系統(tǒng)異常,并自動恢復(fù);能夠?qū)ο到y(tǒng)運行過程中 的異常類型分類識別,并根據(jù)用戶策略進(jìn)行異常判斷和自恢復(fù);系統(tǒng)異常檢測和自恢復(fù)策 略用戶可配置,異常原因可以記錄,可查詢。
【專利附圖】
【附圖說明】
[0032] 圖1是本發(fā)明實施例中一種系統(tǒng)故障檢測及處理方法的流程圖;
[0033] 圖2是本發(fā)明實施例中一種系統(tǒng)故障檢測及處理裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0034] 以下結(jié)合附圖以及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述 的具體實施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。
[0035] 如圖1所示,本發(fā)明實施例涉及一種系統(tǒng)故障檢測及處理方法,包括:
[0036] 步驟S101,中斷服務(wù)程序發(fā)送一級喂狗信號,并接收系統(tǒng)檢測任務(wù)的二級喂狗信 號;
[0037] 本步驟,中斷服務(wù)程序正常一級硬件喂狗(發(fā)送一級喂狗信),當(dāng)系統(tǒng)出現(xiàn)操作系 統(tǒng)崩潰或者硬件異常,中斷服務(wù)程序無法工作,硬件狗產(chǎn)生自動復(fù)位。
[0038] 系統(tǒng)啟動,中斷服務(wù)程序開始一級硬件喂狗,待高優(yōu)先級的系統(tǒng)檢測任務(wù)啟動,系 統(tǒng)檢測任務(wù)開始二級軟件喂狗(發(fā)送二級喂狗信號),這段系統(tǒng)啟動期間內(nèi)如果發(fā)生系統(tǒng)異 常,則將導(dǎo)致二級軟件喂狗無法及時完成,從而停止一級硬件喂狗,系統(tǒng)將記錄日志為啟動 異常、并同時自動復(fù)位。
[0039] 系統(tǒng)啟動后,高優(yōu)先級系統(tǒng)檢測任務(wù)正常運行,如果出現(xiàn)中斷超過設(shè)定閾值(中斷 過頻),或者比系統(tǒng)檢測任務(wù)更高優(yōu)先級的任務(wù)忙,則將導(dǎo)致二級軟件喂狗無法及時完成, 從而停止一級硬件喂狗,系統(tǒng)將記錄日志并自動復(fù)位。另外,如果出現(xiàn)(高優(yōu)先級)系統(tǒng)檢測 任務(wù)由于自身異常導(dǎo)致掛起,也會造成無法二級軟件喂狗,一級硬件喂狗停止,系統(tǒng)將記錄 日志并自動復(fù)位。其中,比系統(tǒng)檢測任務(wù)更高優(yōu)先級的任務(wù)忙,是指比系統(tǒng)檢測任務(wù)更高優(yōu) 先級的任務(wù)的CPU (Central Processing Unit,中央處理器)占有率超過預(yù)定門限值。
[0040] 步驟S102,在檢測到任務(wù)死循環(huán)或任務(wù)異常時,根據(jù)預(yù)先設(shè)定的處理策略進(jìn)行系 統(tǒng)異常處理;其中,當(dāng)中斷服務(wù)程序在設(shè)定時間內(nèi)接收不到所述二級喂狗信號時,則中斷服 務(wù)程序停止發(fā)送一級喂狗信號,進(jìn)行系統(tǒng)重啟。
[0041] 本步驟中,任務(wù)死循環(huán)檢測,包括:定時統(tǒng)計任務(wù)的CPU占有率;并根據(jù)預(yù)先配置 的CPU死循環(huán)判斷門限值和死循環(huán)判斷策略,進(jìn)行任務(wù)死循環(huán)判斷。任務(wù)死循環(huán)判斷策略 是由用于預(yù)先配置的,由用戶根據(jù)任務(wù)特性、使用環(huán)境等因素進(jìn)行配置,通常情況,任務(wù)的 CPU占有率超過CPU死循環(huán)判斷門限值則認(rèn)為任務(wù)給死循環(huán),當(dāng)然,也可以設(shè)置例外情況。 例如,一個低優(yōu)先級死循環(huán)輔助任務(wù),該任務(wù)的存在允許其他任務(wù)的CPU占有率超過CPU死 循環(huán)判斷門限值(在嵌入式系統(tǒng)中允許一些低優(yōu)先級任務(wù),比如idle任務(wù)一直很忙,但對 系統(tǒng)的正常功能沒有影響);位于特殊忙任務(wù)列表內(nèi)的任務(wù),允許這些特殊任務(wù)的CPU占有 率超過CPU死循環(huán)判斷門限值(一些關(guān)鍵任務(wù)在運行某些功能時在某段時間允許比較忙, 不應(yīng)該被看做任務(wù)異常忙)。另外,還需要進(jìn)行任務(wù)死循環(huán)確認(rèn)步驟,即至少在兩次采樣時 間內(nèi)都判定任務(wù)死循環(huán),才可以認(rèn)定該任務(wù)為死循環(huán)。
[0042] 任務(wù)異常檢測時,包括:定時檢測所有任務(wù)工作狀態(tài);根據(jù)任務(wù)異常判斷策略進(jìn) 行任務(wù)異常判斷。任務(wù)異常判斷策略由用戶預(yù)先配置,用戶可以根據(jù)實際情況進(jìn)行不同配 置。例如:只有判定任務(wù)為關(guān)鍵任務(wù)(關(guān)鍵任務(wù)指任務(wù)異常會影響到系統(tǒng)基本功能,必須馬 上恢復(fù)的任務(wù);關(guān)鍵任務(wù)可以動態(tài)配置)異常時才進(jìn)行自恢復(fù)(重啟)操作;也可以當(dāng)判定每 個普通任務(wù)異常時,都可進(jìn)行自恢復(fù)操作;也可以認(rèn)為每個任務(wù)異常都不進(jìn)行自恢復(fù)操作。 任務(wù)異常檢測也需要包括任務(wù)異常確認(rèn)步驟,即至少兩次采樣時間內(nèi)都判定任務(wù)異常才最 終判定該任務(wù)異常。
[0043] 系統(tǒng)自恢復(fù)處理,包括:判斷系統(tǒng)異常(任務(wù)死循環(huán)或任務(wù)異常)后是否立即復(fù)位, 如果是,立即復(fù)位,如果否,則根據(jù)系統(tǒng)自恢復(fù)等待時間而定,該等待時間可預(yù)先配置;系統(tǒng) 異常等待時間到之后,復(fù)位條件判斷,如果滿足復(fù)位條件則立即復(fù)位;如果不滿足則在等待 默認(rèn)時間后復(fù)位;系統(tǒng)異常不復(fù)位,則告警或者日志記錄。系統(tǒng)異常日志記錄包括:日志記 錄到內(nèi)存或者記錄到文件系統(tǒng)。
[0044] 下面給出分別給出具體實施例,以進(jìn)一步詳細(xì)說明。
[0045] 首先,本發(fā)明所述防范在系統(tǒng)啟動或正常運行過程中的流程包括如下步驟:
[0046] 步驟S201 :系統(tǒng)啟動,中斷服務(wù)程序開始工作,并設(shè)置默認(rèn)中斷計數(shù)次數(shù)。默認(rèn)中 斷計數(shù)次數(shù)根據(jù)系統(tǒng)正常啟動時間而定,比如系統(tǒng)正常啟動時間最長為5分鐘,每次中斷 時間是10毫秒,則中斷計數(shù)次數(shù)為5*60*1000/10=30000。
[0047] 步驟S202 :每次中斷到來時,中斷計數(shù)次數(shù)減1,中斷服務(wù)程序進(jìn)行一級硬件喂 狗。如果此時系統(tǒng)硬件異常、操作系統(tǒng)崩潰等導(dǎo)致中斷服務(wù)程序無法工作,則一級硬件喂狗 停止,系統(tǒng)重啟。
[0048] 由于硬件看門狗喂狗門限一般為1到2秒,因此為了保證系統(tǒng)能夠正常工作,系 統(tǒng)啟動過程中的其它任務(wù)在關(guān)中斷時要特別關(guān)注,如果關(guān)中斷時間比較長(超過喂狗門限) 的,需要在代碼中添加喂狗點,即在關(guān)中斷中進(jìn)行一級喂狗,以防止正常的關(guān)中斷導(dǎo)致系統(tǒng) 重啟。
[0049] 另外,每次中斷到來時,同時進(jìn)行中斷計數(shù)是否大于0的判斷,如果是,則等待下 次中斷到來,直至系統(tǒng)檢測任務(wù)啟動,轉(zhuǎn)步驟S203 ;如果否,即中斷計數(shù)等于0,說明高優(yōu)先 級系統(tǒng)檢測任務(wù)沒有正常啟動工作,即在系統(tǒng)啟動過程中遇到異常,這種情況相當(dāng)于二級 軟件喂狗失效,則記錄原因為啟動異常,停止一級硬件喂狗,系統(tǒng)將重啟。
[0050] 步驟S203 :高優(yōu)先級系統(tǒng)檢測任務(wù)啟動,開始定時二級軟件喂狗,重新設(shè)置中斷 計數(shù)次數(shù),中斷計數(shù)次數(shù)根據(jù)系統(tǒng)正常運行時任務(wù)死循環(huán)判斷的及時性而定,如果死循環(huán) 判斷要求比較及時,數(shù)值則可以設(shè)置較小,相反則較大;比如:系統(tǒng)二級軟件喂狗時間要求 為3分鐘,每次中斷時間是10毫秒,則中斷計數(shù)次數(shù)為3*60*1000/10=18000。
[0051] 其中,高優(yōu)先級系統(tǒng)檢測任務(wù)二級軟件喂狗定時時間可以根據(jù)中斷計數(shù)次數(shù),得 到一個經(jīng)驗值,例如,可以設(shè)置成30秒二級軟件喂狗一次。
[0052] 步驟S204 :當(dāng)比高優(yōu)先級系統(tǒng)檢測任務(wù)優(yōu)先級更高的任務(wù)忙,中斷過頻,或者高 優(yōu)先級任務(wù)異常掛起,即:3分鐘內(nèi)沒有一次二級軟件喂狗,則中斷計數(shù)次數(shù)為0,系統(tǒng)認(rèn)為 高優(yōu)先級任務(wù)忙,記錄原因,停止一級硬件喂狗,系統(tǒng)重啟。
[0053] 本發(fā)明所述方法在系統(tǒng)正常運行過程中的任務(wù)死循環(huán)檢測及自恢復(fù)方法流程如 下:
[0054] 步驟S301 :高優(yōu)先級系統(tǒng)檢測任務(wù)和低優(yōu)先級死循環(huán)輔助任務(wù)啟動,高優(yōu)先級系 統(tǒng)檢測任務(wù)定時二級軟件喂狗,低優(yōu)先級死循環(huán)輔助任務(wù)定時死循環(huán)保活維持。本步驟所 述的高優(yōu)先級和低優(yōu)先級是相對來說,即系統(tǒng)檢測任務(wù)的優(yōu)先級高于死循環(huán)輔助任務(wù)的優(yōu) 先級。
[0055] 步驟S302 :高優(yōu)先級系統(tǒng)檢測任務(wù),每隔1分鐘統(tǒng)計一次任務(wù)的CPU占有率(統(tǒng)計 任務(wù)狀態(tài)為運行狀態(tài)下的CPU占有率)。
[0056] 步驟S303 :高優(yōu)先級系統(tǒng)檢測任務(wù)比較已經(jīng)統(tǒng)計得到的任務(wù)CPU占有率是否高于 (PU死循環(huán)判斷門限值(CPU死循環(huán)判斷門限值可以根據(jù)系統(tǒng)的情況由用戶預(yù)先手動配置); 如果否,則判定上述任務(wù)沒有出現(xiàn)任務(wù)死循環(huán);如果是,則轉(zhuǎn)步驟S304。
[0057] 步驟S304 :當(dāng)判定有任務(wù)CPU占有率高于CPU死循環(huán)判斷門限值時,則進(jìn)一步判 斷低優(yōu)先級死循環(huán)輔助任務(wù)是否?;钪梦?,如果是,即低優(yōu)先級死循環(huán)輔助任務(wù)有保活置 位,說明該任務(wù)能夠得到系統(tǒng)正常調(diào)度,系統(tǒng)沒有出現(xiàn)死循環(huán),任務(wù)優(yōu)先級比低優(yōu)先級死循 環(huán)輔助任務(wù)更低的任務(wù)不在死循環(huán)統(tǒng)計范圍之內(nèi);如果否,則轉(zhuǎn)步驟S305。
[0058] 步驟S305 :如果低優(yōu)先級任務(wù)死循環(huán)輔助任務(wù)沒有置?;顦?biāo)志,也并不能說明該 任務(wù)死循環(huán),這是因為系統(tǒng)中存在某些任務(wù)在商優(yōu)先級任務(wù)定時檢測時間段內(nèi)就是一直在 運行,所以需要排除系統(tǒng)中的這些特殊任務(wù),不能把它的正常忙狀態(tài)當(dāng)成死循環(huán),但要告警 通知維護人員分析。上述特殊任務(wù)由用戶預(yù)先手動配置。
[0059] 步驟S306 :以上判斷已經(jīng)確定系統(tǒng)包括死循環(huán)任務(wù),還需要進(jìn)一步判斷是否是在 高優(yōu)先級系統(tǒng)檢測任務(wù)定時采樣檢測時間段內(nèi)只處理了一個消息,如果該任務(wù)在定時采樣 時間段內(nèi)同時處理了多個消息,說明該任務(wù)在系統(tǒng)中得到調(diào)度,系統(tǒng)沒有出現(xiàn)死循環(huán),但要 告警通知維護人員分析,如果該任務(wù)在定時采樣時間段內(nèi)只處理了一個消息,則判定該任 務(wù)處于死循環(huán)狀態(tài)。
[0060] 步驟S307 :當(dāng)系統(tǒng)中有任務(wù)死循環(huán)時,再次等待一個1個采樣周期(采樣時間段) 進(jìn)行死循環(huán)確認(rèn),確認(rèn)之后進(jìn)行日志記錄,并準(zhǔn)備重啟恢復(fù),但是重啟之前需要判斷系統(tǒng)中 是否正在運行比較重要的工作(比如文件系統(tǒng)操作),如果系統(tǒng)正在運行比較重要工作不能 馬上重啟,則允許延時一段時間之后強制關(guān)閉這些重要工作并重啟。
[0061] 本發(fā)明上述方法在系統(tǒng)正常運行過程中的任務(wù)異常檢測及自恢復(fù)方法流程包 括:
[0062] 步驟S401 :高優(yōu)先級系統(tǒng)檢測任務(wù)啟動,并定時二級軟件喂狗。
[0063] 步驟S402 :高優(yōu)先級系統(tǒng)檢測任務(wù)每隔1分鐘(檢測周期)檢測系統(tǒng)所有任務(wù)的工 作狀態(tài)。
[0064] 步驟S403 :高優(yōu)先級系統(tǒng)檢測任務(wù)發(fā)現(xiàn)有任務(wù)異常掛起,則識別該任務(wù)是關(guān)鍵任 務(wù)還是普通任務(wù),系統(tǒng)根據(jù)用戶配置的異常檢測處理策略進(jìn)行自恢復(fù)操作。例如,異常檢測 處理策略為:允許關(guān)鍵任務(wù)異常重啟;或者普通任務(wù)異常重啟;或者所有任務(wù)異常都不重 啟。其中,關(guān)鍵任務(wù)是由用戶預(yù)先設(shè)置的,如果這些任務(wù)不能工作,則將影響系統(tǒng)重要功能。 [0065] 步驟S404:當(dāng)確定系統(tǒng)中有任務(wù)異常時,則系統(tǒng)需要記錄異常任務(wù)的堆棧信息, 同時日志記錄,并重啟恢復(fù),但是重啟之前需要判斷系統(tǒng)中是否正在運行比較重要的工作 (比如文件系統(tǒng)操作),如果系統(tǒng)正在運行比較重要工作不能馬上重啟,則允許延時一段時 間之后強制關(guān)閉這些重要工作并重啟。
[0066] 另外,如圖2所示,本發(fā)明實施例還涉及一種實現(xiàn)上述方法的系統(tǒng)故障檢測及處 理裝置,包括:
[0067] 信號處理模塊201,用于使中斷服務(wù)程序發(fā)送一級喂狗信號,并接收系統(tǒng)檢測任務(wù) 的二級喂狗信號;當(dāng)中斷超過設(shè)定閾值、比所述系統(tǒng)檢測任務(wù)優(yōu)先級更高的任務(wù)忙、系統(tǒng)啟 動期間系統(tǒng)異?;蛩鱿到y(tǒng)檢測任務(wù)自身異常掛起時,中斷服務(wù)程序接收不到所述二級喂 狗信號。
[0068] 異常處理模塊202,用于在檢測到任務(wù)死循環(huán)或任務(wù)異常時,根據(jù)預(yù)先設(shè)定的處理 策略進(jìn)行系統(tǒng)異常處理;其中,當(dāng)中斷服務(wù)程序在設(shè)定時間內(nèi)接收不到所述二級喂狗信號 時,則令中斷服務(wù)程序停止發(fā)送一級喂狗信號,進(jìn)行系統(tǒng)重啟。
[0069] 為達(dá)更佳技術(shù)效果,本發(fā)明上述裝置還包括:
[0070] 自重啟模塊,用于當(dāng)系統(tǒng)出現(xiàn)操作系統(tǒng)崩潰或者硬件異常時,系統(tǒng)自動重啟恢復(fù)。
[0071] CPU占有率統(tǒng)計模塊,用于系統(tǒng)檢測任務(wù)定時二級軟件喂狗,低優(yōu)先級死循環(huán)輔助 任務(wù)定時死循環(huán)?;罹S持時,定時統(tǒng)計中央處理器CPU占有率;
[0072] 任務(wù)死循環(huán)檢測模塊,用于系統(tǒng)檢測任務(wù)判斷統(tǒng)計得到的CPU占有率是否高于 (PU死循環(huán)判斷門限值,如果否,則判定上述任務(wù)沒有出現(xiàn)任務(wù)死循環(huán);如果是,則進(jìn)一步 判斷低優(yōu)先級死循環(huán)輔助任務(wù)是否?;钪梦唬绻?,則判定沒有出現(xiàn)死循環(huán);如果否,則 進(jìn)行告警,通知維護人員分析;判斷系統(tǒng)檢測任務(wù)在采樣檢測時間段內(nèi)是否只處理了一個 消息,如果否,則進(jìn)行告警,通知維護人員分析;如果是,則判定該任務(wù)處于死循環(huán)狀態(tài)。 [0073] 任務(wù)工作狀態(tài)檢測模塊,用于定時檢測所有任務(wù)的工作狀態(tài);
[0074] 任務(wù)異常檢測模塊,用于根據(jù)檢測到的任務(wù)工作狀態(tài),以及結(jié)合預(yù)先配置的任務(wù) 異常判斷策略,進(jìn)行任務(wù)異常檢測。
[0075] 綜上所述,本發(fā)明通過定時主動掃描檢測和中斷、喂狗相結(jié)合的方法,即能判斷出 任務(wù)死循環(huán)和任務(wù)異常等異常情況,也能判斷出中斷過頻和硬件、軟件掛死系統(tǒng)的情況,同 時可以根據(jù)這些異常類型分類記錄原因,自動延時恢復(fù)處理。即考慮了系統(tǒng)的特殊運行任 務(wù)情況,也考慮了不同系統(tǒng)的動態(tài)配置要求,同時也可以檢測系統(tǒng)啟動過程的軟件運行情 況,基本滿足了軟件系統(tǒng)的大部分異常檢測及自恢復(fù)需求。
[0076] 盡管為示例目的,已經(jīng)公開了本發(fā)明的優(yōu)選實施例,本領(lǐng)域的技術(shù)人員將意識到 各種改進(jìn)、增加和取代也是可能的,因此,本發(fā)明的范圍應(yīng)當(dāng)不限于上述實施例。
【權(quán)利要求】
1. 一種系統(tǒng)故障檢測及處理方法,其特征在于,包括: 中斷服務(wù)程序發(fā)送一級喂狗信號,并接收系統(tǒng)檢測任務(wù)的二級喂狗信號; 在檢測到任務(wù)死循環(huán)或任務(wù)異常時,根據(jù)預(yù)先設(shè)定的處理策略進(jìn)行系統(tǒng)異常處理;其 中,當(dāng)中斷服務(wù)程序在設(shè)定時間內(nèi)接收不到所述二級喂狗信號時,則中斷服務(wù)程序停止發(fā) 送一級喂狗信號,進(jìn)行系統(tǒng)重啟。
2. 如權(quán)利要求1所述的系統(tǒng)故障檢測及處理方法,其特征在于,當(dāng)系統(tǒng)出現(xiàn)操作系統(tǒng) 崩潰或者硬件異常時,系統(tǒng)自動重啟恢復(fù)。
3. 如權(quán)利要求1或2所述的系統(tǒng)故障檢測及處理方法,其特征在于,當(dāng)中斷超過設(shè)定閾 值、比所述系統(tǒng)檢測任務(wù)優(yōu)先級更高的任務(wù)忙、系統(tǒng)啟動期間系統(tǒng)異?;蛩鱿到y(tǒng)檢測任 務(wù)自身異常掛起時,中斷服務(wù)程序接收不到所述二級喂狗信號。
4. 如權(quán)利要求3所述的系統(tǒng)故障檢測及處理方法,其特征在于,進(jìn)行任務(wù)死循環(huán)檢測 時,包括: 系統(tǒng)檢測任務(wù)定時二級軟件喂狗,低優(yōu)先級死循環(huán)輔助任務(wù)定時死循環(huán)?;罹S持; 定時統(tǒng)計中央處理器CPU占有率; 判斷統(tǒng)計得到的CPU占有率是否高于CPU死循環(huán)判斷門限值,如果否,則判定上述任務(wù) 沒有出現(xiàn)任務(wù)死循環(huán);如果是,則進(jìn)一步判斷低優(yōu)先級死循環(huán)輔助任務(wù)是否?;钪梦唬绻?是,則判定沒有出現(xiàn)死循環(huán);如果否,則進(jìn)行告警,通知維護人員分析; 判斷系統(tǒng)檢測任務(wù)在采樣檢測時間段內(nèi)是否只處理了一個消息,如果否,則進(jìn)行告警, 通知維護人員分析;如果是,則判定該任務(wù)處于死循環(huán)狀態(tài)。
5. 如權(quán)利要求1、2或4所述的系統(tǒng)故障檢測及處理方法,其特征在于,進(jìn)行任務(wù)異常檢 測時,包括: 定時檢測所有任務(wù)的工作狀態(tài); 根據(jù)檢測到的任務(wù)工作狀態(tài),以及結(jié)合預(yù)先配置的任務(wù)異常判斷策略,進(jìn)行任務(wù)異常 檢測。
6. -種系統(tǒng)故障檢測及處理裝置,其特征在于,包括: 信號處理模塊,用于使中斷服務(wù)程序發(fā)送一級喂狗信號,并接收系統(tǒng)檢測任務(wù)的二級 喂狗信號; 異常處理模塊,用于在檢測到任務(wù)死循環(huán)或任務(wù)異常時,根據(jù)預(yù)先設(shè)定的處理策略進(jìn) 行系統(tǒng)異常處理;其中,當(dāng)中斷服務(wù)程序在設(shè)定時間內(nèi)接收不到所述二級喂狗信號時,則令 中斷服務(wù)程序停止發(fā)送一級喂狗信號,進(jìn)行系統(tǒng)重啟。
7. 如權(quán)利要求6所述的系統(tǒng)故障檢測及處理裝置,其特征在于,所述裝置還包括: 自重啟模塊,用于當(dāng)系統(tǒng)出現(xiàn)操作系統(tǒng)崩潰或者硬件異常時,系統(tǒng)自動重啟恢復(fù)。
8. 如權(quán)利要求6或7所述的系統(tǒng)故障檢測及處理裝置,其特征在于,當(dāng)中斷超過設(shè)定閾 值、比所述系統(tǒng)檢測任務(wù)優(yōu)先級更高的任務(wù)忙、系統(tǒng)啟動期間系統(tǒng)異?;蛩鱿到y(tǒng)檢測任 務(wù)自身異常掛起時,中斷服務(wù)程序接收不到所述二級喂狗信號。
9. 如權(quán)利要求8所述的系統(tǒng)故障檢測及處理裝置,其特征在于,所述裝置還包括: CPU占有率統(tǒng)計模塊,用于系統(tǒng)檢測任務(wù)定時二級軟件喂狗,低優(yōu)先級死循環(huán)輔助任務(wù) 定時死循環(huán)?;罹S持時,定時統(tǒng)計中央處理器CPU占有率; 任務(wù)死循環(huán)檢測模塊,用于系統(tǒng)檢測任務(wù)判斷統(tǒng)計得到的CPU占有率是否高于CPU死 循環(huán)判斷門限值,如果否,則判定上述任務(wù)沒有出現(xiàn)任務(wù)死循環(huán);如果是,則進(jìn)一步判斷低 優(yōu)先級死循環(huán)輔助任務(wù)是否保活置位,如果是,則判定沒有出現(xiàn)死循環(huán);如果否,則進(jìn)行告 警,通知維護人員分析;判斷系統(tǒng)檢測任務(wù)在采樣檢測時間段內(nèi)是否只處理了一個消息,如 果否,則進(jìn)行告警,通知維護人員分析;如果是,則判定該任務(wù)處于死循環(huán)狀態(tài)。
10.如權(quán)利要求6、7或9所述的系統(tǒng)故障檢測及處理裝置,其特征在于,所述裝置還包 括: 任務(wù)工作狀態(tài)檢測模塊,用于定時檢測所有任務(wù)的工作狀態(tài); 任務(wù)異常檢測模塊,用于根據(jù)檢測到的任務(wù)工作狀態(tài),以及結(jié)合預(yù)先配置的任務(wù)異常 判斷策略,進(jìn)行任務(wù)異常檢測。
【文檔編號】G06F11/34GK104102572SQ201310111375
【公開日】2014年10月15日 申請日期:2013年4月1日 優(yōu)先權(quán)日:2013年4月1日
【發(fā)明者】于光波, 朱懷云, 邱靜 申請人:中興通訊股份有限公司