CN111090528B - 死锁确定方法、装置及电子设备 - Google Patents

死锁确定方法、装置及电子设备 Download PDF

Info

Publication number
CN111090528B
CN111090528B CN201911361904.6A CN201911361904A CN111090528B CN 111090528 B CN111090528 B CN 111090528B CN 201911361904 A CN201911361904 A CN 201911361904A CN 111090528 B CN111090528 B CN 111090528B
Authority
CN
China
Prior art keywords
information
target
target process
state
stack
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
CN201911361904.6A
Other languages
English (en)
Other versions
CN111090528A (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.)
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software 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 Beijing Topsec Technology Co Ltd, Beijing Topsec Network Security Technology Co Ltd, Beijing Topsec Software Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN201911361904.6A priority Critical patent/CN111090528B/zh
Publication of CN111090528A publication Critical patent/CN111090528A/zh
Application granted granted Critical
Publication of CN111090528B publication Critical patent/CN111090528B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

死锁确定方法、装置及电子设备
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种死锁确定方法、装置及电子设备。
背景技术
当前网络攻击越来越多,网络安全设备大量被开发出来并应用到实际的环境中,由于当前应用丰富多样及网络的普及,对网络安全设备的稳定性要求越来越高,但由于数据流处理逻辑复杂,导致软件逻辑错误的确定越来越困难。
发明内容
有鉴于此,本申请实施例的目的在于提供一种死锁确定方法、装置及电子设备。能够达到有效判定死锁的效果。
第一方面,本申请实施例提供了一种死锁确定方法,包括:
按照预设周期获取各个进程的进程信息;
当每个进程的进程信息被记录次数达到预设次数后,判断目标进程被记录所述预设次数得到的多项进程信息是否相同,所述目标进程为当前运行的任一进程;
若所述目标进程的所述多项进程信息均相同,则判定所述目标进程处于死锁状态。
在一可选的实施方式中,所述进程信息为进程对应的各个堆栈的堆栈信息,所述方法还包括:
根据所述目标进程被记录所述预设次数得到的多项堆栈信息对死锁进行定位。
在一可选的实施方式中,所述堆栈信息包括所述目标进程使用的处理函数,以及所述处理函数所需的数据资源;所述根据所述目标进程被记录所述预设次数得到的多项堆栈信息对死锁进行定位的步骤,包括:
从所述目标进程的多项堆栈信息中确定出所述目标进程当前所使用的目标处理函数,以及所述目标处理函数所调用的目标数据资源,将所述目标处理函数及所述目标数据资源作为引起所述目标进程死锁的原因。
在一可选的实施方式中,所述按照预设周期获取各个进程的进程信息的步骤,包括:
针对所述目标进程,按照预设周期获取目标进程对应的各个堆栈的堆栈信息;
每次获取到所述目标进程对应的各个堆栈的堆栈信息时,将所述目标进程对应的各个堆栈的堆栈信息计入信息数组中所述目标进程对应的目标信息子数组中的一个元素中,所述信息数组包括N个信息子数组,每个信息子数组包括K个元素,每个元素用于记录其中一次采集到的进程的各个堆栈的堆栈信息,其中,N表示当前运行的进程数量,K表示所述预设次数;
所述根据所述目标进程被记录所述预设次数得到的多项堆栈信息对死锁进行定位的步骤,包括:
根据所述目标进程对应的目标信息子数组中的值对死锁进行定位。
根据本实施例的死锁确定方法,堆栈信息能表征进程的工作情况,通过堆栈信息能够实现对死锁的相对准确地定位。
在一可选的实施方式中,所述将目标进程对应的各个堆栈的堆栈信息计入信息数组中所述目标进程对应的目标信息子数组中的一个元素中的步骤,包括:
若目标进程对应的目标信息子数组中的每一个元素均对应记录有堆栈信息,则使用目标进程对应的各个堆栈的当前堆栈信息替换目标信息子数组中的元素当前记录的堆栈信息中的最早记录的堆栈信息。
根据本实施例的死锁确定方法,还可以在进程是正常状态时,采用循环记录的方式对堆栈信息进行记录,从而可以提高死锁判断的准确性。
在一可选的实施方式中,所述方法还包括:
根据所述目标进程的当前进程信息对状态数组中的目标元素的值进行更新,所述状态数组中的元素用于记录当前运行的各个进程的状态信息。
根据本实施例的死锁确定方法,还可以记录进程的状态信息,可以方便在需要了解的时候能够获知进程的状态。
在一可选的实施方式中,所述根据所述目标进程的当前进程信息对状态数组中的目标元素的值进行更新的步骤,包括:
若在任一次采集到的所述目标进程的进程信息与前一周期采集到的进程信息相同,则将所述状态数组中的目标元素的当前值累计记录;
所述判断目标进程被记录所述预设次数得到的多项进程信息是否相同的步骤,包括:
判断所述状态数组中的目标元素的当前值被记录的次数是否达到所述预设次数,若所述状态数组中的目标元素的当前值被记录的次数达到所述预设次数,则判定所述目标进程的多项进程信息均相同。
根据本实施例的死锁确定方法,
在一可选的实施方式中,所述若所述目标进程的所述多项进程信息均相同,则判定所述目标进程处于死锁状态的步骤,包括:
若所述目标进程的所述多项进程信息均相同,判断所述目标进程是否处于等待状态;
若所述目标进程不处于等待状态,则判定所述目标进程处于死锁状态。
根据本实施例的死锁确定方法,可以直接根据记录进程状态的状态数组对进程进行是否死锁的判断,从而可以提高判断速度的同时实现死锁的有效判断。
在一可选的实施方式中,所述方法还包括:
若判定所述目标进程处于死锁状态,则重新拉起所述目标进程。
根据本实施例的死锁确定方法,在出现死锁时,还可以将死锁的目标进程拉起,从而可以恢复进程的正常工作。
第二方面,本申请实施例还提供一种死锁确定装置,包括:
获取模块,用于按照预设周期获取各个进程的进程信息;
判断模块,用于当每个进程的进程信息被记录次数达到预设次数后,判断目标进程被记录所述预设次数得到的多项进程信息是否相同,所述目标进程为当前运行的任一进程;
判定模块,用于若所述目标进程的所述多项进程信息均相同,则判定所述目标进程处于死锁状态。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面的任一种可能的实施方式中的方法的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面的任一种可能的实施方式中的方法的步骤。
本申请实施例提供的死锁确定方法、装置、电子设备及计算机可读存储介质,通过周期性地记录进程的信息,从而可以了解到进程在被记录过程中是否发生改变,从而可以确定进程是否为死锁状态。进一步地,还可以在记录预设次数后,再判断进程的是否死锁,从而可以提高判断的准确率,减少误判的情况。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的电子设备的方框示意图。
图2为本申请实施例提供的死锁确定方法的流程图。
图3为本申请实施例提供的死锁确定方法的步骤201的详细流程图。
图4为本申请实施例提供的死锁确定装置的功能模块示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
实施例一
为便于对本实施例进行理解,首先对执行本申请实施例所公开的死锁确定方法的电子设备进行详细介绍。
如图1所示,是电子设备的方框示意图。电子设备100可以包括存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115、显示单元116。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对电子设备100的结构造成限定。例如,电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
上述的存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115及显示单元116各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。上述的处理器113用于执行存储器中存储的可执行模块。
其中,存储器111可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(ProgrammableRead-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,简称EEPROM)等。其中,存储器111用于存储程序,所述处理器113在接收到执行指令后,执行所述程序,本申请实施例任一实施例揭示的过程定义的电子设备100所执行的方法可以应用于处理器113中,或者由处理器113实现。
上述的处理器113可能是一种集成电路芯片,具有信号的处理能力。上述的处理器113可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(digital signalprocessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述的外设接口114将各种输入/输出装置耦合至处理器113以及存储器111。在一些实施例中,外设接口114,处理器113以及存储控制器112可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
上述的输入输出单元115用于提供给用户输入数据。所述输入输出单元115可以是,但不限于,鼠标和键盘等。
上述的显示单元116在电子设备100与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。
本实施例中,电子设备100可以是安全网关设备。由于安全网关设备通常的业务处理进程为不间断运行的进程。基于对安全网关设备的研究,本申请发明人提出通过周期性获取安全网关设备中的进程状态和堆栈信息,并对进程状态和堆栈信息进行周期性对比,以判断安全网关设备中的软件是否出现软件故障,并根据对比堆栈信息的结果来确定安全网关设备中的软件死锁的原因。
本实施例中的电子设备100可以用于执行本申请实施例提供的各个方法中的各个步骤。下面通过几个实施例详细描述死锁确定方法的实现过程。
实施例二
请参阅图2,是本申请实施例提供的死锁确定方法的流程图。下面将对图2所示的具体流程进行详细阐述。
步骤201,按照预设周期获取各个进程的进程信息。
可选地,本实施例中的死锁确定方法可以应用于一安全网关设备。
本实施例中,在记录进程的进程信息之前,安全网关设备的进程启动,从而进入不间断运行状态。并初始化用于记录被监控的进程状态和进程信息的记录信息。示例性地,安全网关设备进入运行状态时,提供业务功能的进程被拉起进入运行状态。在进程拉起时,初始化用于记录被监控的进程状态和进程信息的记录信息。
本实施例中,在采集各个进程的进程信息之前,还可以对采集周期进行初始化。在一可选的实施方式中,采集周期可以为5-60秒之间的任一是长度对应的时间周期。
本实施例中,在采集各个进程的进程信息之前,还可以对用于判定的预设次数K进行初始化。在一可选的实施方式中,预设次数K可以是1-100中的任一值。
在一实施方式中,如图3所示,步骤201可以包括以下步骤。
步骤2011,针对所述目标进程,按照预设周期获取目标进程对应的各个堆栈的堆栈信息。
本实施例中,安全网关设备中可以运行了多个进程。每个进程可以对应有多个线程。
每个周期可以采集每个进程的一项堆栈数据。每项堆栈数据可以包括一个主进程的堆栈信息,和对应进程的每个线程的堆栈信息。
本实施例中,堆栈信息可以包括记录的堆栈中的容纳的数据量,以及当前堆栈中所容纳的数据内容。其中,该数据内容可以包括进程调用的处理函数,该处理函数调用的数据资源。示例性地,数据资源可以包括共享数据表、文件数据等。示例性地,堆栈信息中可以包括所表示的线程的当前采样时刻,处理业务请求的函数之间的调用关系,以及处理过程中的程序代码运行情况。其中,采样时刻数据可以包括采样时的系统时间和CPU运行时间。系统时间可以用于表示业务处理请求的所需实际时长,CPU运行时间用于反映处理业务请求实际耗用CPU的时长。
步骤2012,每次获取到所述目标进程对应的各个堆栈的堆栈信息时,将所述目标进程对应的各个堆栈的堆栈信息计入信息数组中所述目标进程对应的目标信息子数组中的一个元素中。
信息数组包括N个信息子数组,每个信息子数组包括K个元素,每个元素用于记录其中一次采集到的进程的各个堆栈的堆栈信息,其中,N表示当前运行的进程数量,K表示所述预设次数。
本实施例中,可以采用二维数组记录各个进程的堆栈数据。二维数组中的每个长度为K的一维数组可以用于记录一个进程在K次采集到的K项堆栈数据。示例性地,数组dump[0][0]…dump[0][k-1]用于记录第一个进程在K个周期的堆栈数据;数组dump[1][0]…dump[1][k-1]用于记录第二个进程在K个周期的堆栈数据;数组dump[i-1][0]…dump[i-1][k-1]用于记录第i个进程在K个周期的堆栈数据。例如,在第j个周期采集到的第i个进程的堆栈数据可以记录在元素dump[i-1][j-1]中。
可选地,在采集进程的进程信息之前,还可以先将二维数组dump[0][0]…dump[n-1][k-1]置为空。
可选地,步骤2012可以包括:若目标进程对应的目标信息子数组中的每一个元素均对应记录有堆栈信息,则使用目标进程对应的各个堆栈的当前堆栈信息替换目标信息子数组中的元素当前记录的堆栈信息中的最早记录的堆栈信息。
就一目标进程而言,K个周期采集的堆栈数据分别记录在数组dump[m][0]…dump[m][k-1]。采集到的目标进程的堆栈数据可以分别一次存在dump[m][0]、dump[m][1]、dump[m][2]、…、dump[m][k-1]中。若已经采集了K个周期的堆栈数据,且进程的当前状态还是处于正常状态,则第K+1个周期采集到的目标进程的堆栈数据,则记录至第一个元素dump[m][0]中,覆盖替换dump[m][0]原来的值;若已经采集了K+1个周期的堆栈数据,且进程的当前状态还是处于正常状态,则第K+2个周期采集到的目标进程的堆栈数据,则记录至第二个元素dump[m][1]中,覆盖替换dump[m][1]原来的值,以此类推,采用循环的方式记录各进程的堆栈数据。
本实施例中,通过上述的二维数组可以有效记录进程在各个周期的情况。
示例性地,由于进程在不同的状态下,对应的堆栈数据中的堆栈信息也可能相同。因此,在记录进程的堆栈数据的基础上,还可以对进程的状态进行记录。
可选地,死锁确定方法还可以包括:步骤202,根据所述目标进程的当前进程信息对状态数组中的目标元素的值进行更新。
其中,状态数组中的元素用于记录当前运行的各个进程的状态信息。示例性地,各个进程的状态信息可以是运行、僵死、等待中的任一状态。
本实施例中,状态数组可以是一维数组。每个一维数组的每个元素用于记录一个进程的状态信息。示例性地,可以使用一维数组sta[0]…sta[n-1]记录各个进程的状态信息。
可选地,在采集进程的进程状态信息之前,还可以先对一维数组sta[0]…sta[n-1]的变量置为空。
示例性地,如果进程在等待状态,则可能存在多个周期采集到的堆栈数据是一样的情况。
示例性地,如果进程在僵死状态,则也可能存在多个周期采集到的堆栈数据是一样的情况。
步骤202可以包括:若在任一次采集到的所述目标进程的进程信息与前一周期采集到的进程信息相同,则将所述状态数组中的目标元素的当前值累计记录。
可选地,状态信息对应的标识可以是数值标识、文字标识、字符串标识等任意能够标识等待状态的标识。在一个实例中,状态信息对应的标识可以是数值标识,例如,分别用01、10、11表示运行、僵死、等待状态。下面以状态信息对应的标识为数值标识为例进行描述。
示例性地,若第a个周期得到的目标进程m的状态是等待状态,则在数组元素sta[m-1]中记录等待状态对应的标识11。进一步地,在第a+1个周期得到的目标进程m的状态还是等待状态时,则可以将等待状态对应的标识进行累计记录,则数组元素sta[m-1]的当前值可以是11、11。
示例性地,若第b个周期得到的目标进程m的状态是等待状态,则在数组元素sta[m-1]中记录等待状态对应的标识11。进一步地,在第b+1个周期得到的目标进程m的状态是运行状态时,则可以将运行状态对应的标识记录至sta[m-1],则数组元素sta[m-1]的当前值可以是01。
本实施例中,通过一位数组sta[0]…sta[n-1]中的各个元素的值可以获知各个进程所处的当前状态的时长。
步骤203,当每个进程的进程信息被记录次数达到预设次数后,判断目标进程被记录所述预设次数得到的多项进程信息是否相同。
上述的目标进程为当前运行的任一进程。
本实施例中,当用于记录进程的进程信息的二维数组均有值时,则可以对二维数组中记录的多项进程信息进行判断。
在一实施方式中,步骤203可以包括:判断所述状态数组中的目标元素的当前值被记录的次数是否达到所述预设次数,若所述状态数组中的目标元素的当前值被记录的次数达到所述预设次数,则判定所述目标进程的多项进程信息均相同。
本实施例中,若用于记录进程的状态信息的状态数组中一元素值为K项僵死状态对应的标识。以前面描述的实例为例,若sta[p]的值为K项累计的10,则可以表征第p+1项进程当前处于死锁状态。
本实施例中,步骤203可以被实施为:判断信息数组中的任一信息子数组中的K个元素对应的值是否相同,若其中一信息子数组中的K个元素相同,则表示该信息子数组对应的进程的多项进程信息均相同。
步骤205,若所述目标进程的所述多项进程信息均相同,则判定所述目标进程处于死锁状态。
可选地,若其中一信息子数组中的K个元素相同,可能表示的该该信息子数组对应的进程的堆栈一直处于未变化的状态。进一步地,由于导致堆栈处于不变状态的情况有多种,因此,可以在多项进程信息均相同的基础上,再进一步地对进程的状态进行判断。
示例性地,步骤205可以包括:若所述目标进程的所述多项进程信息均相同,判断所述目标进程是否处于等待状态;若所述目标进程不处于等待状态,则判定所述目标进程处于死锁状态。
可选地,可以通过状态数组中记录的状态信息判断目标进程是否处于等待状态。
可选地,在判定任一进程为死锁状态时,则可以将用于记录各个进程的进程信息的信息数组置为空。可选地,还可以将用于记录各个进程的状态信息的状态数组也置为空。
本实施例中,为了方便相关人员能够获知进程死锁的原因,本实施例还可以对死锁进行定位。可选地,死锁确定方法还可以包括步骤207:根据所述目标进程被记录所述预设次数得到的多项堆栈信息对死锁进行定位。
示例性地,堆栈信息包括所述目标进程使用的处理函数,以及所述处理函数所需的数据资源。
本实施中,若一进程的堆栈信息处于持续不变的状态,则表示该进程可能处于僵死状态。基于此,步骤207可以被实施为:从所述目标进程的多项堆栈信息中确定出所述目标进程当前所使用的目标处理函数,以及所述目标处理函数所调用的目标数据资源。
将目标处理函数及该目标数据资源作为引起所述目标进程死锁的原因。示例性地,可表示目标进程在调用该目标数据资源时,导致了进程的死锁。
示例性地,步骤207可以包括:根据所述目标进程对应的目标信息子数组中的值对死锁进行定位。
本实施例中,目标信息子数组中的各个元素的值为各个进程对应的堆栈的堆栈信息。通过对堆栈信息的识别,可以确定出进程出现异常的原因。
本实施例中,为了保持安全网关设备的有效运行,本实施例还可以对处于死锁状态的进程进行恢复操作。可选地,死锁确定方法还可以包括:步骤209,若判定所述目标进程处于死锁状态,则重新拉起所述目标进程。
在本申请实施例提供的死锁确定方法中,通过周期性地记录进程的信息,从而可以了解到进程在被记录过程中是否发生改变,从而可以确定进程是否为死锁状态。进一步地,还可以在记录预设次数后,再判断进程的是否死锁,从而可以提高判断的准确率,减少误判的情况。
进一步地,本实施例中的方法不仅仅对死锁进行确定,还可以通过堆栈信息对死锁进行定位,实现检测到进程或线程资源类死锁的情况,并记录死锁的原因,即是哪些进程间或线程间发生了死锁。
实施例三
基于同一申请构思,本申请实施例中还提供了与死锁确定方法对应的死锁确定装置,由于本申请实施例中的装置解决问题的原理与前述的死锁确定方法实施例相似,因此本实施例中的装置的实施可以参见上述方法的实施例中的描述,重复之处不再赘述。
请参阅图4,是本申请实施例提供的死锁确定装置的功能模块示意图。本实施例中的死锁确定装置中的各个模块用于执行上述方法实施例中的各个步骤。死锁确定装置包括:获取模块301、判断模块302以及判定模块303;其中,
获取模块301,用于按照预设周期获取各个进程的进程信息;
判断模块302,用于当每个进程的进程信息被记录次数达到预设次数后,判断目标进程被记录所述预设次数得到的多项进程信息是否相同,所述目标进程为当前运行的任一进程;
判定模块303,用于若所述目标进程的所述多项进程信息均相同,则判定所述目标进程处于死锁状态。
一种可能的实施方式中,定位模块304,用于:
根据所述目标进程被记录所述预设次数得到的多项堆栈信息对死锁进行定位。
一种可能的实施方式中,所述堆栈信息包括所述目标进程使用的处理函数,以及所述处理函数所需的数据资源;定位模块304,用于:
从所述目标进程的多项堆栈信息中确定出所述目标进程当前所使用的目标处理函数,以及所述目标处理函数所调用的目标数据资源,将所述目标处理函数及所述目标数据资源作为引起所述目标进程死锁的原因。
一种可能的实施方式中,获取模块301,用于:
针对所述目标进程,按照预设周期获取目标进程对应的各个堆栈的堆栈信息;
每次获取到所述目标进程对应的各个堆栈的堆栈信息时,将所述目标进程对应的各个堆栈的堆栈信息计入信息数组中所述目标进程对应的目标信息子数组中的一个元素中,所述信息数组包括N个信息子数组,每个信息子数组包括K个元素,每个元素用于记录其中一次采集到的进程的各个堆栈的堆栈信息,其中,N表示当前运行的进程数量,K表示所述预设次数。
定位模块304,用于根据所述目标进程对应的目标信息子数组中的值对死锁进行定位。
一种可能的实施方式中,获取模块301,用于:
若目标进程对应的目标信息子数组中的每一个元素均对应记录有堆栈信息,则使用目标进程对应的各个堆栈的当前堆栈信息替换目标信息子数组中的元素当前记录的堆栈信息中的最早记录的堆栈信息。
一种可能的实施方式中,死锁确定装置还可以包括:
更新模块305,用于根据所述目标进程的当前进程信息对状态数组中的目标元素的值进行更新,所述状态数组中的元素用于记录当前运行的各个进程的状态信息。
一种可能的实施方式中,更新模块305,用于若在任一次采集到的所述目标进程的进程信息与前一周期采集到的进程信息相同,则将所述状态数组中的目标元素的当前值累计记录;
判断模块302,用于判断所述状态数组中的目标元素的当前值被记录的次数是否达到所述预设次数,若所述状态数组中的目标元素的当前值被记录的次数达到所述预设次数,则判定所述目标进程的多项进程信息均相同。
一种可能的实施方式中,判定模块303,用于:
若所述目标进程的所述多项进程信息均相同,判断所述目标进程是否处于等待状态;
若所述目标进程不处于等待状态,则判定所述目标进程处于死锁状态。
一种可能的实施方式中,死锁确定装置还可以包括:
拉起模块306,用于若判定所述目标进程处于死锁状态,则重新拉起所述目标进程。
此外,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的死锁确定方法的步骤。
本申请实施例所提供的死锁确定方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的死锁确定方法的步骤,具体可参见上述方法实施例,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (9)

1.一种死锁确定方法,其特征在于,包括:
按照预设周期获取各个进程的进程信息;
根据目标进程的当前进程信息对状态数组中的目标元素的值进行更新,所述状态数组中的元素用于记录当前运行的各个进程的状态信息;
当每个进程的进程信息被记录次数达到预设次数后,判断目标进程被记录所述预设次数得到的多项进程信息是否相同,所述目标进程为当前运行的任一进程;
若所述目标进程的所述多项进程信息均相同,则判定所述目标进程处于死锁状态;
所述根据所述目标进程的当前进程信息对状态数组中的目标元素的值进行更新的步骤,包括:
若在任一次采集到的所述目标进程的进程信息与前一周期采集到的进程信息相同,则将所述状态数组中的目标元素的当前值累计记录;
所述判断目标进程被记录所述预设次数得到的多项进程信息是否相同的步骤,包括:
判断所述状态数组中的目标元素的当前值被记录的次数是否达到所述预设次数,若所述状态数组中的目标元素的当前值被记录的次数达到所述预设次数,则判定所述目标进程的多项进程信息均相同;
所述若所述目标进程的所述多项进程信息均相同,则判定所述目标进程处于死锁状态的步骤,包括:
若所述目标进程的所述多项进程信息均相同,判断所述目标进程是否处于等待状态;
若所述目标进程不处于等待状态,则判定所述目标进程处于死锁状态;其中,通过状态数组中记录的状态信息判断目标进程是否处于等待状态。
2.根据权利要求1所述的方法,其特征在于,所述进程信息为进程对应的各个堆栈的堆栈信息,所述方法还包括:
根据所述目标进程被记录所述预设次数得到的多项堆栈信息对死锁进行定位。
3.根据权利要求2所述的方法,其特征在于,所述堆栈信息包括所述目标进程使用的处理函数,以及所述处理函数所需的数据资源;所述根据所述目标进程被记录所述预设次数得到的多项堆栈信息对死锁进行定位的步骤,包括:
从所述目标进程的多项堆栈信息中确定出所述目标进程当前所使用的目标处理函数,以及所述目标处理函数所调用的目标数据资源,将所述目标处理函数及所述目标数据资源作为引起所述目标进程死锁的原因。
4.根据权利要求3所述的方法,其特征在于,所述按照预设周期获取各个进程的进程信息的步骤,包括:
针对所述目标进程,按照预设周期获取目标进程对应的各个堆栈的堆栈信息;
每次获取到所述目标进程对应的各个堆栈的堆栈信息时,将所述目标进程对应的各个堆栈的堆栈信息计入信息数组中所述目标进程对应的目标信息子数组中的一个元素中,所述信息数组包括N个信息子数组,每个信息子数组包括K个元素,每个元素用于记录其中一次采集到的进程的各个堆栈的堆栈信息,其中,N表示当前运行的进程数量,K表示所述预设次数;
所述根据所述目标进程被记录所述预设次数得到的多项堆栈信息对死锁进行定位的步骤,包括:
根据所述目标进程对应的目标信息子数组中的值对死锁进行定位。
5.根据权利要求4所述的方法,其特征在于,所述将所述目标进程对应的各个堆栈的堆栈信息计入信息数组中所述目标进程对应的目标信息子数组中的一个元素中的步骤,包括:
若目标进程对应的目标信息子数组中的每一个元素均对应记录有堆栈信息,则使用目标进程对应的各个堆栈的当前堆栈信息替换目标信息子数组中的元素当前记录的堆栈信息中的最早记录的堆栈信息。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述方法还包括:
若判定所述目标进程处于死锁状态,则重新拉起所述目标进程。
7.一种死锁确定装置,其特征在于,包括:
获取模块,用于按照预设周期获取各个进程的进程信息;根据目标进程的当前进程信息对状态数组中的目标元素的值进行更新,所述状态数组中的元素用于记录当前运行的各个进程的状态信息;所述根据所述目标进程的当前进程信息对状态数组中的目标元素的值进行更新的步骤,包括:
若在任一次采集到的所述目标进程的进程信息与前一周期采集到的进程信息相同,则将所述状态数组中的目标元素的当前值累计记录;
判断模块,用于当每个进程的进程信息被记录次数达到预设次数后,判断目标进程被记录所述预设次数得到的多项进程信息是否相同,所述目标进程为当前运行的任一进程;所述判断目标进程被记录所述预设次数得到的多项进程信息是否相同的步骤,包括:
判断所述状态数组中的目标元素的当前值被记录的次数是否达到所述预设次数,若所述状态数组中的目标元素的当前值被记录的次数达到所述预设次数,则判定所述目标进程的多项进程信息均相同;
判定模块,用于若所述目标进程的所述多项进程信息均相同,则判定所述目标进程处于死锁状态;所述若所述目标进程的所述多项进程信息均相同,则判定所述目标进程处于死锁状态的步骤,包括:若所述目标进程的所述多项进程信息均相同,判断所述目标进程是否处于等待状态;若所述目标进程不处于等待状态,则判定所述目标进程处于死锁状态;所述若所述目标进程的所述多项进程信息均相同,则判定所述目标进程处于死锁状态的步骤,包括:
若所述目标进程的所述多项进程信息均相同,判断所述目标进程是否处于等待状态;
若所述目标进程不处于等待状态,则判定所述目标进程处于死锁状态;其中,通过状态数组中记录的状态信息判断目标进程是否处于等待状态。
8.一种电子设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行如权利要求1至6任一所述的方法的步骤。
9.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6任一所述的方法的步骤。
CN201911361904.6A 2019-12-25 2019-12-25 死锁确定方法、装置及电子设备 Active CN111090528B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911361904.6A CN111090528B (zh) 2019-12-25 2019-12-25 死锁确定方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911361904.6A CN111090528B (zh) 2019-12-25 2019-12-25 死锁确定方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN111090528A CN111090528A (zh) 2020-05-01
CN111090528B true CN111090528B (zh) 2023-09-26

Family

ID=70397084

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911361904.6A Active CN111090528B (zh) 2019-12-25 2019-12-25 死锁确定方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN111090528B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4318182A (en) * 1974-04-19 1982-03-02 Honeywell Information Systems Inc. Deadlock detection and prevention mechanism for a computer system
US5590335A (en) * 1993-08-03 1996-12-31 Bull S.A. Process for analysis of deadlocks in an operating system
US6009269A (en) * 1997-03-10 1999-12-28 Digital Equipment Corporation Detecting concurrency errors in multi-threaded programs
CN1629821A (zh) * 2003-12-19 2005-06-22 华为技术有限公司 一种多线程处理器线程死锁检测的方法及其系统
US7296271B1 (en) * 2000-06-28 2007-11-13 Emc Corporation Replaceable scheduling algorithm in multitasking kernel
CN103942113A (zh) * 2013-11-21 2014-07-23 小米科技有限责任公司 系统重启原因的检测方法、装置及终端设备
CN104360947A (zh) * 2014-11-18 2015-02-18 合肥康捷信息科技有限公司 一种基于petri网的多进程死锁检测方法
CN105243023A (zh) * 2015-11-24 2016-01-13 无锡江南计算技术研究所 并行运行时错误检测方法
CN110427272A (zh) * 2019-07-26 2019-11-08 新华三技术有限公司成都分公司 接口函数定位方法、装置及网络设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005122560A (ja) * 2003-10-17 2005-05-12 Fujitsu Ltd デッドロック事前検出プログラム
GB2412761C (en) * 2004-04-02 2011-01-05 Nokia Corp Improvements in or relating to an operating system for a computing device
US7958512B2 (en) * 2005-10-31 2011-06-07 Microsoft Corporation Instrumentation to find the thread or process responsible for an application failure
US20140040220A1 (en) * 2012-07-31 2014-02-06 Hideaki Kimura Methods and systems for deadlock detection
US20140040219A1 (en) * 2012-07-31 2014-02-06 Hideaki Kimura Methods and systems for a deadlock resolution engine

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4318182A (en) * 1974-04-19 1982-03-02 Honeywell Information Systems Inc. Deadlock detection and prevention mechanism for a computer system
US5590335A (en) * 1993-08-03 1996-12-31 Bull S.A. Process for analysis of deadlocks in an operating system
US6009269A (en) * 1997-03-10 1999-12-28 Digital Equipment Corporation Detecting concurrency errors in multi-threaded programs
US7296271B1 (en) * 2000-06-28 2007-11-13 Emc Corporation Replaceable scheduling algorithm in multitasking kernel
CN1629821A (zh) * 2003-12-19 2005-06-22 华为技术有限公司 一种多线程处理器线程死锁检测的方法及其系统
CN103942113A (zh) * 2013-11-21 2014-07-23 小米科技有限责任公司 系统重启原因的检测方法、装置及终端设备
CN104360947A (zh) * 2014-11-18 2015-02-18 合肥康捷信息科技有限公司 一种基于petri网的多进程死锁检测方法
CN105243023A (zh) * 2015-11-24 2016-01-13 无锡江南计算技术研究所 并行运行时错误检测方法
CN110427272A (zh) * 2019-07-26 2019-11-08 新华三技术有限公司成都分公司 接口函数定位方法、装置及网络设备

Also Published As

Publication number Publication date
CN111090528A (zh) 2020-05-01

Similar Documents

Publication Publication Date Title
EP3425509B1 (en) Method and system for real-time and scalable anomaly detection and classification of multi-dimensional multivariate high-frequency transaction data in a distributed environment
US9483378B2 (en) Method and system for resource monitoring of large-scale, orchestrated, multi process job execution environments
US8286139B2 (en) Call stack sampling for threads having latencies exceeding a threshold
US8132170B2 (en) Call stack sampling in a data processing system
US20160055044A1 (en) Fault analysis method, fault analysis system, and storage medium
US20100017583A1 (en) Call Stack Sampling for a Multi-Processor System
US20130238940A1 (en) Method for ranking analysis tools
US10860454B2 (en) Analyzing large-scale data processing jobs
CN111026621B (zh) 面向Elasticsearch集群的监控报警方法、装置、设备、介质
JP6037397B2 (ja) ユーザ操作のログ記録方法、そのプログラムおよび装置
EP3582115A1 (en) Method and system for log data analytics based on superminhash signatures
JP5634599B2 (ja) データ処理システム、データ処理方法、及び、プログラム
CN112231187B (zh) 微服务异常分析方法及装置
EP2690559A1 (en) Operation administration system, operation administration method, and program
CN110018932B (zh) 一种容器磁盘的监控方法及装置
JP5623557B2 (ja) 診断データを収集するためのマルチスレッド化コンピューティング環境における方法、装置、およびコンピュータ・プログラム
CN111090528B (zh) 死锁确定方法、装置及电子设备
CN108509255B (zh) 硬件中断的处理方法和装置
CN111026574B (zh) 诊断Elasticsearch集群问题的方法及装置
CN111597032A (zh) 任务调度管理方法、装置及电子设备
US20130185600A1 (en) Thread based dynamic data collection
CN111368104A (zh) 信息处理方法、装置及设备
CN114546769A (zh) 一种任务监控方法、装置、电子设备及可读存储介质
US10198206B2 (en) Memory mode categorizations
EP3751430A1 (en) Method and system for log data analytics based on superminhash signatures

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