CN112181702A - 一种线程监测方法及装置 - Google Patents
一种线程监测方法及装置 Download PDFInfo
- Publication number
- CN112181702A CN112181702A CN202011013797.0A CN202011013797A CN112181702A CN 112181702 A CN112181702 A CN 112181702A CN 202011013797 A CN202011013797 A CN 202011013797A CN 112181702 A CN112181702 A CN 112181702A
- Authority
- CN
- China
- Prior art keywords
- thread
- key
- state information
- monitoring
- target
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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 the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0715—Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/079—Root cause analysis, i.e. error or fault diagnosis
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种线程监测方法及装置,其中,该方法包括:启动监测线程,监测线程用于对一个或多个关键线程进行监测;通过监测线程获取一个或多个关键线程中,每个关键线程的关键状态信息集合,关键状态信息集合包括:每个关键线程中各个关键过程的接口调用次数、进标志、出标志和接口号中的任意一个或者多个;根据每个关键线程的关键状态信息集合和对应的备份状态信息集合,通过监测线程对一个或多个关键线程进行监测,得到监测结果,每个关键线程的备份状态信息集合用于记录对应的关键状态信息集合的历史内容。通过该方法,有利于快速定位导致关键线程运行异常的问题。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种线程监测方法及装置。
背景技术
关键线程指的是负责系统中重要工作的线程,每个关键线程中又可以包括多个过程,其中过程指的是接口或者流程调用。在软件项目的开发过程中,需要对关键线程进行轨迹跟踪,即监测关键线程,这样可以在关键线程运行异常的情况下,定位到异常的关键线程,以便于确定发送异常的原因。
目前,对系统中关键线程的监测,通常是通过添加打印信息的方式来执行的,也就是在一个关键线程中对其中的过程进行打印信息的添加。由于有些关键线程负责比较繁忙的工作,需要调用各类接口,这样若对每个过程都添加打印信息,则会使得打印信息的信息量过大,甚至影响系统运行。因此,关键线程中的打印信息较少,可能仅对其中较为重要的过程添加打印信息。而这样当关键线程出现异常时,有时候基于较少的打印信息是无法有效快速定位到异常的过程的。
发明内容
本申请公开了一种线程监测方法及装置,有利于快速定位导致关键线程运行异常的问题。
第一方面,本申请实施例提供了一种线程监测方法,该方法包括:
启动监测线程,监测线程用于对一个或多个关键线程进行监测;
通过监测线程获取一个或多个关键线程中,每个关键线程的关键状态信息集合,关键状态信息集合包括:每个关键线程中各个关键过程的接口调用次数、进标志、出标志和接口号中的任意一个或者多个;
根据每个关键线程的关键状态信息集合和对应的备份状态信息集合,通过监测线程对一个或多个关键线程进行监测,得到监测结果,每个关键线程的备份状态信息集合用于记录对应的关键状态信息集合的历史内容。
在一实施方式中,通过监测线程获取一个或多个关键线程中,每个关键线程的关键状态信息集合之前,若运行目标关键线程中的目标关键过程,则对目标关键过程的接口调用次数进行加1运算,目标关键线程为一个或多个关键线程中的任意一个关键线程,目标关键过程为目标关键线程中的任意一个关键过程;若运行目标关键过程,则记录目标关键过程所调用接口的接口号;若运行目标关键过程,则记录运行目标关键过程所生成的进标志;若结束目标关键过程,则记录结束目标关键过程所生成的出标志。
在一实施方式中,通过监测线程获取目标关键线程的目标关键状态信息集合和目标备份状态信息集合;通过监测线程根据目标关键状态信息集合和目标备份状态信息集合判断目标关键线程是否运行异常;通过监测线程将目标关键线程是否运行异常作为监测结果。
在一实施方式中,通过监测线程,判断目标关键状态信息集合中目标关键过程的接口调用次数是否大于目标备份状态信息集合中目标关键过程的接口调用次数;若否,则确定目标关键线程运行异常;通过监测线程,判断目标关键状态信息集合中是否包括目标关键过程的进标志和/或出标志;若否,则确定目标关键线程运行异常。
在一实施方式中,若根据目标关键状态信息集合和目标备份状态信息集合判断目标关键线程运行异常,则通过监测线程输出告警信息,和/或对目标关键线程进行恢复处理;告警信息用于指示目标关键线程运行异常;通过监测线程根据目标关键状态信息集合对目标备份状态信息集合进行更新。
在一实施方式中,若根据目标关键状态信息集合和目标备份状态信息集合判断目标关键线程未运行异常,则通过监测线程,根据目标关键状态信息集合对目标备份状态信息集合进行更新。
在一实施方式中,根据每个关键线程的关键状态信息集合和每个关键线程的备份状态信息集合,通过监测线程对一个或多个关键线程进行监测之后,将监测线程切换至休眠状态;若检测到指示信息,则将监测线程切换至工作状态,指示信息用于指示将监测线程切换至工作状态。
第二方面,本申请实施例提供了一种线程检测装置,该装置包括:
处理单元,用于启动监测线程,监测线程用于对一个或多个关键线程进行监测;
获取单元,用于通过监测线程获取一个或多个关键线程中,每个关键线程的关键状态信息集合,关键状态信息集合包括:每个关键线程中各个关键过程的接口调用次数、进标志、出标志和接口号中的任意一个或者多个;
处理单元还用于根据每个关键线程的关键状态信息集合和对应的备份状态信息集合,通过监测线程对一个或多个关键线程进行监测,得到监测结果,每个关键线程的备份状态信息集合用于记录每个关键线程的关键状态信息集合的历史内容。
第三方面,本申请实施例提供了一种线程检测装置,包括处理器、存储器和用户接口,处理器、存储器和用户接口相互连接,其中,存储器用于存储计算机程序,计算机程序包括程序指令,处理器被配置用于调用程序指令,执行如第一方面描述的线程检测方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质存储有一条或多条指令,一条或多条指令适于由处理器加载并执行如第一方面描述的线程检测方法。
本申请实施例中,终端设备启动监测线程,监测线程用于对一个或多个关键线程进行监测;通过监测线程获取一个或多个关键线程的关键状态信息集合,关键状态信息集合包括:各个关键过程的接口调用次数、进标志、出标志和接口号中的任意一个或者多个;根据关键状态信息集合和备份状态信息集合,通过监测线程对一个或多个关键线程进行监测,得到监测结果,备份状态信息集合用于记录对应的历史内容。通过该方法,有利于快速定位导致关键线程运行异常的问题。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种线程监测的系统架构图;
图2为本申请实施例提供的一种关键线程运行的流程示意图;
图3为本申请实施例提供的一种线程监测方法的流程示意图;
图4为本申请实施例提供的另一种关键线程运行的流程示意图;
图5为本申请实施例提供的一种线程监测的流程示意图;
图6为本申请实施例提供的一种线程监测装置的单元示意图;
图7为本申请实施例提供的一种线程监测装置的实体结构简化示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
为了能够更好地理解本申请实施例,下面对本申请实施例涉及的专业术语进行介绍:
线程(Thread):是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
关键线程:负责系统中重要的工作的线程。如数据处理线程,包含数据包接收,数据包解析,数据分发各类接口处理等工作。一个关键线程中可以包括一个或多个关键过程,且关键线程中可以配置循环运行,即一个或多个关键过程可以多次运行,具体由终端设备自行配置。
关键过程:指比较重要的接口或者流程调用。
关键状态:指关键过程的进出状态及运行次数统计。在本申请实施例中,关键状态可以包括某关建过程的接口调用次数、进标志、出标志和所调用接口的接口号。并且,可以有关键过程中包括线程循环次数,该线程循环次数可以用于辅助判断关键线程是否运行异常。
为了能够更好地理解本申请实施例,下面对本申请实施例可应用的系统架构进行说明。
请参见图1,图1为本申请实施例提供的一种线程监测的系统架构图。如图1中系统架构图所示,该系统架构图包括一个或多个关键线程和一个监测线程。其中,一个或多个关键线程中可以包括关键线程1、关键线程2到关键线程M。每个关键线程中又可以包括一个或多个关键过程,如图2所示,该关键线程中可以包括关键过程1~关键过程N。其中M可以是软件开发项目中必要的关键线程的个数,可以由研发人员进行设置;N也是一个关键线程中必要的关键过程的个数,也可以由研发人员进行设置。如图2所示的关键过程中,关键过程1~关键过程N可以循环运行,即当该关键线程运行完关键过程N后,可以判断是否可以退出该关键线程,若否,则会返回关键过程1重新顺序执行关键过程1~关键过程N。而是否循环运行也可以是研发人员所设置的,本申请实施例不作限定。
监测线程是独立于一个或多个关建线程的,是系统所另外启动的一条线程,该监测线程可以对关键线程1~关键线程M进行逐一地监测,以判断关键线程1~关键线程M中是否存在运行异常的关键线程。其中,该监测线程的运行可以是与关键线程异步的,即不与关键线程同时运行。并且监测线程的在何时运行、运行的频次等可以是系统根据不同的要求综合确定出的。例如,系统设置监测线程5秒钟运行一次,那么监测线程就会每隔5秒对关键线程1~关键线程M进行逐一地监测,以此类推。
为了能够快速定位导致关键线程运行异常的问题,本申请实施例提供了一种线程监测方法及装置,下面进一步对本申请实施例提供的线程监测方法及装置进行详细介绍。
请参见图3,图3为本申请实施例提供了一种线程监测方法的流程示意图。其中,该部分方法的执行主体为终端设备中的系统,当终端设备的系统执行该流程示意图中线程监测方法时,可以包括如下步骤:
310、启动监测线程,监测线程用于对一个或多个关键线程进行监测。
系统可以启动一条独立于一个或多个关键线程的监测线程,用来监测各个关键线程的状态。
320、通过监测线程获取一个或多个关键线程中,每个关键线程的关键状态信息集合,关键状态信息集合包括:每个关键线程中各个关键过程的接口调用次数、进标志、出标志和接口号中的任意一个或者多个。
其中,一个关键线程的关键状态信息集合中包括了其中一个或多个关键过程的关键状态信息。在通过监测线程获取所述一个或多个关键线程的关键状态信息集合之前,关键线程需要对一个或多个关键线程中的每个关键线程都进行关键状态的记录,这样才能得到每个关键线程的关键状态信息集合。每个关键线程的关键状态信息集合包括的是该关键线程中每个关键过程的关键状态信息,每个关键过程的关键状态信息包括该关键过程的接口调用次数、进标志、接口号和出标志中的任意一个或多个。
需要说明的是,获取一个或多个关键线程中,每个关键线程的关键状态信息集合是通过监测线程来实现的。而记录每个关键线程的关键状态信息集合是由每个关键线程自身完成的,并不需要通过监测线程来完成。可以理解的是,关键线程可以记录得到关键状态信息集合,监测线程可以获取关键线程记录得到的关键状态集合。
如图4所示,对于一个目标关键线程,系统启动该目标关键线程后,会对其中的目标关键过程进行状态的记录,得到目标关键状态信息集合。其中,该目标关键线程是上述的一个或多个关键线程中的任意一个关键线程,目标关键过程为所述目标关键线程中的任意一个关键过程。本申请实施例中,该目标关键线程可以编号为x,其对应的目标关键状态信息集合则为Threadrecord[x]。
当系统运行关键过程1时,即进入该关键过程1的时候,就会将该关键过程1对应的接口调用次数进行加1的运算,和/或记录此时系统生成的进入该关键过程1的进标志,和/或记录关键过程1所调用接口的接口号。系统结束运行关键过程1时,即退出该关键过程1的时候,再记录生成的出标志。这样就可以得到关键过程1的关键状态信息。其中,进标志可以指示系统运行过关键过程1,出标志可以指示系统成功运行过关键过程1,每个关键过程都可以对应不同的进标志和出标志。另外,一个关键过程的关键状态信息包括接口调用次数、进标志、出标志和接口号中的任意一个或者多个。
当系统运行关键过程N时,就会将关键过程N对应的接口调用次数进行加1的运算,和/或记录关键过程N的进标志,和/或记录关键过程N所调用接口的接口号,和/或记录关键过程N的出标志,得到关键过程N的关键状态信息,以此类推。
在一种可能的实现方式中,如图4所示的目标关键线程,由于该线程可以循环地运行关键过程1~关键过程N,那么系统可以在记录关键过程1的关键状态信息时加入该目标关键线程的循环次数记录。例如,当循环次数为4时,则代表其中的关键过程1~关键过程N被顺序运行了4次。当然,在实际应用中,也可以不设置关键过程1的关键状态信息中包括循环次数,而是设置在该目标关键线程中的任意一个关键过程的关键状态信息中,本申请实施例不作限定。
330、根据每个关键线程的关键状态信息集合和对应的备份状态信息集合,通过监测线程对一个或多个关键线程进行监测,得到监测结果,每个关键线程的备份状态信息集合用于记录对应的关键状态信息集合的历史内容。
其中,备份状态信息集合中记录的是对应的关键状态信息集合的上一次记录的内容。例如,对于如图4所示的可循环运行的目标关键线程,当该目标关键线程第3次运行时,则可以记录第3次运行时,其中各个关键线程的关键状态信息,得到第3次运行的目标关键状态信息集合。而在得到第3次运行得到的目标关键状态信息集合之前,即还是第2次运行得到的目标关键状态信息集合的时候,目标备份状态信息集合所记录的则是第1次运行得到的目标关键状态信息集合。在得到第3次运行得到的目标关键状态信息集合之后,目标备份状态信息集合所记录的则是第2次运行得到的目标关键状态信息集合,以此类推。
需要说明的是,目标关键状态信息集合中仅记录的是当次目标关键线程运行所记录的信息,上一次记录的信息会备份到目标备份状态信息集合中。并且目标备份状态信息集合中保存的也只是上一次目标关键线程运行所记录的信息,不保存更早记录的信息。
在通过监测线程获取到每个关键线程的关键状态信息集合和对应的备份状态信息集合之后,将这两个集合进行对比,来确定对应的关键线程是否运行异常,将关键线程是否运行异常作为监测结果。具体地,若通过监测线程,判断目标关键线程的目标关键状态信息集合中,目标关键过程的接口调用次数不大于目标备份状态信息集合中该目标关键过程的接口调用次数,则确定该目标关键线程运行异常;和/或,若通过监测线程,判断目标关键状态信息集合中,目标关键过程的关键状态信息不包括进标志和/或出标志,则确定该目标关键线程运行异常;和/或,若通过监测线程,判断目标关键状态信息集合中,关键状态信息中包括循环次数的关键过程所记录的循环次数,较目标备份状态信息集合中该关键词有变化,而该关键过程外的其他关键过程的关键状态信息均无变化,则确定该目标关键线程运行异常。当然,在实际应用中,判断目标关键线程是否运行异常,可以通过监测线程灵活地运用循环次数、接口调用次数、进标志、出标志和接口号中的一个或多个来实现判断,判断的方法可以包括但不局限于上述的三种方法,本申请实施例不作限定。
若通过监测线程,系统根据目标关键状态信息集合和目标备份状态信息集合判断对应的目标关键线程运行异常,那么可以输出告警信息,该告警信息用于指示该目标关键线程运行异常,具体还可以指示是该目标关键线程中哪个关键过程除了问题。在输出告警信息之后,系统还可以保存日志,该日志就可以记录发生异常的关键线程、该关键线程中发生异常的关键过程、发生异常的关键过程的关键状态信息的一个或多个信息。另外,系统还可以对目标关键线程进行恢复处理,这样可以消除异常。通过监测线程,系统判断目标关键线程运行异常之后,可以将目标备份状态信息集合进行更新,即用当前的目标关键状态信息集合中的信息对目标备份状态信息集合进行覆盖。这样,就可以在下一次监测时,通过更新的目标备份状态信息集合来判断目标关键线程是否运行异常。
若通过监测线程,系统根据目标关键状态信息集合和目标备份状态信息集合判断对应的目标关键线程未运行异常,则直接将目标备份状态信息集合进行更新。
需要说明的是,无论目标关键线程是否运行异常,都可以直接用当前的目标关键状态信息集合中的信息对目标备份状态信息集合进行覆盖。这是因为,即使目标关键线程运行异常,在下一次运行目标关键线程的时候,也是基于运行异常的目标备份状态信息集合所记录的数据进行相应的改变,监测线程所判断目标关键线程运行正常正是基于数据的改变,而不是基于数据不变。
例如,对于如图4的目标关键线程,若目标关键状态信息集合中,关键过程2的接口调用次数为3,而在备份状态信息集合中,关键过程2的接口调用次数为2,那么确定该关键过程2运行正常;而若备份状态信息集合中,关键过程2的接口调用次数也为3,就代表关键过程2未被运行,则确定目标关键线程运行异常。又例如,若目标关键状态信息集合中,关键过程2的关键状态信息不包括进标志,而不包括出标志,那么就代表关键过程2一直在运行,没有退出来,那么就可以直接打印相关的告警信息,通过该告警信息可以直接定位该关键过程2出了问题。又例如,若目标关键状态信息集合中,关键过程1的关键状态信息的循环次数,相比备份状态信息集合中的关键过程1的循环次数有变化,而关键过程2~关键过程N的接口调用次数均无变化,那么可能是该目标关键线程的判断条件出了问题,可以将问题定位到该目标关键线程的判断条件上。不论通过监测线程判断目标关键线程是否存在异常,系统都会对目标备份状态信息集合进行更新。
在一种可能的实现方式中,当通过监测线程对所有的关键线程均监测完成后,系统可以将监测线程切换至休眠状态,该休眠状态所持续的时间可以作为监测线程暂停运行的时间。休眠状态的持续时间可以通过定时器来控制,当该定时器运行达到预设时长,则结束休眠状态。其中,该预设时长可以由系统设置。
在一种可能的实现方式中,系统在将监测线程切换至休眠状态后,若期望再次对一个或多个关键线程进行监测,将监测线程从休眠状态切换至工作状态,重新启动监测线程。其中,将监测线程从休眠状态切换至工作状态可以通过指示信息来触发,该指示信息可以是系统在判断是否还有监测行为时生成的。若后续还有需要监测行为,则生成该指示信息;若后续不会再有监测行为,则系统可以退出监测线程。也就是说,当控制休眠状态持续时间的定时器达到预设时长后,系统再判断是否需要再次进行线程监测,若是,则重新对一个或多个关键线程进行监测,这样可以使监测线程实现循环监测的功能。
通过本申请实施例,系统可以启动一个独立的监测线程,通过监测线程来对一个或多个关键线程进行监测。系统可以根据每个关键线程的关键状态信息集合和对应的备份状态信息集合来确定每个关键线程是否出现运行异常的情况,具体可以对每一个关键过程的接口调用次数、进标志、出标志和接口号中的一个或多个进行判断,最终确定该关键过程是否存在异常,从而确定该关键过程对应的关键线程是否异常。这样就可以快速地定位到运行异常的关键线程和关键过程,便于找出运行异常的原因。
请参见图5,图5为本申请实施例提供的一种线程监测的流程示意图。其中,该图5所示的流程示意图可以包括如下的步骤:
510、启动监测线程。
520、令目标关键线程编号x=1。
其中,该x为一个或多个关键线程中,目标关键线程的编号,这样系统就可以通过监测线程从第一个关键线程开始,顺序地对一个或多个监测线程进行监测。
530、将目标备份状态信息集合(Backuprecord[x])和目标关键状态信息集合(Threadrecord[x])进行比较。
540、判断目标关键线程是否运行异常。
目标关键线程是否运行异常的判断方法已在上文中详细阐述,此处不做赘述。若系统通过监测线程判断目标关键线程运行正常,则执行步骤560,否则执行步骤550。
550、对目标关键线程进行输出告警信息,保存日志,或进行恢复处理。
560、对目标备份状态信息集合(Backuprecord[x])进行更新。
对目标备份状态信息集合(Backuprecord[x])进行更新之后,通过监测线程对x进行加1的运算。
570、判断目标关键线程编号x是否大于关键线程总个数M。
若x小于或等于M,则系统会返回步骤530,对当前x所指示的目标关键线程进行监测。若x大于M,则代表系统已通过监测线程对所有的关键线程完成了监测,可以执行步骤580。
580、将监测线程切换至休眠状态。
590、判断是否退出检测线程。
系统判断是否还需要进行对M个关键线程进行监测,若还需要,则会返回步骤520,从第一个关键线程开始重新对M个关键线程进行监测。若不需要继续监测,则退出该监测线程。
通过本申请实施例,系统通过监测线程,可以对一个或多个关键线程进行逐一监测,可以在对所有的关键线程监测完一遍后进入休眠状态,这样可以节省功耗。通过该监测线程,可以使得系统可以快速定位到出运行异常的关键过程,以便于找出导致运行异常的原因。
请参见图6,图6为本申请实施例提供的一种线程监测装置的单元示意图。图6所示的线程监测装置可以用于执行上述图3和图5所描述的方法实施例中的部分或全部功能。该装置可以是终端设备,也可以是终端设备中的装置,或者是能够和终端设备匹配使用的装置。该装置的逻辑结构可包括:处理单元610、获取单元620。其中:
处理单元610,用于启动监测线程,监测线程用于对一个或多个关键线程进行监测;
获取单元620,用于通过监测线程获取一个或多个关键线程中,每个关键线程的关键状态信息集合,关键状态信息集合包括:每个关键线程中各个关键过程的接口调用次数、进标志、出标志和接口号中的任意一个或者多个;
上述处理单元610还用于根据每个关键线程的关键状态信息集合和对应的备份状态信息集合,通过监测线程对一个或多个关键线程进行监测,得到监测结果,每个关键线程的备份状态信息集合用于记录每个关键线程的关键状态信息集合的历史内容。
在一种可能的实现方式中,通过监测线程获取一个或多个关键线程中,每个关键线程的关键状态信息集合之前,上述处理单元610还用于若运行目标关键线程中的目标关键过程,则对目标关键过程的接口调用次数进行加1运算,目标关键线程为一个或多个关键线程中的任意一个关键线程,目标关键过程为目标关键线程中的任意一个关键过程;若运行目标关键过程,则记录目标关键过程所调用接口的接口号;若运行目标关键过程,则记录运行目标关键过程所生成的进标志;若结束目标关键过程,则记录结束目标关键过程所生成的出标志。
在一种可能的实现方式中,上述处理单元610还用于通过监测线程获取目标关键线程的目标关键状态信息集合和目标备份状态信息集合;通过监测线程根据目标关键状态信息集合和目标备份状态信息集合判断目标关键线程是否运行异常;通过监测线程将目标关键线程是否运行异常作为监测结果。
在一种可能的实现方式中,上述处理单元610还用于通过监测线程,判断目标关键状态信息集合中目标关键过程的接口调用次数是否大于目标备份状态信息集合中目标关键过程的接口调用次数;若否,则确定目标关键线程运行异常;通过监测线程,判断目标关键状态信息集合中是否包括目标关键过程的进标志和/或出标志;若否,则确定目标关键线程运行异常。
在一种可能的实现方式中,上述处理单元610还用于若根据目标关键状态信息集合和目标备份状态信息集合判断目标关键线程运行异常,则通过监测线程输出告警信息,和/或对目标关键线程进行恢复处理;告警信息用于指示目标关键线程运行异常;通过监测线程根据目标关键状态信息集合对目标备份状态信息集合进行更新。
在一种可能的实现方式中,上述处理单元610还用于若根据目标关键状态信息集合和目标备份状态信息集合判断目标关键线程未运行异常,则通过监测线程,根据目标关键状态信息集合对目标备份状态信息集合进行更新。
在一种可能的实现方式中,上述处理单元610还用于根据每个关键线程的关键状态信息集合和每个关键线程的备份状态信息集合,通过监测线程对一个或多个关键线程进行监测之后,将监测线程切换至休眠状态;若检测到指示信息,则将监测线程切换至工作状态,指示信息用于指示将监测线程切换至工作状态。
请参见图7,图7为本申请实施例提供的一种表情处理终端的实体结构简化示意图,该装置包括处理器710、存储器720、通信接口730以及用户接口740,该处理器710、存储器720、通信接口730以及用户接口740通过一条或多条通信总线连接。
处理器710被配置为支持表情处理终端执行图3中方法相应的功能。该处理器710可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP),硬件芯片或者其任意组合。
存储器720用于存储程序代码等。存储器720可以包括易失性存储器(volatilememory),例如随机存取存储器(random access memory,RAM);存储器720也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器720还可以包括上述种类的存储器的组合。
通信接口730用于收发数据、信息或消息等,也可以描述为收发器、收发电路等。通信接口730可以包括标准的有线接口、无线接口(如WI-FI、移动通信接口等),受处理器710的控制可以用于收发数据。
用户接口740是实现用户与终端进行交互和信息交换的媒介,其具体体现可以包括用于输出的显示屏(Display)以及用于输入的键盘(Keyboard)、触摸屏等等,需要说明的是,此处的键盘既可以为实体键盘,也可以为触屏虚拟键盘,还可以为实体与触屏虚拟相结合的键盘。
在本申请实施例中,当该线程监测装置应用于终端设备时,该处理器710可以调用存储器720中存储的程序代码以执行以下操作:
处理器710调用存储器720中存储的程序代码启动监测线程,监测线程用于对一个或多个关键线程进行监测;
处理器710调用存储器720中存储的程序代码通过监测线程获取一个或多个关键线程中,每个关键线程的关键状态信息集合,关键状态信息集合包括:每个关键线程中各个关键过程的接口调用次数、进标志、出标志和接口号中的任意一个或者多个;
处理器710调用存储器720中存储的程序代码根据每个关键线程的关键状态信息集合和对应的备份状态信息集合,通过监测线程对一个或多个关键线程进行监测,得到监测结果,每个关键线程的备份状态信息集合用于记录每个关键线程的关键状态信息集合的历史内容。
在一种可能的实现方式中,通过监测线程获取一个或多个关键线程中,每个关键线程的关键状态信息集合之前,处理器710调用存储器720中存储的程序代码若运行目标关键线程中的目标关键过程,则对目标关键过程的接口调用次数进行加1运算,目标关键线程为一个或多个关键线程中的任意一个关键线程,目标关键过程为目标关键线程中的任意一个关键过程;若运行目标关键过程,则记录目标关键过程所调用接口的接口号;若运行目标关键过程,则记录运行目标关键过程所生成的进标志;若结束目标关键过程,则记录结束目标关键过程所生成的出标志。
在一种可能的实现方式中,处理器710调用存储器720中存储的程序代码通过监测线程获取目标关键线程的目标关键状态信息集合和目标备份状态信息集合;通过监测线程根据目标关键状态信息集合和目标备份状态信息集合判断目标关键线程是否运行异常;通过监测线程将目标关键线程是否运行异常作为监测结果。
在一种可能的实现方式中,处理器710调用存储器720中存储的程序代码通过监测线程,判断目标关键状态信息集合中目标关键过程的接口调用次数是否大于目标备份状态信息集合中目标关键过程的接口调用次数;若否,则确定目标关键线程运行异常;通过监测线程,判断目标关键状态信息集合中是否包括目标关键过程的进标志和/或出标志;若否,则确定目标关键线程运行异常。
在一种可能的实现方式中,处理器710调用存储器720中存储的程序代码若根据目标关键状态信息集合和目标备份状态信息集合判断目标关键线程运行异常,则通过监测线程输出告警信息,和/或对目标关键线程进行恢复处理;告警信息用于指示目标关键线程运行异常;通过监测线程根据目标关键状态信息集合对目标备份状态信息集合进行更新。
在一种可能的实现方式中,处理器710调用存储器720中存储的程序代码若根据目标关键状态信息集合和目标备份状态信息集合判断目标关键线程未运行异常,则通过监测线程,根据目标关键状态信息集合对目标备份状态信息集合进行更新。
在一种可能的实现方式中,处理器710调用存储器720中存储的程序代码根据每个关键线程的关键状态信息集合和每个关键线程的备份状态信息集合,通过监测线程对一个或多个关键线程进行监测之后,将监测线程切换至休眠状态;若检测到指示信息,则将监测线程切换至工作状态,指示信息用于指示将监测线程切换至工作状态。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例处理设备中的模块可以根据实际需要进行合并、划分和删减。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态存储盘Solid State Disk(SSD))等。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种线程监测方法,其特征在于,包括:
启动监测线程,所述监测线程用于对一个或多个关键线程进行监测;
通过所述监测线程获取所述一个或多个关键线程中,每个关键线程的关键状态信息集合,所述关键状态信息集合包括:所述每个关键线程中各个关键过程的接口调用次数、进标志、出标志和接口号中的任意一个或者多个;
根据所述每个关键线程的关键状态信息集合和对应的备份状态信息集合,通过所述监测线程对所述一个或多个关键线程进行监测,得到监测结果,所述每个关键线程的备份状态信息集合用于记录对应的关键状态信息集合的历史内容。
2.根据权利要求1所述的方法,其特征在于,通过所述监测线程获取所述一个或多个关键线程中,每个关键线程的关键状态信息集合之前,所述方法还包括以下步骤中的任意一个或者多个:
若运行目标关键线程中的目标关键过程,则对所述目标关键过程的接口调用次数进行加1运算,所述目标关键线程为所述一个或多个关键线程中的任意一个关键线程,所述目标关键过程为所述目标关键线程中的任意一个关键过程;
若运行所述目标关键过程,则记录所述目标关键过程所调用接口的接口号;
若运行所述目标关键过程,则记录运行所述目标关键过程所生成的进标志;
若结束所述目标关键过程,则记录结束所述目标关键过程所生成的出标志;
得到所述目标关键线程的目标关键状态信息集合。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述每个关键线程的关键状态信息集合和每个关键线程的备份状态信息集合,通过所述监测线程对所述一个或多个关键线程进行监测,得到监测结果,包括:
通过所述监测线程获取所述目标关键线程的目标关键状态信息集合和目标备份状态信息集合;
通过所述监测线程根据所述目标关键状态信息集合和所述目标备份状态信息集合判断所述目标关键线程是否运行异常;
通过所述监测线程将所述目标关键线程是否运行异常作为所述监测结果。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标关键状态信息集合和所述目标备份状态信息集合判断所述目标关键线程是否存在异常,包括以下步骤中的任意一个或者多个:
通过所述监测线程,判断所述目标关键状态信息集合中所述目标关键过程的接口调用次数是否大于所述目标备份状态信息集合中所述目标关键过程的接口调用次数;若否,则确定目标关键线程运行异常;
通过所述监测线程,判断所述目标关键状态信息集合中是否包括所述目标关键过程的进标志和/或出标志;若否,则确定目标关键线程运行异常。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若通过所述监测线程根据所述目标关键状态信息集合和所述目标备份状态信息集合判断目标关键线程运行异常,则输出告警信息,和/或对所述目标关键线程进行恢复处理;所述告警信息用于指示所述目标关键线程运行异常;
通过所述监测线程根据所述目标关键状态信息集合对所述目标备份状态信息集合进行更新。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若根据所述目标关键状态信息集合和所述目标备份状态信息集合判断目标关键线程未运行异常,则通过所述监测线程,根据所述目标关键状态信息集合对所述目标备份状态信息集合进行更新。
7.根据权利要求1所述的方法,其特征在于,所述根据所述每个关键线程的关键状态信息集合和每个关键线程的备份状态信息集合,通过所述监测线程对所述一个或多个关键线程进行监测之后,所述方法还包括:
将所述监测线程切换至休眠状态;
若检测到指示信息,则将所述监测线程切换至工作状态,所述指示信息用于指示将所述监测线程切换至工作状态。
8.一种线程检测装置,其特征在于,包括:
处理单元,用于启动监测线程,所述监测线程用于对一个或多个关键线程进行监测;
获取单元,用于通过所述监测线程获取所述一个或多个关键线程中,每个关键线程的关键状态信息集合,所述关键状态信息集合包括:所述每个关键线程中各个关键过程的接口调用次数、进标志、出标志和接口号中的任意一个或者多个;
所述处理单元还用于根据所述每个关键线程的关键状态信息集合和对应的备份状态信息集合,通过所述监测线程对所述一个或多个关键线程进行监测,得到监测结果,所述每个关键线程的备份状态信息集合用于记录对应的关键状态信息集合的历史内容。
9.一种线程检测装置,其特征在于,包括处理器、存储器和用户接口,所述处理器、所述存储器和所述用户接口相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1至7中任一项所述的线程检测方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1至7中任一项所述的线程检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011013797.0A CN112181702B (zh) | 2020-09-23 | 2020-09-23 | 一种线程监测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011013797.0A CN112181702B (zh) | 2020-09-23 | 2020-09-23 | 一种线程监测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112181702A true CN112181702A (zh) | 2021-01-05 |
CN112181702B CN112181702B (zh) | 2023-06-06 |
Family
ID=73955418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011013797.0A Active CN112181702B (zh) | 2020-09-23 | 2020-09-23 | 一种线程监测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181702B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342505A (zh) * | 2021-07-02 | 2021-09-03 | Oppo广东移动通信有限公司 | 线程识别方法、线程识别装置、存储介质与电子设备 |
CN114385387A (zh) * | 2022-03-23 | 2022-04-22 | 恒生电子股份有限公司 | 访问信息生成方法、装置和计算机设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1605987A (zh) * | 2004-11-17 | 2005-04-13 | 中兴通讯股份有限公司 | 一种多线程系统中实现实时监控各线程状态的方法 |
CN101374081A (zh) * | 2007-08-24 | 2009-02-25 | 上海合胜计算机科技有限公司 | Domino服务器的简便自动监控方法 |
CN101996106A (zh) * | 2010-12-17 | 2011-03-30 | 南京中兴力维软件有限公司 | 一种对软件运行状态进行监控的方法 |
CN107765922A (zh) * | 2017-10-31 | 2018-03-06 | 努比亚技术有限公司 | 卡屏检测与解决方法、移动终端及计算机可读存储介质 |
CN107908491A (zh) * | 2017-10-31 | 2018-04-13 | 努比亚技术有限公司 | 卡屏检测与解决方法、移动终端及计算机可读存储介质 |
CN108089937A (zh) * | 2017-12-28 | 2018-05-29 | 努比亚技术有限公司 | 基于直接内存分配的重启定位方法、移动终端及存储介质 |
CN111625422A (zh) * | 2020-05-27 | 2020-09-04 | 北京字节跳动网络技术有限公司 | 线程监控方法、装置、电子设备及计算机可读存储介质 |
-
2020
- 2020-09-23 CN CN202011013797.0A patent/CN112181702B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1605987A (zh) * | 2004-11-17 | 2005-04-13 | 中兴通讯股份有限公司 | 一种多线程系统中实现实时监控各线程状态的方法 |
CN101374081A (zh) * | 2007-08-24 | 2009-02-25 | 上海合胜计算机科技有限公司 | Domino服务器的简便自动监控方法 |
CN101996106A (zh) * | 2010-12-17 | 2011-03-30 | 南京中兴力维软件有限公司 | 一种对软件运行状态进行监控的方法 |
CN107765922A (zh) * | 2017-10-31 | 2018-03-06 | 努比亚技术有限公司 | 卡屏检测与解决方法、移动终端及计算机可读存储介质 |
CN107908491A (zh) * | 2017-10-31 | 2018-04-13 | 努比亚技术有限公司 | 卡屏检测与解决方法、移动终端及计算机可读存储介质 |
CN108089937A (zh) * | 2017-12-28 | 2018-05-29 | 努比亚技术有限公司 | 基于直接内存分配的重启定位方法、移动终端及存储介质 |
CN111625422A (zh) * | 2020-05-27 | 2020-09-04 | 北京字节跳动网络技术有限公司 | 线程监控方法、装置、电子设备及计算机可读存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342505A (zh) * | 2021-07-02 | 2021-09-03 | Oppo广东移动通信有限公司 | 线程识别方法、线程识别装置、存储介质与电子设备 |
CN114385387A (zh) * | 2022-03-23 | 2022-04-22 | 恒生电子股份有限公司 | 访问信息生成方法、装置和计算机设备 |
CN114385387B (zh) * | 2022-03-23 | 2022-07-19 | 恒生电子股份有限公司 | 访问信息生成方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112181702B (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8601493B2 (en) | Application controlling apparatus and storage medium which stores software for the apparatus | |
CN107948744B (zh) | 接口检测方法、接口检测设备及计算机可读存储介质 | |
CN111045901A (zh) | 容器的监控方法、装置、存储介质和电子设备 | |
CN112181702A (zh) | 一种线程监测方法及装置 | |
CN109388622A (zh) | 一种日志信息处理方法、装置、设备及可读存储介质 | |
US20240264914A1 (en) | Method and device for recovering self-test exception of server component, system and medium | |
EP3852363A1 (en) | Device state monitoring method and apparatus | |
CN113760611A (zh) | 系统站点切换方法、装置、电子设备及存储介质 | |
CN112463550A (zh) | 一种终端设备状态的远程监控方法、装置及设备 | |
WO2024113563A1 (zh) | 一种可纠正错误处理方法、装置、设备及可读存储介质 | |
CN109062718B (zh) | 一种服务器及数据处理方法 | |
CN114090270B (zh) | 线程管理方法、装置、电子设备及计算机可读存储介质 | |
CN113342496B (zh) | 单实例进程切换方法、系统及存储介质 | |
CN113760592B (zh) | 一种节点内核检测方法和相关装置 | |
CN115599617A (zh) | 总线检测方法、装置、服务器及电子设备 | |
CN113742113B (zh) | 一种嵌入式系统健康管理方法、设备及储存介质 | |
CN114328090A (zh) | 一种程序监控方法、装置、电子设备及存储介质 | |
CN109857720B (zh) | 数据库表监控方法、装置、计算机装置及可读存储介质 | |
CN113835859A (zh) | 一种任务调度方法、装置、设备及可读存储介质 | |
CN113064798A (zh) | 异常处理方法、装置、电子设备及系统 | |
CN117033084B (zh) | 虚拟机备份方法、装置、电子设备及存储介质 | |
CN113641524B (zh) | 单板启动超时的复位方法、装置、设备及可读存储介质 | |
CN117215859B (zh) | 主备bios自动切换方法、自动切换装置和计算机 | |
CN115344327B (zh) | 应用模块的切换方法、装置、电子设备及可读存储介质 | |
JP2009301079A (ja) | 電子計算機装置及びソフトウェア処理遅延検出時のデータ保存方法 |
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 |