一种系统故障检测及处理方法、装置制造方法

文档序号:6501401阅读:114来源:国知局
一种系统故障检测及处理方法、装置制造方法
【专利摘要】本发明公开了一种系统故障检测及处理方法、装置,包括:中断服务程序发送一级喂狗信号,并接收系统检测任务的二级喂狗信号;在检测到任务死循环或任务异常时,根据预先设定的处理策略进行系统异常处理;其中,当中断服务程序在设定时间内接收不到所述二级喂狗信号时,则中断服务程序停止发送一级喂狗信号,进行系统重启。本发明可以实现软件系统的故障自动检测,并根据用户策略自动恢复系统;能够同时检测系统启动过程和系统运行过程的系统异常,并自动恢复;能够对系统运行过程中的异常类型分类识别,并根据用户策略进行异常判断和自恢复;系统异常检测和自恢复策略用户可配置,异常原因可以记录,可查询。
【专利说明】一种系统故障检测及处理方法、装置

【技术领域】
[0001] 本发明涉及软件系统故障检测处理【技术领域】,特别是涉及一种系统故障检测及处 理方法、装置。

【背景技术】
[0002] 在软件系统启动和运行过程中,常常会发生故障导致系统无法工作,如:系统硬件 吊死、操作系统崩溃、任务异常、任务死循环、中断过频等。对于通信系统软件来说,在软件 系统发生故障时,能够自动识别任务异常状态,并根据用户的配置策略,进行相应的故障异 常告警、记录以及系统恢复,这都是必不可少的功能。特别是对于那些实时性要求较高的支 持语音业务的系统,在系统运行到任何阶段,遇到任何故障,都要求能够完全准确的异常识 另IJ、异常信息记录和自恢复处理。
[0003] 现有的软件系统故障检测及自恢复方法,一般采用硬件狗或者软件看门狗技术。 硬件狗就是一个简单的定时复位器件,其需要软件来定时为其产生脉冲喂狗信号,一旦超 过定时门限(一般1到2秒)没有喂狗,则其会自动产生硬件复位信号,触发系统复位。软件 看门狗技术其实现原理是为了解决硬件狗时间太短的问题,通过一些简单的心跳消息或者 同步监听机制来增加硬件看门狗的复位时间。这些方法虽然简单易行,比较可靠,但是也有 其自身缺陷:不能对系统所出现的所有异常情况进行检测;不能对系统中的特殊应用情况 进行监控;不能对系统故障类型进行分类日志记录。


【发明内容】

[0004] 本发明要解决的技术问题是提供一种系统故障检测及处理方法、装置,用以解决 现有技术不能对系统所出现的所有异常情况进行检测的问题。
[0005] 为解决上述技术问题,一方面,本发明提供一种系统故障检测及处理方法,包括:
[0006] 中断服务程序发送一级喂狗信号,并接收系统检测任务的二级喂狗信号;
[0007] 在检测到任务死循环或任务异常时,根据预先设定的处理策略进行系统异常处 理;其中,当中断服务程序在设定时间内接收不到所述二级喂狗信号时,则中断服务程序停 止发送一级喂狗信号,进行系统重启。
[0008] 进一步,当系统出现操作系统崩溃或者硬件异常时,系统自动重启恢复。
[0009] 进一步,当中断超过设定阈值、比所述系统检测任务优先级更高的任务忙、系统启 动期间系统异常或所述系统检测任务自身异常挂起时,中断服务程序接收不到所述二级喂 狗信号。
[0010] 进一步,进行任务死循环检测时,包括:
[0011] 系统检测任务定时二级软件喂狗,低优先级死循环辅助任务定时死循环保活维 持;
[0012] 定时统计中央处理器CPU占有率;
[0013] 判断统计得到的CPU占有率是否高于CPU死循环判断门限值,如果否,则判定上述 任务没有出现任务死循环;如果是,则进一步判断低优先级死循环辅助任务是否保活置位, 如果是,则判定没有出现死循环;如果否,则进行告警,通知维护人员分析;
[0014] 判断系统检测任务在采样检测时间段内是否只处理了一个消息,如果否,则进行 告警,通知维护人员分析;如果是,则判定该任务处于死循环状态。
[0015] 进一步,进行任务异常检测时,包括:
[0016] 定时检测所有任务的工作状态;
[0017] 根据检测到的任务工作状态,以及结合预先配置的任务异常判断策略,进行任务 异常检测。
[0018] 另一方面,本发明还提供一种系统故障检测及处理装置,包括:
[0019] 信号处理模块,用于使中断服务程序发送一级喂狗信号,并接收系统检测任务的 二级喂狗信号;
[0020] 异常处理模块,用于在检测到任务死循环或任务异常时,根据预先设定的处理策 略进行系统异常处理;其中,当中断服务程序在设定时间内接收不到所述二级喂狗信号时, 则令中断服务程序停止发送一级喂狗信号,进行系统重启。
[0021] 进一步,所述装置还包括:
[0022] 自重启模块,用于当系统出现操作系统崩溃或者硬件异常时,系统自动重启恢复。
[0023] 进一步,当中断超过设定阈值、比所述系统检测任务优先级更高的任务忙、系统启 动期间系统异常或所述系统检测任务自身异常挂起时,中断服务程序接收不到所述二级喂 狗信号。
[0024] 进一步,所述装置还包括:
[0025] CPU占有率统计模块,用于系统检测任务定时二级软件喂狗,低优先级死循环辅助 任务定时死循环保活维持时,定时统计中央处理器CPU占有率;
[0026] 任务死循环检测模块,用于系统检测任务判断统计得到的CPU占有率是否高于 (PU死循环判断门限值,如果否,则判定上述任务没有出现任务死循环;如果是,则进一步 判断低优先级死循环辅助任务是否保活置位,如果是,则判定没有出现死循环;如果否,则 进行告警,通知维护人员分析;判断系统检测任务在采样检测时间段内是否只处理了一个 消息,如果否,则进行告警,通知维护人员分析;如果是,则判定该任务处于死循环状态。
[0027] 进一步,所述装置还包括:
[0028] 任务工作状态检测模块,用于定时检测所有任务的工作状态;
[0029] 任务异常检测模块,用于根据检测到的任务工作状态,以及结合预先配置的任务 异常判断策略,进行任务异常检测。
[0030] 本发明有益效果如下:
[0031] 本发明可以实现软件系统的故障自动检测,并根据用户策略自动恢复系统;能够 同时检测系统启动过程和系统运行过程的系统异常,并自动恢复;能够对系统运行过程中 的异常类型分类识别,并根据用户策略进行异常判断和自恢复;系统异常检测和自恢复策 略用户可配置,异常原因可以记录,可查询。

【专利附图】

【附图说明】
[0032] 图1是本发明实施例中一种系统故障检测及处理方法的流程图;
[0033] 图2是本发明实施例中一种系统故障检测及处理装置的结构示意图。

【具体实施方式】
[0034] 以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述 的具体实施例仅仅用以解释本发明,并不限定本发明。
[0035] 如图1所示,本发明实施例涉及一种系统故障检测及处理方法,包括:
[0036] 步骤S101,中断服务程序发送一级喂狗信号,并接收系统检测任务的二级喂狗信 号;
[0037] 本步骤,中断服务程序正常一级硬件喂狗(发送一级喂狗信),当系统出现操作系 统崩溃或者硬件异常,中断服务程序无法工作,硬件狗产生自动复位。
[0038] 系统启动,中断服务程序开始一级硬件喂狗,待高优先级的系统检测任务启动,系 统检测任务开始二级软件喂狗(发送二级喂狗信号),这段系统启动期间内如果发生系统异 常,则将导致二级软件喂狗无法及时完成,从而停止一级硬件喂狗,系统将记录日志为启动 异常、并同时自动复位。
[0039] 系统启动后,高优先级系统检测任务正常运行,如果出现中断超过设定阈值(中断 过频),或者比系统检测任务更高优先级的任务忙,则将导致二级软件喂狗无法及时完成, 从而停止一级硬件喂狗,系统将记录日志并自动复位。另外,如果出现(高优先级)系统检测 任务由于自身异常导致挂起,也会造成无法二级软件喂狗,一级硬件喂狗停止,系统将记录 日志并自动复位。其中,比系统检测任务更高优先级的任务忙,是指比系统检测任务更高优 先级的任务的CPU (Central Processing Unit,中央处理器)占有率超过预定门限值。
[0040] 步骤S102,在检测到任务死循环或任务异常时,根据预先设定的处理策略进行系 统异常处理;其中,当中断服务程序在设定时间内接收不到所述二级喂狗信号时,则中断服 务程序停止发送一级喂狗信号,进行系统重启。
[0041] 本步骤中,任务死循环检测,包括:定时统计任务的CPU占有率;并根据预先配置 的CPU死循环判断门限值和死循环判断策略,进行任务死循环判断。任务死循环判断策略 是由用于预先配置的,由用户根据任务特性、使用环境等因素进行配置,通常情况,任务的 CPU占有率超过CPU死循环判断门限值则认为任务给死循环,当然,也可以设置例外情况。 例如,一个低优先级死循环辅助任务,该任务的存在允许其他任务的CPU占有率超过CPU死 循环判断门限值(在嵌入式系统中允许一些低优先级任务,比如idle任务一直很忙,但对 系统的正常功能没有影响);位于特殊忙任务列表内的任务,允许这些特殊任务的CPU占有 率超过CPU死循环判断门限值(一些关键任务在运行某些功能时在某段时间允许比较忙, 不应该被看做任务异常忙)。另外,还需要进行任务死循环确认步骤,即至少在两次采样时 间内都判定任务死循环,才可以认定该任务为死循环。
[0042] 任务异常检测时,包括:定时检测所有任务工作状态;根据任务异常判断策略进 行任务异常判断。任务异常判断策略由用户预先配置,用户可以根据实际情况进行不同配 置。例如:只有判定任务为关键任务(关键任务指任务异常会影响到系统基本功能,必须马 上恢复的任务;关键任务可以动态配置)异常时才进行自恢复(重启)操作;也可以当判定每 个普通任务异常时,都可进行自恢复操作;也可以认为每个任务异常都不进行自恢复操作。 任务异常检测也需要包括任务异常确认步骤,即至少两次采样时间内都判定任务异常才最 终判定该任务异常。
[0043] 系统自恢复处理,包括:判断系统异常(任务死循环或任务异常)后是否立即复位, 如果是,立即复位,如果否,则根据系统自恢复等待时间而定,该等待时间可预先配置;系统 异常等待时间到之后,复位条件判断,如果满足复位条件则立即复位;如果不满足则在等待 默认时间后复位;系统异常不复位,则告警或者日志记录。系统异常日志记录包括:日志记 录到内存或者记录到文件系统。
[0044] 下面给出分别给出具体实施例,以进一步详细说明。
[0045] 首先,本发明所述防范在系统启动或正常运行过程中的流程包括如下步骤:
[0046] 步骤S201 :系统启动,中断服务程序开始工作,并设置默认中断计数次数。默认中 断计数次数根据系统正常启动时间而定,比如系统正常启动时间最长为5分钟,每次中断 时间是10毫秒,则中断计数次数为5*60*1000/10=30000。
[0047] 步骤S202 :每次中断到来时,中断计数次数减1,中断服务程序进行一级硬件喂 狗。如果此时系统硬件异常、操作系统崩溃等导致中断服务程序无法工作,则一级硬件喂狗 停止,系统重启。
[0048] 由于硬件看门狗喂狗门限一般为1到2秒,因此为了保证系统能够正常工作,系 统启动过程中的其它任务在关中断时要特别关注,如果关中断时间比较长(超过喂狗门限) 的,需要在代码中添加喂狗点,即在关中断中进行一级喂狗,以防止正常的关中断导致系统 重启。
[0049] 另外,每次中断到来时,同时进行中断计数是否大于0的判断,如果是,则等待下 次中断到来,直至系统检测任务启动,转步骤S203 ;如果否,即中断计数等于0,说明高优先 级系统检测任务没有正常启动工作,即在系统启动过程中遇到异常,这种情况相当于二级 软件喂狗失效,则记录原因为启动异常,停止一级硬件喂狗,系统将重启。
[0050] 步骤S203 :高优先级系统检测任务启动,开始定时二级软件喂狗,重新设置中断 计数次数,中断计数次数根据系统正常运行时任务死循环判断的及时性而定,如果死循环 判断要求比较及时,数值则可以设置较小,相反则较大;比如:系统二级软件喂狗时间要求 为3分钟,每次中断时间是10毫秒,则中断计数次数为3*60*1000/10=18000。
[0051] 其中,高优先级系统检测任务二级软件喂狗定时时间可以根据中断计数次数,得 到一个经验值,例如,可以设置成30秒二级软件喂狗一次。
[0052] 步骤S204 :当比高优先级系统检测任务优先级更高的任务忙,中断过频,或者高 优先级任务异常挂起,即:3分钟内没有一次二级软件喂狗,则中断计数次数为0,系统认为 高优先级任务忙,记录原因,停止一级硬件喂狗,系统重启。
[0053] 本发明所述方法在系统正常运行过程中的任务死循环检测及自恢复方法流程如 下:
[0054] 步骤S301 :高优先级系统检测任务和低优先级死循环辅助任务启动,高优先级系 统检测任务定时二级软件喂狗,低优先级死循环辅助任务定时死循环保活维持。本步骤所 述的高优先级和低优先级是相对来说,即系统检测任务的优先级高于死循环辅助任务的优 先级。
[0055] 步骤S302 :高优先级系统检测任务,每隔1分钟统计一次任务的CPU占有率(统计 任务状态为运行状态下的CPU占有率)。
[0056] 步骤S303 :高优先级系统检测任务比较已经统计得到的任务CPU占有率是否高于 (PU死循环判断门限值(CPU死循环判断门限值可以根据系统的情况由用户预先手动配置); 如果否,则判定上述任务没有出现任务死循环;如果是,则转步骤S304。
[0057] 步骤S304 :当判定有任务CPU占有率高于CPU死循环判断门限值时,则进一步判 断低优先级死循环辅助任务是否保活置位,如果是,即低优先级死循环辅助任务有保活置 位,说明该任务能够得到系统正常调度,系统没有出现死循环,任务优先级比低优先级死循 环辅助任务更低的任务不在死循环统计范围之内;如果否,则转步骤S305。
[0058] 步骤S305 :如果低优先级任务死循环辅助任务没有置保活标志,也并不能说明该 任务死循环,这是因为系统中存在某些任务在商优先级任务定时检测时间段内就是一直在 运行,所以需要排除系统中的这些特殊任务,不能把它的正常忙状态当成死循环,但要告警 通知维护人员分析。上述特殊任务由用户预先手动配置。
[0059] 步骤S306 :以上判断已经确定系统包括死循环任务,还需要进一步判断是否是在 高优先级系统检测任务定时采样检测时间段内只处理了一个消息,如果该任务在定时采样 时间段内同时处理了多个消息,说明该任务在系统中得到调度,系统没有出现死循环,但要 告警通知维护人员分析,如果该任务在定时采样时间段内只处理了一个消息,则判定该任 务处于死循环状态。
[0060] 步骤S307 :当系统中有任务死循环时,再次等待一个1个采样周期(采样时间段) 进行死循环确认,确认之后进行日志记录,并准备重启恢复,但是重启之前需要判断系统中 是否正在运行比较重要的工作(比如文件系统操作),如果系统正在运行比较重要工作不能 马上重启,则允许延时一段时间之后强制关闭这些重要工作并重启。
[0061] 本发明上述方法在系统正常运行过程中的任务异常检测及自恢复方法流程包 括:
[0062] 步骤S401 :高优先级系统检测任务启动,并定时二级软件喂狗。
[0063] 步骤S402 :高优先级系统检测任务每隔1分钟(检测周期)检测系统所有任务的工 作状态。
[0064] 步骤S403 :高优先级系统检测任务发现有任务异常挂起,则识别该任务是关键任 务还是普通任务,系统根据用户配置的异常检测处理策略进行自恢复操作。例如,异常检测 处理策略为:允许关键任务异常重启;或者普通任务异常重启;或者所有任务异常都不重 启。其中,关键任务是由用户预先设置的,如果这些任务不能工作,则将影响系统重要功能。 [0065] 步骤S404:当确定系统中有任务异常时,则系统需要记录异常任务的堆栈信息, 同时日志记录,并重启恢复,但是重启之前需要判断系统中是否正在运行比较重要的工作 (比如文件系统操作),如果系统正在运行比较重要工作不能马上重启,则允许延时一段时 间之后强制关闭这些重要工作并重启。
[0066] 另外,如图2所示,本发明实施例还涉及一种实现上述方法的系统故障检测及处 理装置,包括:
[0067] 信号处理模块201,用于使中断服务程序发送一级喂狗信号,并接收系统检测任务 的二级喂狗信号;当中断超过设定阈值、比所述系统检测任务优先级更高的任务忙、系统启 动期间系统异常或所述系统检测任务自身异常挂起时,中断服务程序接收不到所述二级喂 狗信号。
[0068] 异常处理模块202,用于在检测到任务死循环或任务异常时,根据预先设定的处理 策略进行系统异常处理;其中,当中断服务程序在设定时间内接收不到所述二级喂狗信号 时,则令中断服务程序停止发送一级喂狗信号,进行系统重启。
[0069] 为达更佳技术效果,本发明上述装置还包括:
[0070] 自重启模块,用于当系统出现操作系统崩溃或者硬件异常时,系统自动重启恢复。
[0071] CPU占有率统计模块,用于系统检测任务定时二级软件喂狗,低优先级死循环辅助 任务定时死循环保活维持时,定时统计中央处理器CPU占有率;
[0072] 任务死循环检测模块,用于系统检测任务判断统计得到的CPU占有率是否高于 (PU死循环判断门限值,如果否,则判定上述任务没有出现任务死循环;如果是,则进一步 判断低优先级死循环辅助任务是否保活置位,如果是,则判定没有出现死循环;如果否,则 进行告警,通知维护人员分析;判断系统检测任务在采样检测时间段内是否只处理了一个 消息,如果否,则进行告警,通知维护人员分析;如果是,则判定该任务处于死循环状态。 [0073] 任务工作状态检测模块,用于定时检测所有任务的工作状态;
[0074] 任务异常检测模块,用于根据检测到的任务工作状态,以及结合预先配置的任务 异常判断策略,进行任务异常检测。
[0075] 综上所述,本发明通过定时主动扫描检测和中断、喂狗相结合的方法,即能判断出 任务死循环和任务异常等异常情况,也能判断出中断过频和硬件、软件挂死系统的情况,同 时可以根据这些异常类型分类记录原因,自动延时恢复处理。即考虑了系统的特殊运行任 务情况,也考虑了不同系统的动态配置要求,同时也可以检测系统启动过程的软件运行情 况,基本满足了软件系统的大部分异常检测及自恢复需求。
[0076] 尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到 各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
【权利要求】
1. 一种系统故障检测及处理方法,其特征在于,包括: 中断服务程序发送一级喂狗信号,并接收系统检测任务的二级喂狗信号; 在检测到任务死循环或任务异常时,根据预先设定的处理策略进行系统异常处理;其 中,当中断服务程序在设定时间内接收不到所述二级喂狗信号时,则中断服务程序停止发 送一级喂狗信号,进行系统重启。
2. 如权利要求1所述的系统故障检测及处理方法,其特征在于,当系统出现操作系统 崩溃或者硬件异常时,系统自动重启恢复。
3. 如权利要求1或2所述的系统故障检测及处理方法,其特征在于,当中断超过设定阈 值、比所述系统检测任务优先级更高的任务忙、系统启动期间系统异常或所述系统检测任 务自身异常挂起时,中断服务程序接收不到所述二级喂狗信号。
4. 如权利要求3所述的系统故障检测及处理方法,其特征在于,进行任务死循环检测 时,包括: 系统检测任务定时二级软件喂狗,低优先级死循环辅助任务定时死循环保活维持; 定时统计中央处理器CPU占有率; 判断统计得到的CPU占有率是否高于CPU死循环判断门限值,如果否,则判定上述任务 没有出现任务死循环;如果是,则进一步判断低优先级死循环辅助任务是否保活置位,如果 是,则判定没有出现死循环;如果否,则进行告警,通知维护人员分析; 判断系统检测任务在采样检测时间段内是否只处理了一个消息,如果否,则进行告警, 通知维护人员分析;如果是,则判定该任务处于死循环状态。
5. 如权利要求1、2或4所述的系统故障检测及处理方法,其特征在于,进行任务异常检 测时,包括: 定时检测所有任务的工作状态; 根据检测到的任务工作状态,以及结合预先配置的任务异常判断策略,进行任务异常 检测。
6. -种系统故障检测及处理装置,其特征在于,包括: 信号处理模块,用于使中断服务程序发送一级喂狗信号,并接收系统检测任务的二级 喂狗信号; 异常处理模块,用于在检测到任务死循环或任务异常时,根据预先设定的处理策略进 行系统异常处理;其中,当中断服务程序在设定时间内接收不到所述二级喂狗信号时,则令 中断服务程序停止发送一级喂狗信号,进行系统重启。
7. 如权利要求6所述的系统故障检测及处理装置,其特征在于,所述装置还包括: 自重启模块,用于当系统出现操作系统崩溃或者硬件异常时,系统自动重启恢复。
8. 如权利要求6或7所述的系统故障检测及处理装置,其特征在于,当中断超过设定阈 值、比所述系统检测任务优先级更高的任务忙、系统启动期间系统异常或所述系统检测任 务自身异常挂起时,中断服务程序接收不到所述二级喂狗信号。
9. 如权利要求8所述的系统故障检测及处理装置,其特征在于,所述装置还包括: CPU占有率统计模块,用于系统检测任务定时二级软件喂狗,低优先级死循环辅助任务 定时死循环保活维持时,定时统计中央处理器CPU占有率; 任务死循环检测模块,用于系统检测任务判断统计得到的CPU占有率是否高于CPU死 循环判断门限值,如果否,则判定上述任务没有出现任务死循环;如果是,则进一步判断低 优先级死循环辅助任务是否保活置位,如果是,则判定没有出现死循环;如果否,则进行告 警,通知维护人员分析;判断系统检测任务在采样检测时间段内是否只处理了一个消息,如 果否,则进行告警,通知维护人员分析;如果是,则判定该任务处于死循环状态。
10.如权利要求6、7或9所述的系统故障检测及处理装置,其特征在于,所述装置还包 括: 任务工作状态检测模块,用于定时检测所有任务的工作状态; 任务异常检测模块,用于根据检测到的任务工作状态,以及结合预先配置的任务异常 判断策略,进行任务异常检测。
【文档编号】G06F11/34GK104102572SQ201310111375
【公开日】2014年10月15日 申请日期:2013年4月1日 优先权日:2013年4月1日
【发明者】于光波, 朱怀云, 邱静 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1