CN101980171B - 一种软件系统故障自恢复方法及其使用的软件看门狗系统 - Google Patents

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

Info

Publication number
CN101980171B
CN101980171B CN 201010503342 CN201010503342A CN101980171B CN 101980171 B CN101980171 B CN 101980171B CN 201010503342 CN201010503342 CN 201010503342 CN 201010503342 A CN201010503342 A CN 201010503342A CN 101980171 B CN101980171 B CN 101980171B
Authority
CN
China
Prior art keywords
monitored
software
software systems
watchdog
systems
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN 201010503342
Other languages
English (en)
Other versions
CN101980171A (zh
Inventor
康晓林
刘明华
岑护平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vtron Group Co Ltd
Original Assignee
Vtron Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Vtron Technologies Ltd filed Critical Vtron Technologies Ltd
Priority to CN 201010503342 priority Critical patent/CN101980171B/zh
Publication of CN101980171A publication Critical patent/CN101980171A/zh
Application granted granted Critical
Publication of CN101980171B publication Critical patent/CN101980171B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提出一种软件系统故障自恢复方法及其使用的软件看门狗,解决软件系统发生异常导致崩溃自行退出而不能快速自恢复的问题。一种软件系统故障自恢复方法包括以下步骤:软件系统定时向软件看门狗发送心跳包;软件看门狗通过进程同步机制并以无限期等待的方式监视软件系统的退出,并根据软件系统的退出情况作相应的操作;一种软件看门狗系统,包括:主模块、启动软件系统模块,还包括:同步等待模块、第二判断模块;当软件系统发生异常导致崩溃而自行退出时,软件看门狗可以实时地检测到,结束软件系统的运行并重启该软件系统,确保本发明的实时性。

Description

一种软件系统故障自恢复方法及其使用的软件看门狗系统
技术领域
本发明涉及一种软件系统故障自恢复方法及其使用的软件看门狗系统。
背景技术
在软件系统的运行过程中,常常会发生异常而导致系统发生崩溃,如内存读写冲突、非法除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时,则向结束软件系统模块发送结束该被监视软件系统的消息,结束软件系统模块立即强制结束该软件系统;
4)同步等待模块通过进程同步机制和以无限期等待的方式监视软件系统的退出,并以异步的方式将已经退出的被监视软件系统消息发送给心跳包接收模块和第二判断模块;该已经退出的被监视软件系统消息,包括已经退出的被监视软件系统以及对应的退出码;
5)第二判断模块根据接收到的同步等待模块发送的已经退出的被监视软件系统消息,根据退出码判断软件系统的退出情况,若该被监视的软件系统为非正常退出,则向启动软件系统模块发送一条重启该软件系统的消息,启动软件系统模块重启该软件系统的运行,若该被监视的软件系统为正常退出,则取消对该被监视软件系统的监视。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。

Claims (7)

1.一种软件系统故障自恢复方法,其特征在于,包括步骤:
以阻塞的方式建立软件看门狗与被监视的软件系统之间通信的通信通道,所述软件看门狗为通信通道的服务端,所述被监视的软件系统为通信通道的客户端;
被监视的软件系统定时向软件看门狗发送心跳包,所述软件看门狗接收并读取所述心跳包;
所述软件看门狗通过进程同步机制和以无限期等待的方式监视所述被监视的软件系统的退出,并根据被监视的软件系统的退出情况作相应操作;
所述根据被监视的软件系统的退出情况作相应操作具体包括:若被监视的软件系统是正常退出,则软件看门狗取消对该被监视的软件系统的监视;若被监视的软件系统是非正常退出,则软件看门狗重启该被监视的软件系统。
2.根据权利要求1所述的软件系统故障自恢复方法,其特征在于,所述软件看门狗若在预设的时长内连续没有收到心跳包的次数或连续读取心跳包失败的次数超过预设的阈值,则立即强制结束所述被监视的软件系统。
3.根据权利要求1所述的软件系统故障自恢复方法,其特征在于,被监视的软件系统退出时,生成相应的退出码:若被监视的软件系统正常退出,则生成的退出码为0;若被监视的软件系统为非正常退出,则生成的退出码为非0。
4.根据权利要求3所述的软件系统故障自恢复方法,其特征在于,软件看门狗通过进程同步机制和以无限期等待的方式监视到软件系统退出时,软件看门狗获取被监视的软件系统的退出码并判断该软件系统的退出情况:若所述退出码为0,则被监视的软件系统为正常退出;若所述退出码为非0,则被监视的软件系统为非正常退出。
5.一种软件看门狗系统,包括:主模块,用于读取被监视的软件系统信息并将该信息发送给启动软件系统模块;启动软件系统模块,用于接收所述被监视的软件系统信息和重启被监视的软件系统的消息,并启动所述被监视的软件系统的运行;其特征是:
所述软件看门狗系统还包括:
心跳包接收模块,用于以阻塞的方式创建用于与所述被监视的软件系统进行通信的通信通道,并根据接收到的同步等待模块发送的已经退出的被监视的软件系统消息,判断被监视的软件系统是否已经退出,若否,则接收并读取所述被监视软件系统定时发送的心跳包,若是,则取消接收该被监视的软件系统发送的心跳包;
同步等待模块,用于通过进程同步机制并以无限期等待的方式监视所述被监视的软件系统的退出,并以异步的方式将已经退出的被监视的软件系统消息发送给心跳包接收模块和第二判断模块;
第二判断模块,用于根据接收到的所述同步等待模块发送的已经退出的被监视的软件系统消息,判断所述被监视的软件系统的退出情况,若是非正常退出,则向启动软件系统模块发送一条重启被监视的软件系统的消息。
6.根据权利要求5所述的软件看门狗系统,其特征在于,所述已经退出的被监视的软件系统消息,包括已经退出的被监视软件系统以及对应的退出码。
7.根据权利要求5或6所述的软件看门狗系统,其特征在于,所述软件看门狗系统还包括:第一判断模块,用于根据心跳包接收模块在预设的时长内连续没有收到心跳包的次数或连续读取心跳包失败的次数与预设的阈值的比较情况,判断所述被监视的软件系统是否发生异常,若是,则向结束软件系统模块发送一条结束所述被监视的软件系统的消息,若否,则继续接收所述被监视的软件系统发送的心跳包;
结束软件系统模块,用于接收第一判断模块发送的结束所述被监视的软件系统的消息,强制结束所述被监视的软件系统。
CN 201010503342 2010-10-08 2010-10-08 一种软件系统故障自恢复方法及其使用的软件看门狗系统 Expired - Fee Related CN101980171B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010503342 CN101980171B (zh) 2010-10-08 2010-10-08 一种软件系统故障自恢复方法及其使用的软件看门狗系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010503342 CN101980171B (zh) 2010-10-08 2010-10-08 一种软件系统故障自恢复方法及其使用的软件看门狗系统

Publications (2)

Publication Number Publication Date
CN101980171A CN101980171A (zh) 2011-02-23
CN101980171B true CN101980171B (zh) 2013-05-01

Family

ID=43600673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010503342 Expired - Fee Related CN101980171B (zh) 2010-10-08 2010-10-08 一种软件系统故障自恢复方法及其使用的软件看门狗系统

Country Status (1)

Country Link
CN (1) CN101980171B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102780576B (zh) * 2012-04-18 2015-06-03 中兴通讯股份有限公司 故障产生和消失的上报方法及装置
US10838795B2 (en) 2012-07-05 2020-11-17 Infineon Technologies Ag Monitoring circuit with a signature watchdog
CN103795599A (zh) * 2012-10-29 2014-05-14 苏州工业园区新宏博通讯科技有限公司 一种应用于电表上的i2c总线通讯的自恢复方法
CN103036778B (zh) * 2012-12-18 2018-05-01 上海斐讯数据通信技术有限公司 一种家庭网关设备中防止设备僵死的装置和方法
CN104836984A (zh) * 2014-07-16 2015-08-12 北汽福田汽车股份有限公司 车辆监控方法、装置和系统
CN105117300A (zh) * 2015-08-12 2015-12-02 浪潮(北京)电子信息产业有限公司 一种实现heartbeat高可用性的装置
CN106779717B (zh) * 2016-11-30 2021-03-30 宇龙计算机通信科技(深圳)有限公司 一种支付认证方法及装置
CN109426591B (zh) * 2017-09-04 2021-01-01 武汉斗鱼网络科技有限公司 守护windows单一程序的多个进程的方法及设备
CN108762886B (zh) * 2018-05-08 2020-12-01 烽火通信科技股份有限公司 虚拟机的故障检测恢复方法及系统
CN110995499B (zh) * 2019-12-16 2022-07-01 哈尔滨工程大学 一种auv模块的通信方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1815908A (zh) * 2006-03-02 2006-08-09 迈普(四川)通信技术有限公司 通信设备主从切换方法及通信设备
CN101464811A (zh) * 2008-12-29 2009-06-24 艾默生网络能源有限公司 多任务监控管理系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069543B2 (en) * 2002-09-11 2006-06-27 Sun Microsystems, Inc Methods and systems for software watchdog support

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1815908A (zh) * 2006-03-02 2006-08-09 迈普(四川)通信技术有限公司 通信设备主从切换方法及通信设备
CN101464811A (zh) * 2008-12-29 2009-06-24 艾默生网络能源有限公司 多任务监控管理系统

Also Published As

Publication number Publication date
CN101980171A (zh) 2011-02-23

Similar Documents

Publication Publication Date Title
CN101980171B (zh) 一种软件系统故障自恢复方法及其使用的软件看门狗系统
CN103199972B (zh) 基于soa、rs485总线实现的双机热备份切换方法及热备份系统
CA2733788C (en) Method and systems for redundant server automatic failover
TW201944236A (zh) 任務處理方法、裝置及系統
CN101907888B (zh) 小卫星星务系统双机冷备无扰切换方法
US20070220375A1 (en) Methods and apparatus for a software process monitor
CN108259227B (zh) 一种双机热备联锁系统的数据同步方法
CN103346903A (zh) 一种双机备份的方法和装置
CN102394914A (zh) 集群脑裂处理方法和装置
CN101141364A (zh) 在环状以太网中实现保护倒换的方法和装置
CN111130879B (zh) 一种基于pbft算法的集群异常恢复方法
CN110677282B (zh) 一种分布式系统的热备份方法及分布式系统
CN102508734A (zh) 操作系统恢复方法及智能设备
CN111478796B (zh) 一种ai平台的集群扩容异常处理方法
CN103139818A (zh) 一种aos中保持长连接的方法、系统、aoe、aog及终端
CN104102519A (zh) 机架式服务器系统的固件更新方法及其装置
CN103034552A (zh) 一种在软件系统中实现软件看门狗的方法
US20200136912A1 (en) Method, Device, and System for Implementing MUX Machine
CN102521060A (zh) 基于看门狗本地检测技术的高可用集群系统假死解决方法
EP2887592A1 (en) Enum-dns disaster recovery method and system in ims network
CN101557307B (zh) 调度自动化系统应用状态管理方法
CN101951327B (zh) 一种iSCSI网络系统以及检测网络故障的方法
CN103746842A (zh) 一种检测线卡故障重起的方法及系统
KR20150104435A (ko) 라우팅 처리기의 동작 모드 천이 방법
US6792558B2 (en) Backup system for operation system in communications system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 510670 Guangdong city of Guangzhou province Kezhu Guangzhou high tech Industrial Development Zone, Road No. 233

Patentee after: Wei Chong group Limited by Share Ltd

Address before: 510663 Guangzhou province high tech Industrial Development Zone, Guangdong, Cai road, No. 6, No.

Patentee before: Guangdong Weichuangshixun Science and Technology Co., Ltd.

CP03 Change of name, title or address
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130501

Termination date: 20191008

CF01 Termination of patent right due to non-payment of annual fee