CN111045832B - 一种软件死循环或阻塞监控的方法及系统 - Google Patents

一种软件死循环或阻塞监控的方法及系统 Download PDF

Info

Publication number
CN111045832B
CN111045832B CN201911108203.1A CN201911108203A CN111045832B CN 111045832 B CN111045832 B CN 111045832B CN 201911108203 A CN201911108203 A CN 201911108203A CN 111045832 B CN111045832 B CN 111045832B
Authority
CN
China
Prior art keywords
thread
message
monitoring
message processing
state
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
CN201911108203.1A
Other languages
English (en)
Other versions
CN111045832A (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
Original Assignee
Fiberhome Telecommunication Technologies 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 filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN201911108203.1A priority Critical patent/CN111045832B/zh
Publication of CN111045832A publication Critical patent/CN111045832A/zh
Application granted granted Critical
Publication of CN111045832B publication Critical patent/CN111045832B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种软件死循环或阻塞监控的方法及系统,涉及数通产品开发技术领域,本发明在预设监控时限内,对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,判定在预设监控时限内,该消息驱动组件线程处理的时长是否超时,以判定是否为死循环或阻塞。本发明可以对消息驱动组件线程进行死循环或者类死循环的监控,并在发现异常的时候抛出异常堆栈,进行快速定位。同时,本发明对于非消息驱动线程可以进行状态检查,在出现异常的时候,抛出异常,及时发现问题。

Description

一种软件死循环或阻塞监控的方法及系统
技术领域
本发明涉及数通产品开发技术领域,具体涉及一种软件死循环或阻塞监控的方法及系统。
背景技术
现在的数通软件的开发,基本上都是多个组件,多个模块来共同组成一个系统,会有大量的进程和业务线程协同运行。这些进程和业务线程都是靠消息来保证它们启动顺序以及逻辑业务处理,但是当消息处理的业务线程出现了死循环或者阻塞、死锁等情况,这时候的业务线程就不能处理后面的消息,导致软件系统的某一部分功能或整体功能失效,如果出现的是死循环,还会占用大量的CPU。由于在运行过程中,这种情况是正常运行,计算机并不会抛出异常,因此不能够及时发现这种问题,因此需要靠监控来及时的将其抓出来,抛出异常堆栈,进行快速定位。同时软件中还存在一些非消息驱动的普通线程,这些线程一直运行,处理业务,但是当这种应该正常运行的线程突然消失了或者处于异常状态,也会导致某一部分功能不可用,线程突然消失或者变成异常状态,一般也不能快速的发现,因此需要监控将对其运行状态进行监控。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种软件死循环或阻塞监控的方法及系统,及时的对出现死循环或者死锁、阻塞等异常情况进行监控,及时抛出异常。
为达到以上目的,本发明采取的技术方案是:一种软件死循环或阻塞监控的方法,包括以下步骤:
在预设监控时限内,对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,根据在预设监控时限内,该消息驱动组件线程处理的时长是否超时,判定是否为死循环或阻塞。
在上述方案的基础上,所述方法还包括以下步骤:判定为死循环或阻塞时,获取上下文,中断消息驱动组件线程,将该消息驱动组件线程从监控列表中移除,上报异常堆栈。
在上述方案的基础上,所述方法还包括以下步骤:对被监控的非消息驱动线程进行周期性轮询检查,判断该非消息驱动线程是否存在及状态是否异常;若该非消息驱动线程不存在或异常,将该非消息驱动线程从监控列表中移除并报告异常,否则等待下一次进行检查。
在上述方案的基础上,所述对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,根据在预设监控时限内,该消息驱动组件线程处理的时长是否超时,判定是否为死循环或阻塞,具体包括以下步骤:
在预设监控时限内,启动定时器,每当定时器到时,获取被监控线程的线程私有数据区,线程私有数据区用于存储消息处理状态以及消息处理标记;消息处理状态包括空闲态与派发态,消息开始处理时,将消息处理标记置为处理中;消息处理完毕时,将消息处理标记置为处理完毕;
若发现被监控线程处于stop状态或消息处理状态为空闲态,将监控计数全部清0,将线程私有数据区中存储的上一次消息处理标记置为处理完毕,等待下一次定时器超时进行检查;
若发现被监控线程处于派发态,判断查询到的消息处理标记与线程私有数据区中存储的上一次消息处理标记置是否一致,若不一致,将线程私有数据区中存储的上一次消息处理标记更新为此次查询到的消息处理标记,将监控计数清0;若一致,将此次查询到的消息处理标记为处理中,监控计数加1;
判断在预设监控时限内,监控计数是否大于预设的监控计数阈值,若是,判定为死循环或阻塞,否则判定为正常。
在上述方案的基础上,判断该非消息驱动线程是否异常的方法是:判断该非消息驱动线程是否为僵尸状态,若是,判定为异常,否则判定为正常。
本发明还提供一种软件死循环或阻塞监控的系统,包括:
监控模块,所述监控模块用于:在预设监控时限内,对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,根据在预设监控时限内,该消息驱动组件线程处理的时长是否超时,判定是否为死循环或阻塞。
在上述方案的基础上,所述系统还包括结果处理模块,其用于:判定为死循环或阻塞时,获取上下文,中断消息驱动组件线程,将该消息驱动组件线程从监控列表中移除,上报异常堆栈。
在上述方案的基础上,所述监控模块还用于:对被监控的非消息驱动线程进行周期性轮询检查,判断该非消息驱动线程是否存在及状态是否异常;若该非消息驱动线程不存在或异常,将该非消息驱动线程从监控列表中移除并报告异常,否则等待下一次进行检查。
在上述方案的基础上,所述监控模块对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,根据在预设监控时限内,该消息驱动组件线程处理的时长是否超时,判定是否为死循环或阻塞,具体包括以下步骤:
在预设监控时限内,启动定时器,每当定时器到时,获取被监控线程的线程私有数据区,线程私有数据区用于存储消息处理状态以及消息处理标记;消息处理状态包括空闲态与派发态,消息开始处理时,将消息处理标记置为处理中;消息处理完毕时,将消息处理标记置为处理完毕;
若发现被监控线程处于stop状态或消息处理状态为空闲态,将监控计数全部清0,将线程私有数据区中存储的上一次消息处理标记置为处理完毕,等待下一次定时器超时进行检查;
若发现被监控线程处于派发态,判断查询到的消息处理标记与线程私有数据区中存储的上一次消息处理标记置是否一致,若不一致,将线程私有数据区中存储的上一次消息处理标记更新为此次查询到的消息处理标记,将监控计数清0;若一致,将此次查询到的消息处理标记为处理中,监控计数加1;
判断在预设监控时限内,监控计数是否大于预设的监控计数阈值,若是,判定为死循环或阻塞,否则判定为正常。
在上述方案的基础上,所述监控模块判断该非消息驱动线程是否异常的方法是:判断该非消息驱动线程是否为僵尸状态,若是,判定为异常,否则判定为正常。
与现有技术相比,本发明的优点在于:
本发明可以对消息驱动组件线程进行死循环或者类死循环的监控,并在发现异常的时候抛出异常堆栈,进行快速定位。同时,本发明对于非消息驱动线程可以进行状态检查,在出现异常的时候,抛出异常,及时发现问题。
本发明可以识别调试场景:当进程或者线程处于STOP状态,就可认为处于调试场景,在调试场景下,监控线程不进行检测,同时将监控计数清零。
附图说明
图1为本发明实施例的软件死循环或阻塞监控的方法的对消息驱动组件线程的监控流程示意图;
图2为本发明实施例的软件死循环或阻塞监控的方法的对非消息驱动线程的监控流程示意图。
具体实施方式
以下结合附图对本发明的实施例作进一步详细说明。
本发明实施例提供一种软件死循环或阻塞监控的方法,包括以下步骤:
在预设监控时限内,对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,根据在预设监控时限内,该消息驱动组件线程处理的时长是否超时,判定是否为死循环或阻塞。
作为优选的实施方式,所述方法还包括以下步骤:判定为死循环或阻塞时,获取上下文,中断消息驱动组件线程,将该消息驱动组件线程从监控列表中移除,上报异常堆栈。
作为优选的实施方式,对被监控的非消息驱动线程进行周期性轮询检查,判断该非消息驱动线程是否存在及状态是否异常;若该非消息驱动线程不存在或异常,将该非消息驱动线程从监控列表中移除并报告异常,否则等待下一次进行检查。
作为优选的实施方式,所述对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,判定在预设监控时限内,该消息驱动组件线程处理的时长是否超时,以判定是否为死循环或阻塞,具体包括以下步骤:
在预设监控时限内,启动定时器,每当定时器到时,获取被监控线程的线程私有数据区,线程私有数据区用于存储消息处理状态以及消息处理标记;消息处理状态包括空闲态与派发态,消息开始处理时,将消息处理标记置为处理中;消息处理完毕时,将消息处理标记置为处理完毕;
若发现被监控线程处于stop状态或消息处理状态为空闲态,将监控计数全部清0,将线程私有数据区中存储的上一次消息处理标记置为处理完毕,等待下一次定时器超时进行检查;
若发现被监控线程处于派发态,判断查询到的消息处理标记与线程私有数据区中存储的上一次消息处理标记置是否一致,若不一致,将线程私有数据区中存储的上一次消息处理标记更新为此次查询到的消息处理标记,将监控计数清0;若一致,将此次查询到的消息处理标记为处理中,监控计数加1;
判断在预设监控时限内,监控计数是否大于预设的监控计数阈值,若是,判定为死循环或阻塞,否则判定为正常。
作为优选的实施方式,判断该非消息驱动线程是否异常的方法是:判断该非消息驱动线程是否为僵尸状态,若是,判定为异常,否则判定为正常。
下面结合附图对消息驱动组件线程的死循环监控具体实施方式进行详细描述。图1显示对消息驱动组件线程的整个死循环监控的流程,创建一个监控线程,监控线程启动定时器,间隔检查,比如一个30秒的定时器,那么就是每隔30秒便去检查一次,若死循环监控的阈值是五分钟,这个线程的监控计数到10就会抛出异常,若在计数10次内将消息处理完毕,则将监控计数清零。若检查到异常后,会对异常线程进行软中断,进行该组件线程的调用栈打印,进行问题定位。
监控线程有被监控线程的线程私有数据区,私有数据区中存有被监控线程的消息处理状态以及消息处理标记。消息处理状态分为空闲态与派发态。空闲态表示没有处理消息,派发态表示正在处理消息。若消息在进行处理,消息处理标记置1,处理完毕后复位为0。组件消息处理状态是监控线程进行修改,消息处理标记是由组件线程本身进行修改。
监控线程工作:一个30秒的定时器,对被监控线程进行轮询检查。通过定时器轮询监控,定时器超时后进行下面检查判断:
1、若发现被监控线程消息处理状态处于空闲态或者线程处于stop状态,直接将线程私有数据区中保存的之前的监控计数全部清0,上一次消息处理标记置为0,回到开始;若否,则走到流程2;
2、发现是派发态,此次查询到的消息处理标记与上一次查询到的消息处理标记不一样,将上一次的消息处理标记更新为此次的标记,将将监控计数清0,回到开始;若否,则到流程3;
3、此次查询到的消息处理标记与上一次查询到的消息处理标记一样为1,监控计数加一。若监控计数大于10,判定死循环或者阻塞;若否,则回到开始。
若消息处理阻塞,消息处理标记一直为1,消息处理状态一直为派发态,每次定时前超时监控都会走到3。若消息处理完成了,会将此次消息处理标记复位为0,同时上一次的消息处理标记也会复位为0。将消息处理状态设置为空闲态,就会走到流程1或者2。
图2显示对非消息驱动线程的死循环监控的流程,对非消息驱动的线程的监控步骤如下:
在已知线程的线程任务ID的情况下,判断该线程是否存在,若不存在,直接抛出异常,并将其移出监控列表;若存在,判断该线程是否是非消息驱动线程,若是,进行线程的运行状态查询,Linux进程的五种状态,僵尸状态(Z状态)是异常的,若发现线程为Z状态,进行异常抛出,并从监控列表中移出。
本发明实施例还提供一种软件死循环或阻塞监控的系统,包括:
监控模块,所述监控模块用于:创建监控线程,通过监控线程在预设监控时限内,对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,判定在预设监控时限内,该消息驱动组件线程处理的时长是否超时,以判定是否为死循环或阻塞。
作为优选的实施方式,所述系统还包括结果处理模块,其用于:判定为死循环或阻塞时,获取上下文,中断消息驱动组件线程,将该消息驱动组件线程从监控列表中移除,上报异常堆栈。
作为优选的实施方式,所述监控模块还用于:通过监控线程对被监控的非消息驱动线程进行周期性轮询检查,判断该非消息驱动线程是否存在及状态是否异常;若该非消息驱动线程不存在或异常,将该非消息驱动线程从监控列表中移除并报告异常,否则等待下一次进行检查。
作为优选的实施方式,所述监控模块通过监控线程对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,判定在预设监控时限内,该消息驱动组件线程处理的时长是否超时,以判定是否为死循环或阻塞,具体包括以下步骤:
在预设监控时限内,监控线程启动定时器,每当定时器到时,获取被监控线程的线程私有数据区,线程私有数据区用于存储消息处理状态以及消息处理标记;消息处理状态包括空闲态与派发态,消息开始处理时,将消息处理标记置为处理中;消息处理完毕时,将消息处理标记置为处理完毕;
若发现被监控线程处于stop状态或消息处理标记为空闲态,将监控计数全部清0,将线程私有数据区中存储的上一次消息处理标记置为处理完毕,等待下一次定时器超时进行检查;
若发现被监控线程处于派发态,判断查询到的消息处理标记与线程私有数据区中存储的上一次消息处理标记置是否一致,若不一致,将线程私有数据区中存储的上一次消息处理标记更新为此次查询到的消息处理标记,将监控计数清0;若一致,将此次查询到的消息处理标记为处理中,监控计数加1;
判断在预设监控时限内,监控计数是否大于预设的监控计数阈值,若是,判定为死循环或阻塞,否则判定为正常。
作为优选的实施方式,所述监控模块判断该非消息驱动线程是否异常的方法是:判断该非消息驱动线程是否为僵尸状态,若是,判定为异常,否则判定为正常。
基于同一发明构思,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现软件死循环或阻塞监控的方法的所有方法步骤或部分方法步骤。
本发明实现上述软件死循环或阻塞监控的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
基于同一发明构思,本申请实施例还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现软件死循环或阻塞监控的方法中的所有方法步骤或部分方法步骤。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、服务器或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、服务器和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (8)

1.一种软件死循环或阻塞监控的方法,其特征在于,包括以下步骤:
在预设监控时限内,对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,根据在预设监控时限内,该消息驱动组件线程处理的时长是否超时,判定是否为死循环或阻塞;
所述对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,根据在预设监控时限内,该消息驱动组件线程处理的时长是否超时,判定是否为死循环或阻塞,具体包括以下步骤:
在预设监控时限内,启动定时器,每当定时器到时,获取被监控线程的线程私有数据区,线程私有数据区用于存储消息处理状态以及消息处理标记;消息处理状态包括空闲态与派发态,消息开始处理时,将消息处理标记置为处理中;消息处理完毕时,将消息处理标记置为处理完毕;
若发现被监控线程处于stop状态或消息处理状态为空闲态,将监控计数全部清0,将线程私有数据区中存储的上一次消息处理标记置为处理完毕,等待下一次定时器超时进行检查;
若发现被监控线程处于派发态,判断查询到的消息处理标记与线程私有数据区中存储的上一次消息处理标记置是否一致,若不一致,将线程私有数据区中存储的上一次消息处理标记更新为此次查询到的消息处理标记,将监控计数清0;若一致,将此次查询到的消息处理标记为处理中,监控计数加1;
判断在预设监控时限内,监控计数是否大于预设的监控计数阈值,若是,判定为死循环或阻塞,否则判定为正常。
2.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:判定为死循环或阻塞时,获取上下文,中断消息驱动组件线程,将该消息驱动组件线程从监控列表中移除,上报异常堆栈。
3.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:对被监控的非消息驱动线程进行周期性轮询检查,判断该非消息驱动线程是否存在及状态是否异常;若该非消息驱动线程不存在或异常,将该非消息驱动线程从监控列表中移除并报告异常,否则等待下一次进行检查。
4.如权利要求3所述的方法,其特征在于,判断该非消息驱动线程是否异常的方法是:判断该非消息驱动线程是否为僵尸状态,若是,判定为异常,否则判定为正常。
5.一种软件死循环或阻塞监控的系统,其特征在于,包括:
监控模块,所述监控模块用于:在预设监控时限内,对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,根据在预设监控时限内,该消息驱动组件线程处理的时长是否超时,判定是否为死循环或阻塞;
所述监控模块对被监控的消息驱动组件线程进行周期性轮询检查,监控消息处理状态和消息处理标记,根据在预设监控时限内,该消息驱动组件线程处理的时长是否超时,判定是否为死循环或阻塞,具体包括以下步骤:
在预设监控时限内,启动定时器,每当定时器到时,获取被监控线程的线程私有数据区,线程私有数据区用于存储消息处理状态以及消息处理标记;消息处理状态包括空闲态与派发态,消息开始处理时,将消息处理标记置为处理中;消息处理完毕时,将消息处理标记置为处理完毕;
若发现被监控线程处于stop状态或消息处理状态为空闲态,将监控计数全部清0,将线程私有数据区中存储的上一次消息处理标记置为处理完毕,等待下一次定时器超时进行检查;
若发现被监控线程处于派发态,判断查询到的消息处理标记与线程私有数据区中存储的上一次消息处理标记置是否一致,若不一致,将线程私有数据区中存储的上一次消息处理标记更新为此次查询到的消息处理标记,将监控计数清0;若一致,将此次查询到的消息处理标记为处理中,监控计数加1;
判断在预设监控时限内,监控计数是否大于预设的监控计数阈值,若是,判定为死循环或阻塞,否则判定为正常。
6.如权利要求5所述的系统,其特征在于,所述系统还包括结果处理模块,其用于:判定为死循环或阻塞时,获取上下文,中断消息驱动组件线程,将该消息驱动组件线程从监控列表中移除,上报异常堆栈。
7.如权利要求5所述的系统,其特征在于,所述监控模块还用于:对被监控的非消息驱动线程进行周期性轮询检查,判断该非消息驱动线程是否存在及状态是否异常;若该非消息驱动线程不存在或异常,将该非消息驱动线程从监控列表中移除并报告异常,否则等待下一次进行检查。
8.如权利要求7所述的系统,其特征在于,所述监控模块判断该非消息驱动线程是否异常的方法是:判断该非消息驱动线程是否为僵尸状态,若是,判定为异常,否则判定为正常。
CN201911108203.1A 2019-11-13 2019-11-13 一种软件死循环或阻塞监控的方法及系统 Active CN111045832B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911108203.1A CN111045832B (zh) 2019-11-13 2019-11-13 一种软件死循环或阻塞监控的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911108203.1A CN111045832B (zh) 2019-11-13 2019-11-13 一种软件死循环或阻塞监控的方法及系统

Publications (2)

Publication Number Publication Date
CN111045832A CN111045832A (zh) 2020-04-21
CN111045832B true CN111045832B (zh) 2022-09-30

Family

ID=70232889

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911108203.1A Active CN111045832B (zh) 2019-11-13 2019-11-13 一种软件死循环或阻塞监控的方法及系统

Country Status (1)

Country Link
CN (1) CN111045832B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115202662A (zh) * 2021-04-14 2022-10-18 华为技术有限公司 一种弱内存序架构下的代码检查方法及相应设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1477512A (zh) * 2002-08-20 2004-02-25 华为技术有限公司 嵌入式软件任务死循环监控方法
CN106528318A (zh) * 2016-11-29 2017-03-22 迈普通信技术股份有限公司 线程死循环检测方法和装置
CN108319495A (zh) * 2017-01-16 2018-07-24 阿里巴巴集团控股有限公司 任务处理方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015537A1 (en) * 2002-07-15 2004-01-22 Richard Doerksen Handheld client framework system
US8589931B2 (en) * 2009-03-18 2013-11-19 International Business Machines Corporation Environment based node selection for work scheduling in a parallel computing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1477512A (zh) * 2002-08-20 2004-02-25 华为技术有限公司 嵌入式软件任务死循环监控方法
CN106528318A (zh) * 2016-11-29 2017-03-22 迈普通信技术股份有限公司 线程死循环检测方法和装置
CN108319495A (zh) * 2017-01-16 2018-07-24 阿里巴巴集团控股有限公司 任务处理方法及装置

Also Published As

Publication number Publication date
CN111045832A (zh) 2020-04-21

Similar Documents

Publication Publication Date Title
US9720761B2 (en) System fault detection and processing method, device, and computer readable storage medium
CN111782360A (zh) 分布式任务调度方法及装置
US10430260B2 (en) Troubleshooting method, computer system, baseboard management controller, and system
CN111045832B (zh) 一种软件死循环或阻塞监控的方法及系统
CN110704492A (zh) 一种数据采集方法、装置和计算机可读存储介质
EP3439237A1 (en) Exception monitoring and alarming method and device
CN116055285B (zh) 一种工控系统的进程管理方法及系统
CN110275992B (zh) 应急处理方法、装置、服务器及计算机可读存储介质
CN112579356B (zh) 一种故障处理方法及服务器
CN111090915A (zh) 自动驾驶仿真方法、装置和存储介质
CN110471780B (zh) 分布式事件处理装置、终端和计算机存储介质
CN109828945B (zh) 一种业务报文处理方法及系统
CN113037774B (zh) 一种安全管理方法、装置、设备及机器可读存储介质
CN104125101B (zh) 通信系统网元使用热补丁批量升级所属业务单盘的方法
WO2024099586A1 (en) Method and system for handling application crash, and device for running application
CN112035326A (zh) 基于集群节点互检的异常节点任务处理方法及装置
CN108920323B (zh) 应用数据统计方法、装置及移动终端
JP2006227962A (ja) アプリケーションタスク監視システムおよび方法
CN111522677A (zh) 基于嵌入式系统的启动信息记录方法及装置
CN110971941A (zh) 用于弹幕拥挤疏通的方法、系统、服务器及直播间控制器
CN110618841B (zh) 内部松耦合的共识方法、系统、电子设备
CN112686644A (zh) 一种项目运行状态监测方法、系统、设备及存储介质
CN113609181A (zh) 智能垃圾站监控方法、系统、装置及存储介质
CN111459711A (zh) 一种内存恢复方法及系统
CN112099928A (zh) Maxwell进程意外停止的恢复方法、系统及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant