一种多线程的监控方法及装置的制作方法

文档序号:6364192阅读:184来源:国知局
专利名称:一种多线程的监控方法及装置的制作方法
技术领域
本发明涉及多线程技术领域,尤其涉及一种多线程的监控方法及装置。
背景技术
随着科技的发展,对系统的功能需求越来越多,系统的复杂度也随之倍增,为了满足系统的功能性需求,会在系统中使用多线程技术。在一个复杂的多线程系统中,线程间通信和线程同步等工作在整个系统中占有相当大的比例,并且,线程在提供服务当中经常会发生线程死琐或线程异常退出等情况。如果某线程异常,即未能正常提供服务,但其它线程仍然向该线程发送消息请求,这样就很容易造成任务缓冲溢出影响业务服务,进而导致系统崩溃,大大地影响了系统的可靠性。目前,为了防止系统中的线程发生上述情况,一般采用下述方式对系统中的多线程进行监控:设定一线程为监控线程,其它线程为被监控线程;监控线程设置一个定时器,定时事件一到,向所有的被监控线程发送点名消息,以获知每个线程的工作状态;每个被监控线程收到点名消息后,实时回应点名应答消息,以报道本线程的工作状态和其它信息;当被监控线程发生点名应答超时时,监控线程累加被监控线程的超时次数,当超时次数超过预设值时,便将被监控线程变为做僵死状态,同时通知系统的主控线程。上述对线程的监控方法存在以下缺点:由于未对监控线程进行监控,不能保证监控线程正常工作,如果监控线程本身出现异常,无法将异常线程通知到系统,系统就无法得知异常线程的存在,从而影响了系统的可靠性。

发明内容
本发明实施例提供了一种多线程的监控方法及装置,用以解决现有的多线程监控方法可靠性不高的问题。 本发明实施例提供了一种多线程的监控方法,包括:全局可用性管理器监控至少一个本地可用性管理器的运行状态;所述本地可用性管理器用于监控向其注册的服务线程的运行状态;所述全局可用性管理器在确定本地可用性管理器异常运行时,对所述本地可用性管理器进行恢复操作。本发明实施例提供了一种多线程的监控装置,包括:全局可用性管理器,用于监控至少一个本地可用性管理器的运行状态,在确定本地可用性管理器异常运行时,对所述本地可用性管理器进行恢复操作;至少一个本地可用性管理器,用于监控向其注册的服务线程的运行状态。本发明实施例的有益效果包括:本发明实施例提供的一种多线程的监控方法及装置,全局可用性管理器监控至少一个本地可用性管理器的运行状态,在确定本地可用性管理器异常运行时,对本地可用性管理器进行恢复操作;其中,本地可用性管理器用于监控向其注册的服务线程的运行状态。由于采用全局可用性管理器监控本地可用性管理器、本地可用性管理器监控服务线程的两级监控结构,可以有效地监控服务线程,避免服务线程和监控线程都出现异常时,系统无法得知异常服务线程的存在,导致系统无法正常提供正常服务的情况,提高了系统的可靠性。


图1为本发明实施例提供的多线程的监控方法的流程图;图2为本发明实施例提供的全局可用性管理器监控本地可用性管理器的运行状态的流程图;图3为本发明实施例提供的本地可用性管理器监控服务线程的运行状态的流程图;图4为本发明实施例提供的实例的示意图;图5为本发明实施例提供多线程的监控装置的结构示意图。
具体实施例方式下面结合附图,对本发明实施例提供的多线程的监控方法及装置的具体实施方式
进行详细地说明。本发明实施例提供的一种多线程的监控方法,如图1所示,具体流程包括以下步骤:S101、全局可用性管理器监控至少一个本地可用性管理器的运行状态;其中,该本地可用性管理器用于监控向其注册的服务线程的运行状态;S102、全局可用 性管理器判断本地可用性管理器是否正常运行;若确定本地可用性管理器正常运行,转向步骤SlOl ;若确定本地可用性管理器异常运行,执行步骤S103 ;S103、全局可用性管理器对本地可用性管理器进行恢复操作;转向步骤S101。下面对上述各步骤的具体实现方式进行详细的说明。具体地,在执行本发明实施例提供的上述多线程监控的步骤SlOl之前,还需要进行设定监控任务的操作,例如:初始化全局可用性管理器,创建用于存储本地可用性管理器的心跳信息的记录单元,初始化本地可用性管理器,创建服务线程等。服务线程在启动前,可以向本地可用性管理器提供监控操作接口等注册信息,这样,本地可用性管理器就可以使用监控操作接口监控该服务线程的运行状态。具体地,在上述步骤SlOl中对于每个本地可用性管理器,全局可用性管理器都可以通过下述步骤实现对其运行状态的监控,如图2所示,具体步骤如下:S201、全局可用性管理器周期性地获取本地可用性管理器的心跳信息;在具体实施时,可以使用定时器进行定时,例如:可以设定定时时间间隔为TS1,在每隔TSl时长后,全局可用性管理器都会进行获取本地可用性管理器的心跳信息的操作。S202、根据获取的本地可用性管理器的心跳信息,判断本地可用性管理器的心跳是否跳动;若是,执行步骤S203 ;若否,执行步骤S204 ;在具体实施时,可以对每个本地可用性管理器创建一个心跳状态单元,每个单元中具体可以包括:本地可用性管理器的名称、ID、当前心跳计数器、上一次心跳计数器和异常计数器等信息。本地可用性管理器在执行完监控服务线程的任务后,就会改变自身的心跳信息,即触发当前心跳计数器计数。这样,可以比较当前心跳计数器和上一次心跳计数器的数值是否相同,若相同,则认为心跳无跳动;若不同,则认为有心跳跳动。以上只是举例说明如何实现本地可用性管理器的心跳是否跳动的判断,本领域技术人员也可以使用其他方式实现,在此不做限定。S203、确定本地可用性管理器正常运行,将本地可用管理器的异常计数器清零;转向步骤S201 ;S204、认为本地可用性管理器有可能异常退出或发生死循环,为了避免误判断,会向本地可用性管理器发送询问消息;具体地,运行正常的本地可用性管理器在接收到全局可用性管理器发送的询问消息后,就会改变自身的心跳信息,这样,在下次全局可用性管理器获取该本地可用性管理器的心跳信息后,就会判断出该本地可用性管理器存在心跳,确认该本地可用性管理器正常运行,并将其异常计数器清零。S205、触发本地可用性管理器的异常计数器进行计数;在具体实施时,可以在异常计数器原有的数值增加一个数值;S206、判断本地可用性管理器的异常计数器的数值是否超过第一设定门限值,具体地,该第一设定门限值例如可以设置为3次,在此不做限定;若是,执行步骤S207 ;若否,转向步骤S201 ;S207、确定本地可用性管理器异常运行。在执行上述步骤S207确定本地可用性管理器异常运行之后,全局可用性管理器就会对该本地可用性管理器进行恢复操作,这样可以有效地避免由于本地可用性管理器异常运行,发生不能正常监控服务线程的情况,从而提高了系统的可靠性。由于恢复操作属于现有技术,在此不做详述。具体地,本发明实施例提供的上述方法中,本地可用性管理器用于监控向其注册的服务线程的运行状态,其监控流程和全局可用性管理器执行的监控流程类似,如图3所示,具体过程可以通过下述步骤实现:S301、本地可用性管理器周期性地遍历向其注册的服务线程,针对每个服务线程执行如下操作:S302、获取服务线程的心跳信息;类似地,在具体实施时,可以使用定时器进行定时,例如:可以设定定时时间间隔为TS2,在每隔TS2时长后,本地可用性管理器都会进行获取服务线程的心跳信息的操作。S303、根据获取的服务线程的心跳信息,判断该服务线程的心跳是否跳动;若是,执行步骤S304 ;若否,执行步骤S305 ;类似地,在具体实施时,可以对每个服务线程创建一个心跳状态单元,每个单元中具体可以包括:服务线程的名称、ID、当前心跳计数器、上一次心跳计数器、异常计数器和通信消息队列的句柄等信息。服务线程在执行完服务任务后,就会改变自身的心跳信息,即触发当前心跳计数器计数。这样,可以比较当前心跳计数器和上一次心跳计数器的数值是否相同,若相同,则认为心跳无跳动;若不同,则认为有心跳跳动。以上只是举例说明如何实现服务线程的心跳是否 跳动的判断,本领域技术人员也可以使用其他方式实现,在此不做限定。S304、确定服务线程正常运行,将服务线程的异常计数器清零;转向步骤S301 ;S305、认为服务线程有可能异常退出或发生死循环,为了避免误判断,向服务线程发送询问消息;该询问消息用于在服务线程正常时改变服务线程的心跳信息;具体地,运行正常的服务线程在接收到本地可用性管理器发送的询问消息后,就会改变自身的心跳信息,这样,在下次本地可用性管理器获取该服务线程的心跳信息后,就会判断出该服务线程存在心跳,确认该服务线程正常运行,并将其异常计数器清零。S306、触发服务线程的异常计数器进行计数;在具体实施时,可以在异常计数器原有的数值增加一个数值;S307、判断服务线程的异常计数器的数值是否超过第二设定门限值,具体地,该第二设定门限值可以和第一设定门限值设置成相同的数值,例如3次,也可以设置成不同的数值,在此不做限定;若是,执行步骤S308 ;若否,转向步骤S301 ;S308、确定服务线程异常运行。在执行上述步骤S308之后,还可以进行本地可用性管理器对异常的服务线程进行恢复操作,或者本地可用性管理器将异常的服务线程直接上报给系统,或将异常的服务线程通过全局可用性管理器上报给系统,由系统发出告警信息等处理,在此不做限定。现有技术中的多线程监 控流程,监控线程没有考虑被监控线程的负载情况,只要定时一到,就向所有的被监控线程发送点名消息,这样,会增加被监控线程的负载,影响服务线程的处理能力。现有技术中,服务线程一般既包含定时提供系统服务的周期性服务线程,又包含由外部事件驱动且提供系统服务时间无法预期的非周期性服务线程。由于周期性服务线程在正常运行时,只在每个定时周期执行一次服务任务,其心跳也就会跟着发生跳动;只有在发生异常的情况下,心跳才会停止跳动,因此,对于周期性服务线程来说无需增加任何操作,就可实现是否异常的准确判断,相对于上述现有技术中只要定时一到就向所有的被监控线程发送点名消息而言,不会增加被监控线程的负载,也就不会影响服务线程的处理能力。由于非周期性服务线程在一个本地可用性管理器的监控周期内,其心跳状态有可能发生跳动,也有可能不发生变化。只有当服务线程心跳不发生跳动时,本地可用性管理器才会向其发送询问消息以改变服务线程的心跳信息。这样,本地可用性管理器可以在以后若干个监控周期,判断其心跳状态是否发生变化,最终判断服务线程是否异常,相对于上述现有技术中只要定时一到就向所有的被监控线程发送点名消息,也会减轻非周期性服务线程的负载。图4是一个使用本发明实施例提供的多线程监控方法的具体实例,如图4所示,由本地可用性管理器监控服务线程构成第一级监控,由全局可用性管理器监控本地可用性管理器构成第二级监控,这样,全局可用性管理器和本地可用性管理器都可以采用功能单一、结构简单的方式实现,稳定性高。并且采用两级监控的结构,可以有效地监控服务线程,避免服务线程和监控线程都出现异常时,系统无法得知异常服务线程的存在,导致系统无法正常提供正常服务的情况,提高了系统的可靠性。此外,本发明实施例提供的上述多线程监控方法能够应用于各种操作系统,例如:Windows> Vxfforks 以及 Linux 等。基于同一发明构思,本发明实施例还提供了一种多线程的监控装置,由于该装置解决问题的原理与前述一种多线程得的监控方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。本发明实施例提供的一种多线程的监控装置,如图5所示,包括:全局可用性管理器501,用于监控至少一个本地可用性管理器502的运行状态,在确定本地可用性管理器502异常运行时,对所述本地可用性管理器502进行恢复操作;至少一个本地可用性管理器502,用于监控向其注册的服务线程503的运行状态。进一步地,本发明实施例提供的上述装置中的全局可用性管理器501,具体用于周期性地获取本地可用性管理器502的心跳信息;根据获取的本地可用性管理器502的心跳信息,判断本地可用性管理器502的心跳是否跳动;若是,确定该本地可用性管理器502正常运行,将本地可用管理器502的异常计数器清零;若否,向本地可用性管理器502发送询问消息,触发本地可用性管理器502的异常计数器进行计数,并在计数后判断本地可用性管理器的异常计数器502的数值超过第一设定门限值时,确定该本地可用性管理器502异常运行。进一步地,上述本地可用性管理器502,还用于在接收到全局可用性管理器501发送的询问消息时,或在每次执行监控服务 线程503的任务后,改变自身的心跳信息。进一步地,本发明实施例提供的上述装置中的本地可用性管理器502,具体用于周期性地遍历向其注册的服务线程503,针对每个服务线程503执行如下操作:根据获取的服务线程503的心跳信息,判断服务线程503的心跳是否跳动;若是,确定该服务线程503正常运行,将服务线程503的异常计数器清零;若否,向该服务线程503发送用于在服务线程503正常时改变服务线程503的心跳信息的询问消息,触发服务线程503的异常计数器进行计数,并在计数后判断服务线程503的异常计数器的数值超过第二设定门限值时,确定该服务线程503异常运行。进一步地,上述本地可用性管理器502,还用于在确定服务线程503异常运行时,对该服务线程503进行恢复操作。进一步地,本发明实施例提供的上述本地可用性管理器502,具体用于在服务线程503注册过程中接收服务线程503发送的注册信息,该注册信息包括服务线程503向本地可用性管理器502提供的监控操作接口 ;使用监控操作接口监控服务线程503的运行状态。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-R0M,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。本发明实施例提供的一种多线程的监控方法及装置,全局可用性管理器监控至少一个本地可用性管理器的运行状态,在确定本地可用性管理器异常运行时,对本地可用性管理器进行恢复操作;其中,本地可用性管理器用于监控向其注册的服务线程的运行状态。由于采用全局可用性管理器监控本地可用性管理器、本地可用性管理器监控服务线程的两级监控结构,可以有效地监控服务线程,避免服务线程和监控线程都出现异常时,系统无法得知异常服务线程的存在,导致系统无法正常提供正常服务的情况,提高了系统的可靠性。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也 意图包含这些改动和变型在内。
权利要求
1.一种多线程的监控方法,其特征在于,包括: 全局可用性管理器监控至少一个本地可用性管理器的运行状态;所述本地可用性管理器用于监控向其注册的服务线程的运行状态; 所述全局可用性管理器在确定本地可用性管理器异常运行时,对所述本地可用性管理器进行恢复操作。
2.如权利要求1所述的方法,其特征在于,全局可用性管理器监控至少一个本地可用性管理器的运行状态,具体包括: 所述全局可用性管理器周期性地获取所述本地可用性管理器的心跳信息; 根据获取的所述本地可用性管理器的心跳信息,判断所述本地可用性管理器的心跳是否跳动; 若是,确定所述本地可用性管理器正常运行,将所述本地可用管理器的异常计数器清零; 若否,向所述本地可用性管理器发送询问消息,触发所述本地可用性管理器的异常计数器进行计数,并在计数后判断所述本地可用性管理器的异常计数器的数值超过第一设定门限值时,确定所述本地可用性管理器异常运行。
3.如权利要求2所述的方法,其特征在于,还包括: 所述本地可用性管理器在接收到所述全局可用性管理器发送的询问消息时,或在每次执行监控服务线程的任务后,改变自身的心跳信息。
4.如权利要求1-3任·一项所述的方法,其特征在于,所述本地可用性管理器监控向其注册的服务线程的运行状态,具体包括: 所述本地可用性管理器周期性地遍历向其注册的服务线程,针对每个服务线程执行如下操作: 根据获取的所述服务线程的心跳信息,判断所述服务线程的心跳是否跳动; 若是,确定所述服务线程正常运行,将所述服务线程的异常计数器清零; 若否,向所述服务线程发送用于在所述服务线程正常时改变所述服务线程的心跳信息的询问消息,触发所述服务线程的异常计数器进行计数,并在计数后判断所述服务线程的异常计数器的数值超过第二设定门限值时,确定所述服务线程异常运行。
5.如权利要求4所述的方法,其特征在于,还包括: 所述本地可用性管理器在确定所述服务线程异常运行时,对所述服务线程进行恢复操作。
6.如权利要求1-3任一项所述的方法,其特征在于,在本地可用性管理器监控向其注册的服务线程的运行状态之前,还包括: 所述本地可用性管理器在服务线程注册过程中接收所述服务线程发送的注册信息,所述注册信息包括所述服务线程向所述本地可用性管理器提供的监控操作接口 ; 所述本地可用性管理器监控向其注册的服务线程的运行状态,包括: 本地可用性管理器使用所述监控操作接口监控所述服务线程的运行状态。
7.一种多线程的监控装置,其特征在于,包括: 全局可用性管理器,用于监控至少一个本地可用性管理器的运行状态,在确定本地可用性管理器异常运行时,对所述本地可用性管理器进行恢复操作;至少一个本地可用性管理器,用于监控向其注册的服务线程的运行状态。
8.如权利要求7所述的装置,其特征在于,所述全局可用性管理器,具体用于周期性地获取所述本地可用性管理器的心跳信息;根据获取的所述本地可用性管理器的心跳信息,判断所述本地可用性管理器的心跳是否跳动;若是,确定所述本地可用性管理器正常运行,将所述本地可用管理器的异常计数器清零;若否,向所述本地可用性管理器发送询问消息,触发所述本地可用性管理器的异常计数器进行计数,并在计数后判断所述本地可用性管理器的异常计数器的数值超过第一设定门限值时,确定所述本地可用性管理器异常运行。
9.如权利要求8所述的装置,其特征在于,所述本地可用性管理器,还用于在接收到所述全局可用性管理器发送的询问消息时,或在每次执行监控服务线程的任务后,改变自身的心跳信息。
10.如权利要求7-9任一项所述的装置,其特征在于,所述本地可用性管理器,具体用于周期性地遍历向其注册的服务线程,针对每个服务线程执行如下操作:根据获取的所述服务线程的心跳信息,判断所述服务线程的心跳是否跳动;若是,确定所述服务线程正常运行,将所述服务线程的异常计数器清零;若否,向所述服务线程发送用于在所述服务线程正常时改变所述服 务线程的心跳信息的询问消息,触发所述服务线程的异常计数器进行计数,并在计数后判断所述服务线程的异常计数器的数值超过第二设定门限值时,确定所述服务线程异常运行。
11.如权利要求10所述的装置,其特征在于,所述本地可用性管理器,还用于在确定所述服务线程异常运行时,对所述服务线程进行恢复操作。
12.如权利要求7-9任一项所述的装置,其特征在于,所述本地可用性管理器,具体用于在服务线程注册过程中接收所述服务线程发送的注册信息,所述注册信息包括所述服务线程向所述本地可用性管理器提供的监控操作接口 ;使用所述监控操作接口监控所述服务线程的运行状态。
全文摘要
本发明公开了一种多线程的监控方法及装置,全局可用性管理器监控至少一个本地可用性管理器的运行状态,在确定本地可用性管理器异常运行时,对本地可用性管理器进行恢复操作;其中,本地可用性管理器用于监控向其注册的服务线程的运行状态。由于采用全局可用性管理器监控本地可用性管理器、本地可用性管理器监控服务线程的两级监控结构,可以有效地监控服务线程,避免服务线程和监控线程都出现异常时,系统无法得知异常服务线程的存在,导致系统无法正常提供正常服务的情况,提高了系统的可靠性。
文档编号G06F11/30GK103246589SQ20121002396
公开日2013年8月14日 申请日期2012年2月3日 优先权日2012年2月3日
发明者陈炳锐, 赖福琪, 方彬浩 申请人:京信通信系统(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1