一种软件系统故障自恢复方法及其使用的软件看门狗系统的制作方法

文档序号:6333469阅读:342来源:国知局
专利名称:一种软件系统故障自恢复方法及其使用的软件看门狗系统的制作方法
技术领域
本发明涉及一种软件系统故障自恢复方法及其使用的软件看门狗系统。
背景技术
在软件系统的运行过程中,常常会发生异常而导致系统发生崩溃,如内存读写冲 突、非法除0、堆栈溢出或越界、句柄无效、数组越界、系统陷入死循环等。对于一些实时性要 求较高的应用场景来说,在软件系统发生异常时能够快速的完成自恢复是非常重要的。尤 其是对于一些运行在服务器端的软件系统,由于其发生异常甚至崩溃时不易被发现,这就 更要求其具有故障自恢复的功能。现有的实现软件系统故障自恢复的方法一般采用软件看门狗技术,其实现原理 是软件看门狗定时查询被监视软件系统的运行状态,定时向被监视软件系统发送查询请 求,被监视的软件系统在接收到查询请求后立即返回一条应答消息,若软件看门狗在发送 查询命令后的T时间内(T为查询超时时限)没有收到该应答消息,则认为该被监视的软件 系统发生了异常,立即结束该软件系统的运行并将其重新启动。该方法虽然简单易行,且也比较可靠,但该方法不适用于实时性要求高的场景,因 为该方法中软件看门狗对软件系统运行状态的监视是通过定时查询来完成的,所以当被监 视的软件系统发生崩溃导致自行退出时,软件看门狗需要一定的时间周期才能够监视到。

发明内容
本发明提出了一种实现软件系统故障自恢复的方法,用以解决当软件系统发生异 常导致崩溃时能够迅速恢复运行的问题。一种软件系统故障自恢复方法,采用的具体技术方案,包括步骤如下步骤一、被监视的软件系统定时向软件看门狗发送心跳包,所述软件看门狗接收 并读取所述心跳包;步骤二、所述软件看门狗通过进程同步机制和以无限期等待的方式监视所述被监 视的软件系统的退出,并根据被监视的软件系统的退出情况作相应操作。其中,步骤一前还包括以阻塞的方式建立所述软件看门狗与所述被监视的软件系 统之间通信的通信通道的步骤,所述软件看门狗为通信通道的服务端,所述被监视的软件 系统为通信通道的客户端。其中,所述软件看门狗若在预设的时长内连续没有收到心跳包的次数或连续读取 心跳包失败的次数超过预设的阈值,则立即强制结束所述被监视的软件系统。其中,被监视的软件系统退出时,生成相应的退出码若被监视的软件系统正常退 出,则生成的退出码为0 ;若被监视的软件系统为非正常退出,则生成的退出码为非0。其中,软件看门狗通过进程同步机制和以无限期等待的方式监视到软件系统退出 时,软件看门狗获取被监视的软件系统的退出码,并判断该软件系统的退出情况若所述退 出码为0,则被监视的软件系统为正常退出;若所述退出码为非0,则被监视的软件系统为非正常退出。其中,所述根据被监视的软件系统的退出情况作相应操作,具体包括若被监视的 软件系统是正常退出,则软件看门狗取消对该被监视的软件系统的监视;若被监视的软件 系统是非正常退出,则软件看门狗重启该被监视的软件系统。一种软件看门狗系统,包括主模块,用于读取被监视的软件系统信息并将该信息 发送给启动软件系统模块;启动软件系统模块,用于接收所述被监视的软件系统信息和重 启所述被监视的软件系统的消息,并启动所述被监视的软件系统的运行;还包括心跳包接收模块,用于根据接收到的同步等待模块发送的已经退出的被监视的软 件系统消息,判断被监视的软件系统是否已经退出,若否,则接收并读取所述被监视软件系 统定时发送的心跳包,若是,则取消接收该被监视的软件系统发送的心跳包;同步等待模块,用于通过进程同步机制和以无限期等待的方式监视所述被监视的 软件系统的退出,并以异步的方式将已经退出的被监视的软件系统消息发送给心跳包接收 模块和第二判断模块;第二判断模块,用于根据接收到的所述同步等待模块发送的已经退出的被监视的 软件系统消息,判断所述被监视的软件系统的退出情况,若是非正常退出,则向启动软件系 统模块发送一条重启被监视的软件系统的指令。其中,所述心跳包接收模块还用于以阻塞的方式创建用于与所述被监视的软件系 统进行通信的通信通道。其中,所述已经退出的被监视的软件系统消息,包括已经退出的被监视软件系统 以及对应的退出码。所述软件看门狗系统,还包括第一判断模块,用于根据心跳包接收模块在预设的时长内连续没有收到心跳包的 次数或连续读取心跳包失败的次数与预设的阈值的比较情况,判断所述被监视的软件系统 是否发生异常,若是,则向结束软件系统模块发送一条结束所述被监视的软件系统的消息, 若否,则继续接收所述被监视的软件系统发送的心跳包;结束软件系统模块,用于接收第一判断模块发送的结束所述被监视的软件系统的 消息,强制结束所述被监视的软件系统。本发明提出的一种软件系统故障自恢复方法,软件看门狗通过进程同步机制和以 无限期等待的方式监视软件系统的退出,所以当被监视的软件系统发生异常导致崩溃而自 行退出时,软件看门狗可以实时地监视到从而重启该软件系统,解决当软件系统崩溃自行 退出时现有技术实时性不够的问题。


图1为软件系统故障自恢复方法实施例一的流程图;图2为软件看门狗实施例一的结构示意图;图3为软件系统故障自恢复方法实施例二的流程图;图4为软件看门狗实施例二的结构示意图;图5为软件看门狗实施例二的心跳包接收模块、第一判断模块和结束软件系统模块的流程图。
具体实施例方式实施例一一种软件系统故障自恢复方法,如图1,包括以下步骤步骤一、软件看门狗以阻塞的方式建立用于与被监视的软件系统进行通信的通 信通道,所述软件看门狗为通信通道的服务端,所述被监视的软件系统为通信通道的客户 端;步骤二、被监视的软件系统定时向软件看门狗发送心跳包,软件看门狗接收并读 取所述被监视的软件系统定时发送的心跳包;步骤三、软件看门狗通过进程同步机制和以无限期等待的方式监视软件系统的退 出,在监视到软件系统退出时,根据获取到的被监视的软件系统的退出码来判断被监视的 软件系统是否正常退出并作相应的操作若获取到的被监视的软件系统的退出码为0,则表示被监视的软件系统正常退出, 软件看门狗取消对该被监视的软件系统的监控;若获取到的被监视的软件系统的退出码为 非0,则表示被监视的软件系统非正常退出,软件看门狗重启该被监视的软件系统;例如,当被监视的软件系统发生异常导致崩溃而自行退出时,由于软件看门狗通 过进程同步机制并以无限期等待的方式监视软件系统的退出,所以软件看门狗立即检测到 软件系统已经退出,获取到的被监视的软件系统的退出码为非0,则软件看门狗立即重启该 软件系统。一种软件看门狗系统,如图2,包括主模块,用于读取被监视的软件系统信息并将该信息发送给启动软件系统模块;启动软件系统模块,用于接收主模块发送的所述被监视的软件系统信息和第二判 断模块发送的重启所述被监视的软件系统的消息,并启动所述被监视的软件系统的运行;心跳包接收模块,用于以阻塞的方式等待所述被监视的软件系统的通信通道连接 请求,根据接收的同步等待模块发送的所述已经退出的被监视软件系统消息,检测被监视 软件系统是否已经退出,若否,被监视的软件系统的通信通道连接请求到达后,接收并读取 所述被监视软件系统定时发送的心跳包,若是,则取消接收该被监视的软件系统发送的心 跳包;同步等待模块,用于通过进程同步机制和以无限期等待的方式监视所述被监视的 软件系统的退出,并以异步的方式将已经退出的被监视的软件系统消息发送给心跳包接收 模块和第二判断模块;第二判断模块,用于根据接收到的所述同步等待模块发送的已经退出的被监视的 软件系统消息,判断所述被监视的软件系统的退出情况,若是非正常退出,则向启动软件系 统模块发送一条重启所述被监视的软件系统的消息。其中,所述已经退出的被监视的软件系统消息,包括已经退出的被监视软件系统 以及对应的退出码。实施例二鉴于现有技术还有可靠性不够的缺点如当被监视软件系统在运行一个较为耗时的计算时,因为软件看门狗在规定的时间内只进行一次查询,所以在这种情形下该软件系 统不能及时响应,此时若判定该被监视软件系统发生了异常并将其重启,可能会带来一些 相关的附加问题;为解决被监视软件系统运行耗时计算时可能出现的误判问题,在实施例 一的步骤二后增加以下步骤软件看门狗根据读取所述被监视软件系统定时发送的心跳包情况监视该软件系 统的运行状态若软件看门狗在预设的时长内连续没有收到心跳包或读取心跳包失败的次 数超过阈值,则立即强制结束该被监视的软件系统。例如本实施例中,当被监视的软件系统发生异常不能正常工作但还在运行时,如 出现死锁等这样的情况时,预设的时长为3s,阈值N为5,当软件看门狗在3s内连续读取心 跳包失败的次数或连续没有接收到心跳包的次数I为6次时,这时软件看门狗认为被监视 的软件系统发生了异常,立即强制结束该被监视的软件系统。其他步骤与实施例一相同,本实施例的软件系统故障自恢复方法的流程图如图3, 软件看门狗设定在规定时长内允许的连续读取心跳包错误的次数或连续没有接收到心跳 包的次数,保证被监视的软件系统在进行耗时计算时也有比较充足的时间向软件看门狗发 送心跳包,解决了现有技术可靠性不够的问题。同样为了解决现有技术可靠性不够的缺点,即软件系统运行耗时计算时可能出现 的误判问题,所述软件看门狗在实施例一的模块基础上增加以下模块第一判断模块,用于根据心跳包接收模块在预设的时长内连续没有收到心跳包的 次数或连续读取心跳包失败的次数与预设的阈值的比较情况,判断所述被监视的软件系统 是否发生异常,若是,则向结束软件系统模块发送一条结束所述被监视的软件系统的消息, 若否,则继续接收所述被监视的软件系统发送的心跳包;结束软件系统模块,用于接收第一判断模块发送的结束所述被监视的软件系统的 消息,强制结束所述被监视的软件系统。其他模块与实施例一的模块相同,本实施例的软件看门狗的模块结构如图4,该软 件看门狗的具体信号流程如下1)主模块读取被监视的软件系统信息并将该信息发送给启动软件系统模块;2)启动软件系统模块根据接收到的主模块发送的被监视软件系统信息,启动被监 视的软件系统的运行;3)如图5,心跳包接收模块首先以阻塞的方式等待被监视的软件系统的通信通道 连接请求,并根据同步等待模块发送的所述已经退出的被监视软件系统消息,检测被监视 的软件系统是否退出,若是,则取消接收该被监视软件系统的心跳包,若否,则被监视的软 件系统的通信通道连接请求到达后,接收并读取所述被监视软件系统定时发送的心跳包, 并将读取情况发送到第一判断模块;第一判断模块根据接收到的心跳包读取情况,判断所述被监视的软件系统是否发 生异常假设软件看门狗在预设的时长内连续没有收到心跳包的次数或连续读取心跳包失 败的次数为I并初始化为0,如果读取成功,则将I重新设置为0,并返回到心跳包接收模块 检测被监视的软件系统是否退出步骤;如果读取失败,则I加1,当I <阈值N时,则返回到 心跳包接收模块检测被监视的软件系统是否退出步骤,当I > N时,则向结束软件系统模块 发送结束该被监视软件系统的消息,结束软件系统模块立即强制结束该软件系统;
7
4)同步等待模块通过进程同步机制和以无限期等待的方式监视软件系统的退出, 并以异步的方式将已经退出的被监视软件系统消息发送给心跳包接收模块和第二判断模 块;该已经退出的被监视软件系统消息,包括已经退出的被监视软件系统以及对应的退出 码;5)第二判断模块根据接收到的同步等待模块发送的已经退出的被监视软件系统 消息,根据退出码判断软件系统的退出情况,若该被监视的软件系统为非正常退出,则向启 动软件系统模块发送一条重启该软件系统的消息,启动软件系统模块重启该软件系统的运 行,若该被监视的软件系统为正常退出,则取消对该被监视软件系统的监视。以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明 的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范 围之内。
权利要求
一种软件系统故障自恢复方法,其特征在于,包括步骤步骤一、被监视的软件系统定时向软件看门狗发送心跳包,所述软件看门狗接收并读取所述心跳包;步骤二、所述软件看门狗通过进程同步机制和以无限期等待的方式监视所述被监视的软件系统的退出,并根据被监视的软件系统的退出情况作相应操作。
2.根据权利要求1所述的软件系统故障自恢复方法,其特征在于,步骤一前还包括步骤以阻塞的方式建立所述软件看门狗与所述被监视的软件系统之间通信的通信通道,所 述软件看门狗为通信通道的服务端,所述被监视的软件系统为通信通道的客户端。
3.根据权利要求1所述的软件系统故障自恢复方法,其特征在于,所述软件看门狗若 在预设的时长内连续没有收到心跳包的次数或连续读取心跳包失败的次数超过预设的阈 值,则立即强制结束所述被监视的软件系统。
4.根据权利要求1所述的软件系统故障自恢复方法,其特征在于,被监视的软件系统 退出时,生成相应的退出码若被监视的软件系统正常退出,则生成的退出码为0 ;若被监 视的软件系统为非正常退出,则生成的退出码为非0。
5.根据权利要求4所述的软件系统故障自恢复方法,其特征在于,软件看门狗通过进 程同步机制和以无限期等待的方式监视到软件系统退出时,软件看门狗获取被监视的软件 系统的退出码并判断该软件系统的退出情况若所述退出码为0,则被监视的软件系统为 正常退出;若所述退出码为非0,则被监视的软件系统为非正常退出。
6.根据权利要求1或5所述的软件系统故障自恢复方法,其特征在于,所述根据被监视 的软件系统的退出情况作相应操作具体包括若被监视的软件系统是正常退出,则软件看 门狗取消对该被监视的软件系统的监视;若被监视的软件系统是非正常退出,则软件看门 狗重启该被监视的软件系统。
7.一种软件看门狗系统,包括主模块,用于读取被监视的软件系统信息并将该信息 发送给启动软件系统模块;启动软件系统模块,用于接收所述被监视的软件系统信息和重 启被监视的软件系统的消息,并启动所述被监视的软件系统的运行;其特征是所述软件看门狗系统还包括心跳包接收模块,用于根据接收到的同步等待模块发送的已经退出的被监视的软件系 统消息,判断被监视的软件系统是否已经退出,若否,则接收并读取所述被监视软件系统定 时发送的心跳包,若是,则取消接收该被监视的软件系统发送的心跳包;同步等待模块,用于通过进程同步机制并以无限期等待的方式监视所述被监视的软件 系统的退出,并以异步的方式将已经退出的被监视的软件系统消息发送给心跳包接收模块 和第二判断模块;第二判断模块,用于根据接收到的所述同步等待模块发送的已经退出的被监视的软件 系统消息,判断所述被监视的软件系统的退出情况,若是非正常退出,则向启动软件系统模 块发送一条重启被监视的软件系统的消息。
8.根据权利要求7所述的软件看门狗系统,其特征在于,所述心跳包接收模块还用于 以阻塞的方式创建用于与所述被监视的软件系统进行通信的通信通道。
9.根据权利要求7所述的软件看门狗系统,其特征在于,所述已经退出的被监视的软件系统消息,包括已经退出的被监视软件系统以及对应的退出码。
10.根据权利要求7或8或9所述的软件看门狗系统,其特征在于,所述软件看门狗系 统还包括第一判断模块,用于根据心跳包接收模块在预设的时长内连续没有收到心跳包 的次数或连续读取心跳包失败的次数与预设的阈值的比较情况,判断所述被监视的软件系 统是否发生异常,若是,则向结束软件系统模块发送一条结束所述被监视的软件系统的消 息,若否,则继续接收所述被监视的软件系统发送的心跳包;结束软件系统模块,用于接收第一判断模块发送的结束所述被监视的软件系统的消 息,强制结束所述被监视的软件系统。
全文摘要
本发明提出一种软件系统故障自恢复方法及其使用的软件看门狗,解决软件系统发生异常导致崩溃自行退出而不能快速自恢复的问题。一种软件系统故障自恢复方法包括以下步骤软件系统定时向软件看门狗发送心跳包;软件看门狗通过进程同步机制并以无限期等待的方式监视软件系统的退出,并根据软件系统的退出情况作相应的操作;一种软件看门狗系统,包括主模块、启动软件系统模块,还包括同步等待模块、第二判断模块;当软件系统发生异常导致崩溃而自行退出时,软件看门狗可以实时地检测到,结束软件系统的运行并重启该软件系统,确保本发明的实时性。
文档编号G06F11/07GK101980171SQ20101050334
公开日2011年2月23日 申请日期2010年10月8日 优先权日2010年10月8日
发明者刘明华, 岑护平, 康晓林 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1