基于JVM的看门狗的控制方法、装置、设备及存储介质转让专利

申请号 : CN202010463550.2

文献号 : CN111796954A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨越

申请人 : 深圳壹账通智能科技有限公司

摘要 :

本申请涉及云技术的云监控技术领域,提供了一种基于JVM的看门狗的控制方法,包括:唤醒与目标进程关联的目标看门狗;确定唤醒所述目标看门狗所对应的唤醒条件;当确定所述唤醒条件为进程异常时,获取所述目标看门狗当前所记录的数据信息,其中所述数据信息存储于区块链中;根据所述数据信息确定所述目标看门狗当前对应的服务配置;控制所述目标看门狗响应所述服务配置。本申请还提供一种基于JVM的看门狗的控制装置、计算机设备和存储介质。实现了在服务进程运行过程中,实时对进行进行监控,以及时准确的确定进程异常以及对异常状况进行处理,保证了服务进程中数据的安全性。

权利要求 :

1.一种基于JVM的看门狗的控制方法,其特征在于,所述方法包括:唤醒与目标进程关联的目标看门狗;

确定唤醒所述目标看门狗所对应的唤醒条件;

当确定所述唤醒条件为进程异常时,获取所述目标看门狗当前所记录的数据信息;

根据所述数据信息确定所述目标看门狗当前对应的服务配置;

控制所述目标看门狗响应所述服务配置。

2.根据权利要求1所述的方法,其特征在于,所述唤醒与目标进程关联的目标看门狗之前,还包括:当检测到目标进程启动时,调用一线程以运行所述目标进程关联的目标看门狗;以及设定所述一线程的生命周期等于所述目标进程的生命周期。

3.根据权利要求1所述的方法,其特征在于,所述确定唤醒所述目标看门狗所对应的唤醒条件,包括:获取所述目标看门狗监控所述目标进程时所记录的计时时间;

读取预先所设置的预设时间;

根据所述计时时间以及所述预设时间确定唤醒所述目标看门狗所对应的唤醒条件。

4.根据权利要求3所述的方法,其特征在于,所述根据所述计时时间以及预设时间唤醒所述目标看门狗确定唤醒所述目标看门狗所对应的唤醒条件,包括:当确定所述计时时间小于或者等于所述预设时间时,确定所述目标看门狗对应的唤醒条件为数据存储;

当确定所述计时时间大于所述预设时间时,确定所述目标看门狗对应的唤醒条件为进程异常。

5.根据权利要求4所述的方法,其特征在于,所述确定唤醒所述目标看门狗所对应的唤醒条件之后,还包括:当确定所述唤醒条件为数据存储时,重置所述计时时间,并将所述进程所生成的数据存储在与目标进程相关联的区块链的节点中;

当检测到数据存储完成时,控制所述目标看门狗进入休眠状态。

6.根据权利要求1所述的方法,其特征在于,所述根据所述数据信息确定所述目标看门狗当前对应的服务配置,包括:对所述数据信息进行分析处理,确定所述目标进程对应的异常数据;

根据所述异常数据确定所述目标进程的异常点;

根据所述异常点得到所述目标看门狗当前对应的服务配置。

7.根据权利要求6所述的方法,其特征在于,所述根据所述异常点得到所述目标看门狗当前对应的服务配置,包括:当所述异常点为服务异常时,确定所述目标看门狗对应的服务配置为控制目标进程重启或恢复;

当所述异常点为线程异常时,确定所述目标看门狗对应的服务配置为结束线程运行。

8.一种基于JVM的看门狗的控制装置,其特征在于,所述装置包括:唤醒模块,用于唤醒与目标进程关联的目标看门狗;

条件确定模块,用于确定唤醒所述目标看门狗所对应的唤醒条件;

信息获取模块,用于当确定所述唤醒条件为进程异常时,获取所述目标看门狗当前所记录的数据信息;

配置确定模块,用于根据所述数据信息确定所述目标看门狗当前对应的服务配置;

配置响应模块,用于控制所述目标看门狗响应所述服务配置。

9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器;

所述存储器用于存储有计算机程序;

所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如权利要求1至7中任一项所述的基于JVM的看门狗的控制方法的步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如权利要求1至7中任一项所述的基于JVM的看门狗的控制方法的步骤。

说明书 :

基于JVM的看门狗的控制方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及云技术的云监控技术领域,尤其涉及一种基于JVM的看门狗的控制方法、装置、计算机设备及存储介质。

背景技术

[0002] JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。看门狗的设计用于对系统的服务进程的状态进行监控,服务进程出现问题时进行相应的处理,比如进行服务的重启。
[0003] 现有的看门狗的设计方案通常是通过设置相应的接口利用外部监控系统进行相应的检测,此时只能确定服务出现异常但是不能确定具体的异常所在。具体地,通常情况下,网关会通过心跳检测来确定,此时将不再转发新的请求给异常服务。由于不能确定服务不响应的原因,对于存在于运行中的数据,如果贸然进行服务重启,极有可能会造成数据错误。同时对于具体地异常所在需要人工检查日志后才能确定。

发明内容

[0004] 本申请提供了一种基于JVM的看门狗的控制方法、装置、计算机设备及存储介质,以实现合理控制看门狗进行心跳响应,保证系统运行的稳定性和系统数据的安全性。
[0005] 第一方面,本申请提供了一种基于JVM的看门狗的控制方法,所述方法包括:
[0006] 唤醒与目标进程关联的目标看门狗;
[0007] 确定唤醒所述目标看门狗所对应的唤醒条件;
[0008] 当确定所述唤醒条件为进程异常时,获取所述目标看门狗当前所记录的数据信息;
[0009] 根据所述数据信息确定所述目标看门狗当前对应的服务配置;
[0010] 控制所述目标看门狗响应所述服务配置。
[0011] 第二方面,本申请还提供了一种基于JVM的看门狗的控制装置,所述装置包括:
[0012] 唤醒模块,用于唤醒与目标进程关联的目标看门狗;
[0013] 条件确定模块,用于确定唤醒所述目标看门狗所对应的唤醒条件;
[0014] 信息获取模块,用于当确定所述唤醒条件为进程异常时,获取所述目标看门狗当前所记录的数据信息;
[0015] 配置确定模块,用于根据所述数据信息确定所述目标看门狗当前对应的服务配置;
[0016] 配置响应模块,用于控制所述目标看门狗响应所述服务配置。
[0017] 第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器;所述存储器用于存储计算机程序;所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述的基于JVM的看门狗的控制方法。
[0018] 第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述的基于JVM的看门狗的控制方法。
[0019] 本申请公开了一种基于JVM的看门狗的控制方法、装置、计算机设备及存储介质,在确定需要唤醒看门狗时,唤醒相应的目标看门狗,以获取目标看门狗当前所记录的数据信息,进而根据所得到的数据信息准确确定目标看门狗所对应的进程的具体异常点,然后根据异常点得到目标看门狗此时所对应的服务配置,具体为目标看门狗对应的控制信息,最后控制目标看门狗进行相应的操作以完成对进程状态的控制。实现了在服务进程运行过程中,实时对进行进行监控,在出现异常情况时可以准确知道异常所在,进而做出更加准确的判断和及时的处理,保证了服务进程中数据的安全性。

附图说明

[0020] 为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0021] 图1为本申请一个实施例中基于JVM的看门狗的控制方法的流程示意图;
[0022] 图2为本申请一个实施例中确定唤醒条件的步骤的流程示意图;
[0023] 图3为本申请一个实施例中得到目标看门的服务配置的步骤的流程示意图;
[0024] 图4为本申请一个实施例中基于JVM的看门狗的控制装置的示意性框图;
[0025] 图5为本申请一个实施例中计算机设备的结构示意性框图。

具体实施方式

[0026] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0027] 附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
[0028] 应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0029] 还应当进理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0030] 下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
[0031] 请参阅图1,图1为本申请一个实施例中基于JVM的看门狗的控制方法的流程示意图。
[0032] 具体地,该方法包括:
[0033] 步骤S101、唤醒与目标进程关联的目标看门狗。
[0034] 看门狗用于对系统当前所运行的程序或者进程进行监控,以防止程序或者进程出现跑飞的情况,以及防止程序或者进程在线运行时候出现死循环的情况。
[0035] 在程序或者进程运行过程中,由于看门狗是时刻运行的用以实时对程序的运行进行监控,但是在程序运行正常的情况下,看门狗是处于休眠状态下,也就只是单纯对程序的运行进行计时,只有在程序或者进程的运行出现异常或者出现接收到对应的目标进程所反馈的喂狗时,目标看门狗将会被唤醒,以进行相应的操作。在目标进程运行正常和异常时,目标看门狗在被唤醒之后所进行的操作也会有所不同,具体根据实际情况的不同有所不同。
[0036] 具体地,在确定需要唤醒目标进程所对应关联的目标看门狗时,将会唤醒目标看门狗,以进行后续的相关处理。
[0037] 进一步地,在看门狗运行之前需要启动看门狗以对程序的运行进行监控,具体地,在唤醒与目标进程关联的目标看门狗之前,该方法还包括:当检测到目标进程启动时,调用一线程以运行所述秒进程关联的目标看门狗,并设定所述一线程的生命周期等于所述进程的生命周期。
[0038] 在JVM(java虚拟机)中运行某一进程时,将需要启动相应的看门狗,而为了实现看门狗的运行,需要在此进程中创建一个线程用以运行对进程进行监控的看门狗。具体地,在检测到系统中创建一个新进程运行时,调用一空闲的线程来运行用于对新进程进行监控的看门狗,使得在新进程出现异常时,可以及时准确的确定进程的异常问题所在和对进程进行相应的反馈。
[0039] 对所创建的线程,其用于运行目标看门狗以实现对目标进程的实际运行状态进行监控,由于运行目标看门狗的线程与目标进程的生命周期相同,因此在检测到目标进程结束时,将会将运行目标进程的线程进行释放。
[0040] 步骤S102、确定唤醒所述目标看门狗所对应的唤醒条件。
[0041] 在控制看门狗被唤醒时,看门狗将会进行相应的操作,具体会根据与看门狗关联的进程的实际运行状态来确定。由于在目标进程的实际运行过程中,无论目标进程是否运行异常,目标看门狗都会被唤醒以进行相应的操作。具体地,在看门狗被唤醒时,确定与目标看门狗所关联的目标进程是处于正常运行状态还是异常运行状态。目标看门狗的唤醒条件不同时所对应的服务配置也会有所不同,具体为在目标进程正常运行和异常运行时的处理方式有所不同。
[0042] 在目标看门狗因目标进程的正常运行而被唤醒时,需要在被唤醒之后对当前所获取的相关数据进行存储。而在目标看门狗因目标进程的异常运行而被唤醒时,目标看门狗需要对目标进程的异常进行相应的处理,以保证目标进程或者系统的正常运行。
[0043] 在确定目标看门狗所对应的唤醒条件时,通过目标看门狗的响应状态而确定,具体地,通过检测目标看门狗在规定的时间内是否接收到目标进程所反馈的喂狗。其中,在目标看门狗在规定时间内接收到了目标进程的喂狗时,确定目标看门狗因目标进程的正常运行而被唤醒;而在目标看门狗在规定时间内没有接收到目标进程的喂狗时,确定目标看门狗因目标进程的异常运行而被唤醒。
[0044] 在实际应用中,系统中处于运行状态的看门狗的数量与当前所运行的进程的数量相同,通过实时对进程的监控实现确保系统的正常运行。在看门狗被唤醒时,确定看门狗被唤醒的条件,以及是与哪一个进程关联的看门狗被唤醒,进而根据生成的服务配置以使得对应的看门狗响应服务配置。
[0045] 步骤S103、当确定所述唤醒条件为进程异常时,获取所述目标看门狗当前所记录的数据信息。
[0046] 在确定得到唤醒目标看门狗的唤醒条件为进程异常时,将会获取目标看门狗当前所记录的数据信息,以使得在得到相应的数据信息之后对数据信息进行分析处理,得到目标看门狗对应的控制信息。
[0047] 在实际应用过程中,在目标看门狗因进程的运行异常而被唤醒时,此时需要目标看门狗对其所关联的进程进行一定的处理,以保证进程可以正常运行。具体地,在目标看门狗因进程异常而被唤醒时,将获取进程在目标看门狗的一个监控周期内所记录的相关数据信息,其中数据信息包括但不局限于目标看门狗的内存变化情况、GC次数、当前进程中各线程的名称和状态以及系统CPU使用率等,且状态包括各线程的CPU占用率等。以使得通过对所获取的数据信息进行分析处理,确定目标进程当前所对应的具体异常信息,以准确的控制目标看门狗进行相应的操作,使得目标进程可以正常运行。
[0048] 需要说明的是,在一些实施例中,为了进一步保证上述目标看门狗所记录的数据信息的安全性,可以将目标看门狗所记录的数据信息记录存储在区块链的某一或者某些节点中。
[0049] 步骤S104、根据所述数据信息确定所述目标看门狗当前对应的服务配置。
[0050] 在得到目标看门狗当前所记录的数据信息之后,将会对所得到的数据信息进行分析处理,以确定目标看门狗对应的进程的异常状态,进而根据所确定的异常状态得到对应的服务配置。
[0051] 具体地,在得到目标看门狗当前所记录的数据信息之后,将会根据数据信息确定对应进程的异常点,而不同的异常点对应的处理方式不同,比如有的异常点需要进行进程的重启,再比如有的异常点需要等待进程自己恢复服务,因此需要对数据信息进行分析处理,以得到合适的处理方式,进而根据所得到的处理方式方式控制进程运行,如重启或者等待。
[0052] 在实际应用中,对于所获取的数据信息,针对于不同的情况有着不同的操作指令,其中具体操作可包括:
[0053] 1)重启并恢复全局变量到上一次扫描时;
[0054] 2)重启服务;
[0055] 3)等待服务恢复。
[0056] 步骤S105、控制所述目标看门狗响应所述服务配置。
[0057] 在根据数据信息得到相应的服务配置之后,将会控制目标看门狗对服务配置进行相应的操作,具体为在得到服务配置之后,看门狗将会响应服务配置所包含的操作指令。
[0058] 由上述描述可知,在对看门狗所记录的当前数据信息进行分析处理之后可以确定于看门狗所关联的进程的异常点,而针对不同的异常点,系统将会得到对应的处理方式,比如重启或者等待,在得到服务配置之后,确定服务配置所对应的操作指令,进而控制看门狗根据操作指令对相对应的进程进行控制。
[0059] 在上述描述的基于JVM的看门狗的控制方法中,在确定需要唤醒看门狗时,唤醒相应的目标看门狗,以获取目标看门狗当前所记录的数据信息,进而根据所得到的数据信息准确确定目标看门狗所对应的进程的具体异常点,然后根据异常点得到目标看门狗此时所对应的服务配置,具体为目标看门狗对应的控制信息,最后控制目标看门狗进行相应的操作以完成对进程状态的控制。实现了在服务进程运行过程中,实时对进行进行监控,在出现异常情况时可以准确知道异常所在,进而做出更加准确的判断和及时的处理,保证了服务进程中数据的安全性。
[0060] 进一步地,参照图2,图2为本申请一个实施例中确定唤醒条件的步骤的流程示意图。
[0061] 在唤醒与目标进行相关联的目标看门狗时,根据上述描述可知,看门狗的唤醒可以是进程正常运行时的唤醒,还可以是进程异常运行时的唤醒,因此在唤醒目标看门狗以控制目标看门狗运行时还需要确定唤醒目标看门狗所对应的唤醒条件,以准确的目标看门狗此时该如何进行控制和响应。
[0062] 具体地,步骤S102,确定唤醒所述目标看门狗所对应的唤醒条件,包括:
[0063] 步骤S201、获取所述目标看门狗监控所述目标进程时所记录的计时时间;
[0064] 步骤S202、读取预先所设置的预设时间;
[0065] 步骤S203、根据所述计时时间以及所述预设时间确定唤醒所述目标看门狗所对应的唤醒条件。
[0066] 由于看门狗在被唤醒之后需要进行相应的操作,而在不同情况下,看门狗的所进行的操作有所不同,因此需要有效的确定看门狗被唤醒的具体原因,进而可以准确的控制看门狗对目标进程的状态进行响应。
[0067] 在实际应用中,进程在运行时需要每间隔一定的时间进行一次喂狗操作,这里的喂狗操作是给予与进程相关联的看门狗一定的反馈,以告知看门狗此进程处于正常运行状态。对于所设定的间隔时间可根据进程所运行的服务的实际需求所设定,通常情况下默认为5秒,也就是每间隔5秒进程会进行一次喂狗操作,以确定进程此时处于正常运行状态。
[0068] 而对于看门狗而言,在接收到喂狗时,将会执行计时操作,以记录进程在指令相邻两次喂狗操作的时间间隔。在看门狗接收到喂狗之后,会记录此次接收到喂狗时的计时时间,同时还会重置看门狗的计时时间,以进行下一次计时。另外,在计时时间没有超过预设的时间间隔时,扫描一次当前进程内的全局变量,以在序列化后记录到相应的磁盘上,而在计时时间超过了预设的时间间隔时,说明在看门狗需要接收到喂狗时没有接收到喂狗,也就是看门狗所监控的进程处于异常状态。
[0069] 通过对看门狗所记录的计时时间进行获取,然后读取预先所设置的与进程服务相对应的预设时间,以将计时时间与预设时间进行比较,进而根据所得到的比较结果确定唤醒目标看门狗所对应的唤醒条件。
[0070] 在实际应用中,根据进程的实际运行状态可知,进程的实际运行状态包括正常运行和异常运行,因此对于看门狗的唤醒条件来说,被唤醒时可能是进程运行异常时需要看门狗对进程进行相应的处理,还可以能是在进程运行正常时需要进行相应的数据处理。
[0071] 在确定具体唤醒条件时,根据计时时间与预设时间之间的比较结果确定具体的唤醒条件,包括:当所述及时时间小于或者等于所述预设时间时,确定所述目标看门狗对应的唤醒条件为数据存储;当确定所述计时时间大于所述预设时间时,确定所述目标看门狗对应的唤醒条件为进程异常。
[0072] 在目标看门狗所关联的目标进程在正常运行时,看门狗会每间隔一定的时间接收到喂狗,而在每一次喂狗完成时,看门狗会进行时间重置。比如所设定的预设时间为5秒,也就是在计时时间重置之后,在5秒时间内目标看门狗会接收到目标进程所反馈的喂狗操作。显然,若目标进程在5秒时间没有向目标看门狗反馈喂狗,则说明此时目标进程处于异常运行状态,也就是此时所的唤醒条件为进程异常。
[0073] 在实际应用中,对于系统中每一个进程都会使用看门狗进行监控,因此在获取看门狗所记录的计时时间时,会将所获取的计时时间与对应的预设时间进行对比确定是否需要唤醒对应的看门狗。对于每一个进程,在需要唤醒对应的看门狗时便会唤醒相应的看门狗进行相应的操作,比如控制进程重启或者等待进程自动恢复。也就是说即使此时存在多个进程处于异常状态时,可以调用多个线程实现对各进程的控制。
[0074] 进一步地,参照图3,图3为本申请一个实施例中得到目标看门的服务配置的步骤的流程示意图。
[0075] 在确定看门狗被唤醒的唤醒条件为进程异常时,此时需要目标看门狗进行相应的操作以实现对异常状态的处理,因此需要准确的根据所得到的数据信息确定目标进程当前对应的异常状态。
[0076] 具体地,步骤104,根据所述数据信息确定所述目标看门狗当前对应的服务配置,包括:
[0077] 步骤S301、对所述数据信息进行分析处理,确定所述目标进程对应的异常数据;
[0078] 步骤S302、根据所述异常数据确定所述目标进程的异常点;
[0079] 步骤S303、根据所述异常点得到所述目标看门狗当前对应的服务配置。
[0080] 在确定目标看门狗所对应的目标进程处于异常运行状态时,获取相关联的数据信息,进而根据数据信息确定目标看门狗当前所对应的异常状态,进而使得目标看门狗可以进行相应的操作以使得目标进程可以正常运行。
[0081] 在得到目标看门狗在监控目标进程时所记录的数据信息之后,对数据信息进行分析处理,以确定数据信息中所包含的目标进程对应的异常数据,接着根据所得到的异常数据确定目标进程的异常点,最后根据所确定的异常点得到目标看门狗对应的服务配置。其中服务配置为看门狗对应的控制信息。
[0082] 对于所记录的数据信息,具体包括有:JVM内存变化情况、GC(垃圾回收)次数、目标进程中线程名称和状态以及CPU使用率等。将所记录得到的数据信息中各数据与对应的对比数据进行比较,以确定哪一个或者哪一些数据为异常数据,在确定哪一个或者哪一些数据为异常数据时,根据数据信息可以确定目标进程当前对应的异常点。
[0083] 目标进程在运行过程中,其会调用若干线程以实现目标进程在运行时的实际需求,比如在目标看门狗的运行时便会调用一个线程实现目标看门狗的运行,因此便存在上述描述的,数据信息中包含有目标进程中各线程的名称以及各自对应的状态,比如正常或者锁死,而目标进程的运行状态也会受到所包含的各线程的状态的影响。
[0084] 在实际应用中,有上述描述可知,所得到的服务配置,也就是具体操作可包括:
[0085] 1、重启并恢复全局变量到上一次扫描时;
[0086] 2、重启服务;
[0087] 3、等待服务恢复。
[0088] 对于恢复全局变量到上一次扫描时,由于在目标进程正常运行时,目标看门狗会周期性的对当前变量进行记录和存储在相应的磁盘上,因此在确定目标进程运行异常时,若需要进行恢复全局变量到上一次扫描时,目标看门狗会在相应的磁盘上进行相邻前一次全局变量的,进而实现全局变量的恢复。
[0089] 根据所得到的不同的相关数据得到相应的操作指令,通常情况下,对于上述描述的三种不同的操作,对应的数据信息可以如下描述:
[0090] 1、若频繁GC,则认为发生了内存泄露,目标看门狗会将服务重启,其中频繁GC也就是系统频繁进行数据回收以得到更多的可用内存;
[0091] 2、若存在某一线程CPU占用率等于1/C,其中C为系统CPU核数,则等待10分钟,若在10分钟后目标进程还没有喂狗,则看目标门狗会将服务重启;
[0092] 3、若发现某一线程死锁,则结束该线程;
[0093] 4、若发现目标进程中,90%的线程处于WAITING状态,且系统CPU使用率低于10%,则认为服务可能遇到了意外情况,此时将无法恢复,则目标看门狗会将服务重启,并在重启服务后将全局变量恢复到上一次扫描时;
[0094] 5、若发现90%线程处于RUNNABLE的状态下,系统CPU使用率高于50%,则认为服务当前忙,等待服务恢复,若等待10分钟后,依旧未接受到任何喂狗动作,则看门狗会将服务重启;
[0095] 6、除了上述描述的情况外,其它情况下看门狗会将服务重启。
[0096] 通常情况下,在目标看门狗没有接收到目标进程所发送的喂狗时,确定目标进程此时的运行出现了异常,因此根据实际所获取的数据信息确定当前如何进行响应。
[0097] 进一步地,在进程运行异常时,需要根据进程在运行过程中所产生的数据信息确定当前所对应的异常点,进而得到相应的针对异常状态的处理方式,以控制目标看门狗进行响应。而在确定目标进程运行正常时,目标看门狗在运行时依旧会被唤醒以进行相应的操作和响应,具体地,当确定所述唤醒条件为数据存储时,重置所述计时时间,并将所述进程所生成的数据存储在与目标进程相关联的区块链的节点中;当检测到数据存储完成时,控制所述目标看门狗进入休眠状态。
[0098] 目标进程为响应不同的业务或者操作需求而产生的,因此在目标进程运行正常时,会生成或者产生因业务操作而得到的数据,因此在目标看门狗正产接收到目标进程所反馈发送的喂狗时,将会对在当前计时周期内所得到的相关数据进行存储,以将所得到的相关数据信息存储在与目标进程相关联的区块链中,比如区块链某一/某些节点中。
[0099] 具体地,在进行相关数据的存储时,目标看门狗将会对目标进程在运行时的当前全局变量进行获取和存储,在目标进程运行过程中,实时对全局变量进行获取,以在目标看门狗接收到喂狗以进行数据存储时,获取当前时刻所得到的全局变量,进而将全局变量存储在相应的磁盘中,同时还可以根据需求对存储在磁盘中的全局变量进行处理,如更新,也可以不做更新,而是对每一个时刻所获取的全局变量进行存储。
[0100] 请参阅图4,图4为本申请一个实施例中基于JVM的看门狗的控制装置的示意性框图,该装置用于执行前述的基于JVM的看门狗的控制方法。
[0101] 如图4所示,该基于JVM的看门狗的控制装置400包括:
[0102] 唤醒模块401,用于唤醒与目标进程关联的目标看门狗;
[0103] 条件确定模块402,用于确定唤醒所述目标看门狗所对应的唤醒条件;
[0104] 信息获取模块403,用于当确定所述唤醒条件为进程异常时,获取所述目标看门狗当前所记录的数据信息;
[0105] 配置确定模块404,用于根据所述数据信息确定所述目标看门狗当前对应的服务配置;
[0106] 配置响应模块405,用于控制所述目标看门狗响应所述服务配置。
[0107] 进一步地,在一个实施例中,所述基于JVM的看门狗的控制装置400还包括线程创建模块406,用于当检测到目标进程启动时,调用一线程以运行所述目标进程关联的目标看门狗;以及,设定所述一线程的生命周期等于所述目标进程的生命周期。
[0108] 进一步地,在一个实施例中,所述条件确定模块402具体还用于:
[0109] 获取所述目标看门狗监控所述目标进程时所记录的计时时间;读取预先所设置的预设时间;根据所述计时时间以及所述预设时间确定唤醒所述目标看门狗所对应的唤醒条件。
[0110] 进一步地,在一个实施例中,所述条件确定模块402具体还用于:
[0111] 当确定所述计时时间小于或者等于所述预设时间时,确定所述目标看门狗对应的唤醒条件为数据存储;当确定所述计时时间大于所述预设时间时,确定所述目标看门狗对应的唤醒条件为进程异常。
[0112] 进一步地,在一个实施例中,所述信息获取模块403具体还用于:
[0113] 当确定所述唤醒条件为数据存储时,重置所述计时时间,并将所述进程所生成的数据存储在与目标进程相关联的区块链中;当检测到数据存储完成时,控制所述目标看门狗进入休眠状态。
[0114] 进一步地,在一个实施例中,所述配置确定模块404具体还用于:
[0115] 对所述数据信息进行分析处理,确定所述目标进程对应的异常数据;根据所述异常数据确定所述目标进程的异常点;根据所述异常点得到所述目标看门狗当前对应的服务配置。
[0116] 进一步地,在一个实施例中,所述配置响应模块405具体还用于:
[0117] 当所述异常点为服务异常时,确定所述目标看门狗对应的服务配置为控制目标进程重启或恢复;当所述异常点为线程异常时,确定所述目标看门狗对应的服务配置为结束线程运行。
[0118] 需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0119] 上述的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图4所示的计算机设备上运行。
[0120] 请参阅图5,图5为本申请一个实施例中计算机设备的结构示意性框图。该计算机设备可以是服务器。
[0121] 参阅图5,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
[0122] 非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种基于JVM的看门狗的控制方法。
[0123] 处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
[0124] 内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种基于JVM的看门狗的控制方法。
[0125] 该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0126] 应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0127] 其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
[0128] 唤醒与目标进程关联的目标看门狗;
[0129] 确定唤醒所述目标看门狗所对应的唤醒条件;
[0130] 当确定所述唤醒条件为进程异常时,获取所述目标看门狗当前所记录的数据信息;
[0131] 根据所述数据信息确定所述目标看门狗当前对应的服务配置;
[0132] 控制所述目标看门狗响应所述服务配置。
[0133] 在一个实施例中,所述处理器在实现所述唤醒与目标进程关联的目标看门狗之前,还用于实现:
[0134] 当检测到目标进程启动时,调用一线程以运行所述目标进程关联的目标看门狗;以及,设定所述一线程的生命周期等于所述目标进程的生命周期。
[0135] 在一个实施例中,所述处理器在实现所述确定唤醒所述目标看门狗所对应的唤醒条件时,还用于实现:
[0136] 获取所述目标看门狗监控所述目标进程时所记录的计时时间;读取预先所设置的预设时间;根据所述计时时间以及所述预设时间确定唤醒所述目标看门狗所对应的唤醒条件。
[0137] 在一个实施例中,所述处理器在实现所述根据所述计时时间以及预设时间唤醒所述目标看门狗确定唤醒所述目标看门狗所对应的唤醒条件时,还用于实现:
[0138] 当确定所述计时时间小于或者等于所述预设时间时,确定所述目标看门狗对应的唤醒条件为数据存储;当确定所述计时时间大于所述预设时间时,确定所述目标看门狗对应的唤醒条件为进程异常。
[0139] 在一个实施例中,所述处理器在实现所述确定唤醒所述目标看门狗所对应的唤醒条件之后,还用于实现:
[0140] 当确定所述唤醒条件为数据存储时,重置所述计时时间,并将所述进程所生成的数据存储在与目标进程相关联的区块链的节点中;当检测到数据存储完成时,控制所述目标看门狗进入休眠状态。
[0141] 在一个实施例中,所述处理器在实现所述根据所述数据信息确定所述目标看门狗当前对应的服务配置时,还用于实现:
[0142] 对所述数据信息进行分析处理,确定所述目标进程对应的异常数据;根据所述异常数据确定所述目标进程的异常点;根据所述异常点得到所述目标看门狗当前对应的服务配置。
[0143] 在一个实施例中,所述处理器在实现所述根据所述异常点得到所述目标看门狗当前对应的服务配置时,还用于实现:
[0144] 当所述异常点为服务异常时,确定所述目标看门狗对应的服务配置为控制目标进程重启或恢复;当所述异常点为线程异常时,确定所述目标看门狗对应的服务配置为结束线程运行。
[0145] 本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项基于JVM的看门狗的控制方法。
[0146] 其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
[0147] 进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
[0148] 另外,本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
[0149] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。