CN105677501B - Linux***中基于看门狗的精细化进程监控方法及*** - Google Patents

Linux***中基于看门狗的精细化进程监控方法及*** Download PDF

Info

Publication number
CN105677501B
CN105677501B CN201610007790.5A CN201610007790A CN105677501B CN 105677501 B CN105677501 B CN 105677501B CN 201610007790 A CN201610007790 A CN 201610007790A CN 105677501 B CN105677501 B CN 105677501B
Authority
CN
China
Prior art keywords
dog
thread
monitoring
dynamic
business process
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.)
Active
Application number
CN201610007790.5A
Other languages
English (en)
Other versions
CN105677501A (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.)
Fiberhome Telecommunication Technologies Co Ltd
Wuhan Fiberhome Technical Services Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies Co Ltd
Wuhan Fiberhome Technical Services Co 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 Fiberhome Telecommunication Technologies Co Ltd, Wuhan Fiberhome Technical Services Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN201610007790.5A priority Critical patent/CN105677501B/zh
Publication of CN105677501A publication Critical patent/CN105677501A/zh
Application granted granted Critical
Publication of CN105677501B publication Critical patent/CN105677501B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种Linux***中基于看门狗的精细化进程监控方法及***,涉及Linux***的进程监控技术领域。该方法包括:根据创建的监控配置文件判断本次进程监控是静态监控还是动态监控;若为静态监控,则通过定期发送指定信号的方式对各业务进程进行监控,一旦发现业务进程不存在,则通过停止执行“喂狗”操作,使***重启复位;若为动态监控,则只有在业务进程注册后,才开始对该业务进程进行监控,监控过程中通过不断发送的状态帧获得业务进程的最新状态,一旦发现业务进程或***出现异常,则通过停止执行“喂狗”操作,使***重启复位。本发明能够实现精细化的进程监控,满足进程监控的高质量要求;而且监控方式灵活,节省资源、效率高。

Description

Linux***中基于看门狗的精细化进程监控方法及***
技术领域
本发明涉及Linux***的进程监控技术领域,特别是涉及一种Linux***中基于看门狗的精细化进程监控方法及***。
背景技术
在嵌入式Linux***中,由于处理器的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,进而使得程序的正常运行被打断,***无法继续工作,会造成整个***陷入停滞状态,甚至发生不可预料的后果。因此,出于对Linux***的稳定性考虑,通常需要对Linux***中各种运行的进程进行实时监控。
在Linux***中,进程监控本质上是利用Linux提供的IPC(Inter-ProcessCommunication,进程间通信)机制完成监控进程与业务进程之间的消息传递。现有的进程监控方法一般采用一种静态监控模式,即监控进程通过读取一份已有的配置文件(该配置文件记录了Linux***中所有运行的业务进程),开始对配置文件中的所有业务进程进行监控,监控过程中,监控进程通过不断向各业务进程发送信号,来判断各业务进程是否还存在,若存在,则说明该业务进程未出现程序跑飞等异常;若不存在,则说明该业务进程可能出现了程序跑飞等异常。
现有监控方式虽然简单易行,但使用过程中依然存在以下缺陷:
(1)现有监控方式的监控精细度不高,只能对各业务进程是否出现程序跑飞等最基本的状态进行判断,无法对***的使用状态和业务进程中最新运行状态等进行更精细化的监控,难以满足进程监控的高质量要求。
(2)在实际应用中,有些业务进程运行周期短、使用频率低,对于这些业务进程往往无需进行长期的实时监控。而现有的监控方式中,监控进程只能统一对配置文件中的所有业务进程进行监控,监控方式不灵活,造成大量监控资源的浪费,使得整体的监控效率低。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种Linux***中基于看门狗的精细化进程监控方法及***,能够实现精细化的进程监控,满足进程监控的高质量要求;而且监控方式灵活,节省资源、效率高。
为达到以上目的,本发明提供一种Linux***中基于看门狗的精细化进程监控方法,包括以下步骤:
S1:创建监控配置文件,监控配置文件包括看门狗超时值、静态业务进程名以及监控方式的类型,监控方式的类型为动态监控或静态监控,转入S2;
S2:根据监控配置文件中监控方式的类型,判断本次进程监控所采用的监控方式是静态监控还是动态监控,若为静态监控,则转入S3;若为动态监控,则转入S4;
S3:创建静态喂狗线程和发送线程;静态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当发送线程根据监控配置文件中的静态业务进程名向对应的业务进程定期发送指定信号时,静态喂狗线程将根据各静态业务进程的返回值判断对应业务进程是否依旧存在,若是,则静态喂狗线程继续执行“喂狗”操作,使***继续正常运行;否则,静态喂狗线程停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位,结束;
S4:创建动态喂狗线程和接收线程;动态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当有业务进程注册到接收线程后,接收线程开始接收由该业务进程不断发出的状态帧,并通过状态帧获得业务进程的最新状态;动态喂狗线程对业务进程的最新状态和***的使用状态进行监控,当业务进程和***均正常时,动态喂狗线程继续执行“喂狗”操作,使***继续正常运行;当发现业务进程或***出现异常时,动态喂狗线程则停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位,结束;
S4具体包括以下步骤:
S401:创建并初始化动态喂狗线程,初始化时,将创建通信通道和进程状态信息表,其中,进程状态信息表用于存储所有被监控的业务进程的状态信息,转入S402:
S402:动态喂狗线程创建并启动接收线程;接收线程启动后,动态喂狗线程进入“喂狗”循环:在***正常时,定时对看门狗硬件执行“喂狗”操作;当有业务进程注册到接收线程后,接收线程会将当前注册的业务进程的状态信息添加到进程状态信息表中,业务进程通过通信通道不断向接收线程发送状态帧,接收线程根据收到的状态帧,获取业务进程的最新状态信息,并更新进程状态信息表;动态喂狗线程定期检查进程状态信息表,并实时获取***的使用状态信息,当业务进程和***均正常时,动态喂狗线程继续执行“喂狗”操作,使***继续正常运行;当发现业务进程或***出现异常时,动态喂狗线程则停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位,结束。
在上述技术方案的基础上,所述进程状态信息表的表项与所述状态帧的结构相同,均包括以下字段:
进程号:用于标识发送状态帧的业务进程;
线程号:用于标识业务进程中发送状态帧的线程编号或句柄;
终止时间:表示业务进程下一次发送状态帧的最大间隔值,取值≥0;
异常编码:用于标识业务进程当前的异常号,与***的errno编码一致;
提示信息:用于警告某线程出现问题的信息。
在上述技术方案的基础上,S402中,接收线程每次更新进程状态信息表时,将对进程状态信息表的终止时间字段进行重置;动态喂狗线程每次定期检查进程状态信息表时,将对进程状态信息表的终止时间字段进行减一操作;一旦某一业务进程的终止时间字段减为0,则表明该业务进程出现异常。
在上述技术方案的基础上,S402中,动态喂狗线程定期检查进程状态信息表时,将根据进程状态信息表的异常编码字段,判断该异常是否会影响***的运行,若是,则表明业务进程出现异常;否则,表明业务线程未出现异常。
在上述技术方案的基础上,S1中所述监控配置文件的内容还包括***空闲内存下界阈值;S402中所述实时获取***的使用状态信息,具体包括以下步骤:通过df命令获取当前Flash使用率;使用cat/proc/memeinfo命令获取当前***内存使用率;使用cat/proc/stat命令获取当前***CPU使用率;S402中所述***出现异常,具体包括以下情况:当前Flash使用率超出80%或当前***内存使用率超出监控配置文件中***空闲内存下界阈值或当前***CPU使用率超出80%。
在上述技术方案的基础上,S402中所述业务进程通过通信通道不断向接收线程发送状态帧时,业务进程将对状态帧的发送状态进行判断,如果发送过程出错,业务进程将从接收进程中解注册。
在上述技术方案的基础上,S402中,接收线程在更新进程状态信息表时,将锁住进程状态信息表;S402中,动态喂狗线程定期检查进程状态信息表时,将锁住进程状态信息表。
在上述技术方案的基础上,S3中所述指定信号为编号为0的空信号。
本发明还提供一种实现上述方法的Linux***中基于看门狗的精细化进程监控***,包括监控配置文件创建模块、监控方式判断模块、静态监控模块和动态监控模块;
所述监控配置文件创建模块用于:创建监控配置文件,监控配置文件包括看门狗超时值、静态业务进程名以及监控方式的类型,监控方式的类型为动态监控或静态监控,向监控方式判断模块发送判断信号;
所述监控方式判断模块用于:收到判断信号后,根据监控配置文件中监控方式的类型,判断本次进程监控所采用的监控方式是静态监控还是动态监控,若为静态监控,则向静态监控模块发送静态监控信号;若为动态监控,则向动态监控模块发送动态监控信号;
所述静态监控模块用于:收到静态监控信号后,创建静态喂狗线程和发送线程;静态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当发送线程根据监控配置文件中的静态业务进程名向对应的业务进程定期发送指定信号时,静态喂狗线程将根据各静态业务进程的返回值判断对应业务进程是否依旧存在,若是,则静态喂狗线程继续执行“喂狗”操作,使***继续正常运行;否则,静态喂狗线程停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位;
所述动态监控模块用于:收到动态监控信号后,创建动态喂狗线程和接收线程;动态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当有业务进程注册到接收线程后,接收线程开始接收由该业务进程不断发出的状态帧,并通过状态帧获得业务进程的最新状态;动态喂狗线程对业务进程的最新状态和***的使用状态进行监控,当业务进程和***均正常时,动态喂狗线程继续执行“喂狗”操作,使***继续正常运行,当发现业务进程或***出现异常时,动态喂狗线程则停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位。
与现有技术相比,本发明的优点如下:
(1)与现有技术中单纯采用静态监控方式相比,本发明在一般的静态监控方式的基础上加入了动态监控方式。动态监控方式中,利用业务进程不断发出的状态帧来获得该业务进程的最新状态;通过对业务进程的最新状态和***的使用状态进行监控,从而实现更精细化的进程监控,能够满足进程监控的高质量要求。
(2)本发明中,可根据用户的使用需求对进程监控的方式进行选择,使得监控方式更加灵活,既保留了传统的静态监控方式,又加入了灵活性更强的动态监控方式;动态监控方式通过注册机制,达到一种被动监控状态(只有在某一业务进程通过注册,请求被监控后,才对该业务进程进行监控)。与现有技术中必需对所有业务进程进行统一监控相比,这种被动监控状态避免了对运行周期短、使用频率低的业务进程进行主动监控的情况,有效降低了监控资源的浪费,提高了整体的监控效率。
(3)本发明的静态监控方式和动态监控方式均基于看门狗技术实现***的重启复位。一旦发现业务进程或***出现异常,就停止对看门狗硬件执行“喂狗”操作,停止时间超过看门狗超时值后,便可使***重启复位,在硬件级别上保证了进程监控的有效性和稳定性。
附图说明
图1是本发明实施例中Linux***中基于看门狗的精细化进程监控方法的流程图;
图2是本发明实施例中动态监控的时序图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供一种Linux***中基于看门狗的精细化进程监控方法,包括以下步骤:
S1:创建监控配置文件,监控配置文件包括***空闲内存下界阈值、看门狗超时值、监控方式的类型(动态监控或静态监控)以及静态业务进程名,转入S2。
具体操作时,S1中所述监控配置文件的格式为“配置项=项值”,其中,***空闲内存下界阈值用配置项min-memory表示;看门狗超时值用配置项watchdog-timeout表示;监控方式的类型用配置项type表示;静态业务进程名用配置项task表示。
S2:根据监控配置文件中监控方式的类型,判断本次进程监控所采用的监控方式是静态监控还是动态监控,若为静态监控,则转入S3;若为动态监控,则转入S4。
S3:创建静态喂狗线程和发送线程;静态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当发送线程根据监控配置文件中的静态业务进程名向对应的业务进程定期发送指定信号时,静态喂狗线程将根据各静态业务进程的返回值判断对应业务进程是否依旧存在,若是,则静态喂狗线程继续执行“喂狗”操作,使***继续正常运行;否则,静态喂狗线程停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位,结束。
具体操作时,S3中所述指定信号为编号为0的空信号(由POSIX.1标准定义)。
S4:创建动态喂狗线程和接收线程;动态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当有业务进程注册到接收线程后,接收线程开始接收由该业务进程不断发出的状态帧,并通过状态帧获得业务进程的最新状态;动态喂狗线程对业务进程的最新状态和***的使用状态进行监控,当业务进程和***均正常时,动态喂狗线程继续执行“喂狗”操作,使***继续正常运行;当发现业务进程或***出现异常时,动态喂狗线程则停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位,结束。
看门狗硬件俗称“看门狗”(watchdog),看门狗可以是处理器内置,也可以处理器外置,本实施例采用外置看门狗。
看门狗使***可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和处理器的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入特定信号(脉冲或高低电平),这一程序是分散地位于其他控制程序中,一旦处理器由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序(俗称“喂狗”)便不能被执行。这个时候,看门狗芯片由于得不到处理器送来的信号,便在它和处理器复位引脚相连的引脚上送出一个复位信号,使处理器发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了处理器的自动恢复。
看门狗的核心是一个自减的计数器,在看门狗设置初值后计数器开始自减,如果超过了看门狗超时值还不去喂狗,那么看门狗计数器就会减到0从而引起看门狗中断,造成***复位。
实际操作时,参见图2所示,S4具体包括以下步骤:
S401:创建并初始化动态喂狗线程,初始化时,将创建通信通道和进程状态信息表,其中,进程状态信息表用于存储所有被监控的业务进程的状态信息,转入S402:
本发明的通信通道采用消息队列或管道,即状态帧的发送通过消息队列或管道来实现。使用消息队列时可以将其看做一个消息的链表,它将消息看作一个记录,并且这个记录具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读出消息。这种消息的发送方式的优点是:发送方不必等待接收方检查它所收到的消息就可以继续工作下去,而接收方如果没有收到消息也不需等待。
S402:动态喂狗线程创建并启动接收线程;接收线程启动后,动态喂狗线程进入“喂狗”循环:在***正常时,定时对看门狗硬件执行“喂狗”操作;当有业务进程注册到接收线程后,接收线程会将当前注册的业务进程的状态信息添加到进程状态信息表中,业务进程通过通信通道不断向接收线程发送状态帧,接收线程根据收到的状态帧,获取业务进程的最新状态信息,并更新进程状态信息表;动态喂狗线程定期检查进程状态信息表,并实时获取***的使用状态信息,当业务进程和***均正常时,动态喂狗线程继续执行“喂狗”操作,使***继续正常运行;当发现业务进程或***出现异常时,动态喂狗线程则停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位,结束。
其中,进程状态信息表可以采用链表或数组存储;表1为进程状态信息表表项,表2为状态帧结构:
表1、进程状态信息表表项
进程号 线程号 终止时间 异常码 提示信息
4Bytes 4Bytes 4Bytes 4Bytes (1-16)Bytes
表2、状态帧结构
进程号 线程号 终止时间 异常码 提示信息
4Bytes 4Bytes 4Bytes 4Bytes (1-16)Bytes
由表1、表2可知,进程状态信息表的表项与状态帧的结构相同,均包括以下字段:
进程号:用于标识发送状态帧的业务进程;
线程号:用于标识业务进程中发送状态帧的线程编号(或句柄);通过该信息字段可以很清楚的知道,发送状态帧的具体线程是哪个,也就是说,一旦某个业务进程出现异常,我们可以通过该字段顺利查找到具体对应的线程号,从而实现了对业务进程的线程级监控,使得监控更加精细、准确,更有利于异常的定位和排查;
终止时间:表示业务进程下一次发送状态帧的最大间隔值,取值≥0;
异常编码:用于标识业务进程当前的异常号,与***的errno编码一致;
提示信息:用于警告某线程出现问题的信息。
其中,进程号、线程号、终止时间、异常编码均使用大端字节序(网络字节序)。提示信息使用ASCII码(ASCII字符集与其对应的UTF-8兼容,故在附录API限定的字符集中使用UTF-8和ASCII都可以),不存在大小端问题,按序发送即可。
更具体地,S402中,接收线程每次更新进程状态信息表时,将对进程状态信息表的终止时间字段进行重置;动态喂狗线程每次定期检查进程状态信息表时,将对进程状态信息表的终止时间字段进行减一(更新)操作;一旦某一业务进程的终止时间字段减为0,则表明该业务进程出现异常(超过规定时间未收到状态帧,则认为业务进程已经“死掉”或跑飞)。
除此之外,S402中,动态喂狗线程定期检查进程状态信息表时,将根据进程状态信息表的异常编码字段,判断该异常是否会影响***的运行,若是,则表明业务进程出现异常;否则,表明业务线程未出现异常。
进一步地,S402中所述实时获取***的使用状态信息,具体包括以下步骤:通过df命令获取当前Flash使用率;使用cat/proc/memeinfo命令获取当前***内存使用率;使用cat/proc/stat命令获取当前***CPU使用率。S402中所述***出现异常,具体包括以下情况:当前Flash使用率超出80%或当前***内存使用率超出监控配置文件中***空闲内存下界阈值或当前***CPU使用率超出80%。
为了提高整个监控过程的有效性及可靠性,S402中所述业务进程通过通信通道不断向接收线程发送状态帧时,业务进程将对状态帧的发送状态进行判断,如果发送过程出错,业务进程将从接收进程中解注册。
实际操作中,接收线程和动态喂狗线程在访问进程状态信息表时,可能发生线程竞争。为了避免竞争问题,接收线程和动态喂狗线程在进行读写进程状态信息表时需要使用互斥锁。具体来说,参见图2所示,S402中,接收线程在更新进程状态信息表时,将锁住进程状态信息表;S402中,动态喂狗线程定期检查进程状态信息表时,将锁住进程状态信息表。
本发明实施例还提供一种实现上述方法的Linux***中基于看门狗的精细化进程监控***,包括监控配置文件创建模块、监控方式判断模块、静态监控模块和动态监控模块;
其中,监控配置文件创建模块用于:创建监控配置文件,监控配置文件包括看门狗超时值、静态业务进程名以及监控方式的类型,监控方式的类型为动态监控或静态监控,向监控方式判断模块发送判断信号;
监控方式判断模块用于:收到判断信号后,根据监控配置文件中监控方式的类型,判断本次进程监控所采用的监控方式是静态监控还是动态监控,若为静态监控,则向静态监控模块发送静态监控信号;若为动态监控,则向动态监控模块发送动态监控信号;
静态监控模块用于:收到静态监控信号后,创建静态喂狗线程和发送线程;静态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当发送线程根据监控配置文件中的静态业务进程名向对应的业务进程定期发送指定信号时,静态喂狗线程将根据各静态业务进程的返回值判断对应业务进程是否依旧存在,若是,则静态喂狗线程继续执行“喂狗”操作,使***继续正常运行;否则,静态喂狗线程停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位;
动态监控模块用于:收到动态监控信号后,创建动态喂狗线程和接收线程;动态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当有业务进程注册到接收线程后,接收线程开始接收由该业务进程不断发出的状态帧,并通过状态帧获得业务进程的最新状态;动态喂狗线程对业务进程的最新状态和***的使用状态进行监控,当业务进程和***均正常时,动态喂狗线程继续执行“喂狗”操作,使***继续正常运行,当发现业务进程或***出现异常时,动态喂狗线程则停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位。
具体来说,该动态监控模块包括初始设置子模块和监控管理子模块;
初始设置子模块用于:创建并初始化动态喂狗线程,初始化时,创建通信通道和进程状态信息表,其中,进程状态信息表用于存储所有被监控的业务进程的状态信息,向监控管理子模块发送监控管理信号:
监控管理子模块用于:收到监控管理信号后,控制动态喂狗线程创建并启动接收线程;接收线程启动后,动态喂狗线程进入“喂狗”循环:在***正常时,定时对看门狗硬件执行“喂狗”操作;当有业务进程注册到接收线程后,接收线程会将当前注册的业务进程的状态信息添加到进程状态信息表中,业务进程通过通信通道不断向接收线程发送状态帧,接收线程根据收到的状态帧,获取业务进程的最新状态信息,并更新进程状态信息表;动态喂狗线程定期检查进程状态信息表,并实时获取***的使用状态信息,当业务进程和***均正常时,动态喂狗线程继续执行“喂狗”操作,使***继续正常运行;当发现业务进程或***出现异常时,动态喂狗线程则停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (9)

1.一种Linux***中基于看门狗的精细化进程监控方法,其特征在于,包括以下步骤:
S1:创建监控配置文件,监控配置文件包括看门狗超时值、静态业务进程名以及监控方式的类型,监控方式的类型为动态监控或静态监控,转入S2;
S2:根据监控配置文件中监控方式的类型,判断本次进程监控所采用的监控方式是静态监控还是动态监控,若为静态监控,则转入S3;若为动态监控,则转入S4;
S3:创建静态喂狗线程和发送线程;静态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当发送线程根据监控配置文件中的静态业务进程名向对应的业务进程定期发送指定信号时,静态喂狗线程将根据各静态业务进程的返回值判断对应业务进程是否依旧存在,若是,则静态喂狗线程继续执行“喂狗”操作,使***继续正常运行;否则,静态喂狗线程停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位,结束;
S4:创建动态喂狗线程和接收线程;动态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当有业务进程注册到接收线程后,接收线程开始接收由该业务进程不断发出的状态帧,并通过状态帧获得业务进程的最新状态;动态喂狗线程对业务进程的最新状态和***的使用状态进行监控,当业务进程和***均正常时,动态喂狗线程继续执行“喂狗”操作,使***继续正常运行;当发现业务进程或***出现异常时,动态喂狗线程则停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位,结束;
S4具体包括以下步骤:
S401:创建并初始化动态喂狗线程,初始化时,将创建通信通道和进程状态信息表,其中,进程状态信息表用于存储所有被监控的业务进程的状态信息,转入S402:
S402:动态喂狗线程创建并启动接收线程;接收线程启动后,动态喂狗线程进入“喂狗”循环:在***正常时,定时对看门狗硬件执行“喂狗”操作;当有业务进程注册到接收线程后,接收线程会将当前注册的业务进程的状态信息添加到进程状态信息表中,业务进程通过通信通道不断向接收线程发送状态帧,接收线程根据收到的状态帧,获取业务进程的最新状态信息,并更新进程状态信息表;动态喂狗线程定期检查进程状态信息表,并实时获取***的使用状态信息,当业务进程和***均正常时,动态喂狗线程继续执行“喂狗”操作,使***继续正常运行;当发现业务进程或***出现异常时,动态喂狗线程则停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位,结束。
2.如权利要求1所述的Linux***中基于看门狗的精细化进程监控方法,其特征在于:所述进程状态信息表的表项与所述状态帧的结构相同,均包括以下字段:
进程号:用于标识发送状态帧的业务进程;
线程号:用于标识业务进程中发送状态帧的线程编号或句柄;
终止时间:表示业务进程下一次发送状态帧的最大间隔值,取值≥0;
异常编码:用于标识业务进程当前的异常号,与***的errno编码一致;
提示信息:用于警告某线程出现问题的信息。
3.如权利要求2所述的Linux***中基于看门狗的精细化进程监控方法,其特征在于:S402中,接收线程每次更新进程状态信息表时,将对进程状态信息表的终止时间字段进行重置;动态喂狗线程每次定期检查进程状态信息表时,将对进程状态信息表的终止时间字段进行减一操作;一旦某一业务进程的终止时间字段减为0,则表明该业务进程出现异常。
4.如权利要求2所述的Linux***中基于看门狗的精细化进程监控方法,其特征在于:S402中,动态喂狗线程定期检查进程状态信息表时,将根据进程状态信息表的异常编码字段,判断该异常是否会影响***的运行,若是,则表明业务进程出现异常;否则,表明业务线程未出现异常。
5.如权利要求1所述的Linux***中基于看门狗的精细化进程监控方法,其特征在于:S1中所述监控配置文件的内容还包括***空闲内存下界阈值;
S402中所述实时获取***的使用状态信息,具体包括以下步骤:通过df命令获取当前Flash使用率;使用cat/proc/memeinfo命令获取当前***内存使用率;使用cat/proc/stat命令获取当前***CPU使用率;
S402中所述***出现异常,具体包括以下情况:当前Flash使用率超出80%或当前***内存使用率超出监控配置文件中***空闲内存下界阈值或当前***CPU使用率超出80%。
6.如权利要求1所述的Linux***中基于看门狗的精细化进程监控方法,其特征在于:S402中所述业务进程通过通信通道不断向接收线程发送状态帧时,业务进程将对状态帧的发送状态进行判断,如果发送过程出错,业务进程将从接收进程中解注册。
7.如权利要求1所述的Linux***中基于看门狗的精细化进程监控方法,其特征在于:S402中,接收线程在更新进程状态信息表时,将锁住进程状态信息表;S402中,动态喂狗线程定期检查进程状态信息表时,将锁住进程状态信息表。
8.如权利要求1所述的Linux***中基于看门狗的精细化进程监控方法,其特征在于:S3中所述指定信号为编号为0的空信号。
9.一种实现权利要求1所述方法的Linux***中基于看门狗的精细化进程监控***,其特征在于:包括监控配置文件创建模块、监控方式判断模块、静态监控模块和动态监控模块;
所述监控配置文件创建模块用于:创建监控配置文件,监控配置文件包括看门狗超时值、静态业务进程名以及监控方式的类型,监控方式的类型为动态监控或静态监控,向监控方式判断模块发送判断信号;
所述监控方式判断模块用于:收到判断信号后,根据监控配置文件中监控方式的类型,判断本次进程监控所采用的监控方式是静态监控还是动态监控,若为静态监控,则向静态监控模块发送静态监控信号;若为动态监控,则向动态监控模块发送动态监控信号;
所述静态监控模块用于:收到静态监控信号后,创建静态喂狗线程和发送线程;静态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当发送线程根据监控配置文件中的静态业务进程名向对应的业务进程定期发送指定信号时,静态喂狗线程将根据各静态业务进程的返回值判断对应业务进程是否依旧存在,若是,则静态喂狗线程继续执行“喂狗”操作,使***继续正常运行;否则,静态喂狗线程停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位;
所述动态监控模块用于:收到动态监控信号后,创建动态喂狗线程和接收线程;动态喂狗线程在***正常时,定时对看门狗硬件执行“喂狗”操作;当有业务进程注册到接收线程后,接收线程开始接收由该业务进程不断发出的状态帧,并通过状态帧获得业务进程的最新状态;动态喂狗线程对业务进程的最新状态和***的使用状态进行监控,当业务进程和***均正常时,动态喂狗线程继续执行“喂狗”操作,使***继续正常运行,当发现业务进程或***出现异常时,动态喂狗线程则停止执行“喂狗”操作,停止时间超过看门狗超时值后,***重启复位。
CN201610007790.5A 2016-01-07 2016-01-07 Linux***中基于看门狗的精细化进程监控方法及*** Active CN105677501B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610007790.5A CN105677501B (zh) 2016-01-07 2016-01-07 Linux***中基于看门狗的精细化进程监控方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610007790.5A CN105677501B (zh) 2016-01-07 2016-01-07 Linux***中基于看门狗的精细化进程监控方法及***

Publications (2)

Publication Number Publication Date
CN105677501A CN105677501A (zh) 2016-06-15
CN105677501B true CN105677501B (zh) 2019-01-29

Family

ID=56299165

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610007790.5A Active CN105677501B (zh) 2016-01-07 2016-01-07 Linux***中基于看门狗的精细化进程监控方法及***

Country Status (1)

Country Link
CN (1) CN105677501B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107783854B (zh) * 2016-08-29 2021-08-20 华为技术有限公司 处理进程的方法及其装置
CN108694093A (zh) * 2017-04-06 2018-10-23 迈普通信技术股份有限公司 进程异常监控方法及装置
CN107133167A (zh) * 2017-04-24 2017-09-05 北京北信源软件股份有限公司 一种Linux***下实时监控进程异常的方法及装置
CN107515796B (zh) * 2017-07-31 2020-08-25 奇安信科技集团股份有限公司 一种设备异常监控处理方法及装置
CN107623829B (zh) * 2017-08-30 2020-07-07 中国航空无线电电子研究所 一种视频记录设备中的文件管理方法
US11693701B2 (en) 2017-09-30 2023-07-04 Huawei Technologies Co., Ltd. System service timeout processing method, and apparatus
CN109697075A (zh) * 2017-10-20 2019-04-30 北京京东尚科信息技术有限公司 文件更新方法、***和装置
CN107844312A (zh) * 2017-11-06 2018-03-27 深圳市新国都技术股份有限公司 一种软件更新监控方法和***
CN108304275A (zh) * 2018-01-09 2018-07-20 福州瑞芯微电子股份有限公司 一种检测安卓***应用层异常的方法和装置
CN108415806A (zh) * 2018-02-07 2018-08-17 深圳市亿联智能有限公司 一种高效率线程生命监测方式
CN108762967B (zh) * 2018-05-30 2021-08-24 宁波市标准化研究院 用于监控Linux***中Web服务的软件看门狗实现方法
CN111078441A (zh) * 2018-10-19 2020-04-28 迈普通信技术股份有限公司 一种***运行状态监测方法、装置及电子设备
CN110032487A (zh) * 2018-11-09 2019-07-19 阿里巴巴集团控股有限公司 保活监控方法、装置及电子设备
CN112346906A (zh) * 2019-08-08 2021-02-09 丰鸟航空科技有限公司 无人机守护进程处理方法、装置、设备、及存储介质
CN110912785A (zh) * 2019-12-26 2020-03-24 联陆智能交通科技(上海)有限公司 Rsu健康检测方法及***
CN111856991B (zh) * 2020-06-22 2021-11-16 北京遥测技术研究所 对单粒子翻转具备五级防护的信号处理***和处理方法
CN112749038B (zh) * 2021-01-26 2023-03-10 北京中电兴发科技有限公司 一种在软件***中实现软件看门狗的方法及***
CN113778724B (zh) * 2021-05-17 2024-03-22 北京科益虹源光电技术有限公司 一种看门狗的屏蔽方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101311910A (zh) * 2008-06-27 2008-11-26 北京星网锐捷网络技术有限公司 一种硬件复位监控方法及装置
CN101739305A (zh) * 2010-02-09 2010-06-16 太仓市同维电子有限公司 操作***内核级实时看门狗监控装置及其监控方法
CN103885847A (zh) * 2014-02-08 2014-06-25 京信通信***(中国)有限公司 一种基于嵌入式***的喂狗方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282675B1 (en) * 1997-08-06 2001-08-28 Macronix International Co., Ltd. Fault-tolerant architecture for in-circuit programming

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101311910A (zh) * 2008-06-27 2008-11-26 北京星网锐捷网络技术有限公司 一种硬件复位监控方法及装置
CN101739305A (zh) * 2010-02-09 2010-06-16 太仓市同维电子有限公司 操作***内核级实时看门狗监控装置及其监控方法
CN103885847A (zh) * 2014-02-08 2014-06-25 京信通信***(中国)有限公司 一种基于嵌入式***的喂狗方法及装置

Also Published As

Publication number Publication date
CN105677501A (zh) 2016-06-15

Similar Documents

Publication Publication Date Title
CN105677501B (zh) Linux***中基于看门狗的精细化进程监控方法及***
CN101799751B (zh) 一种构建主机监控代理软件的方法
CN100555228C (zh) 一种嵌入式linux应用进程的监控方法
US20180088660A1 (en) Methods and apparatus for recovering errors with an inter-processor communication link between independently operable processors
CN109388537B (zh) 运行信息跟踪方法、装置及计算机可读存储介质
CN102761439B (zh) Pon接入***中基于看门狗的异常检测记录装置及方法
US8843930B2 (en) Thread scheduling and control framework
CN102902589B (zh) 一种集群mic作业的管理及调度方法
CN108259270A (zh) 一种数据中心统一管理***设计方法
WO2012055303A1 (zh) 网络处理器异常检测方法及***
CN102999384B (zh) 在挂起状态和执行状态下管理进程
CN101464811A (zh) 多任务监控管理***
KR20130086371A (ko) 원격통신 네트워크들 내에서 셀 복구를 위한 방법 및 시스템
CN1784656A (zh) 监控数据处理***中的操作数据
CN105527878B (zh) 一种数据采集方法、装置及数据采集调试***
CN101639803A (zh) 多线程应用***的异常处理方法和异常处理装置
CN109271256A (zh) 一种基于分布式部署的云资源管理和监控***及方法
US9176783B2 (en) Idle transitions sampling with execution context
CN109117279A (zh) 电子装置及其限制进程间通信的方法、存储介质
CN109947576B (zh) 一种虚拟机内部代理程序管理的方法
CN111078441A (zh) 一种***运行状态监测方法、装置及电子设备
CN112068963B (zh) 一种嵌入式***分布式调度***
CN108121730B (zh) 一种将数据更新快速同步到业务***的装置及方法
CN114153783A (zh) 多核通信机制的实现方法、***、计算机设备及存储介质
CN104050051B (zh) 一种星载计算机的故障诊断方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20180322

Address after: 430074 Wuhan, Hongshan Province District Road, Department of mail, No. 88 hospital

Applicant after: Fenghuo Communication Science &. Technology Co., Ltd.

Applicant after: WUHAN FIBERHOME TECHNICAL SERVICES CO., LTD.

Address before: 430074 East Lake Development Zone, Hubei, Optics Valley Venture Street, No. 67, No.

Applicant before: Fenghuo Communication Science &. Technology Co., Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant