CN113961365A - 一种资源死锁的检测方法和装置 - Google Patents
一种资源死锁的检测方法和装置 Download PDFInfo
- Publication number
- CN113961365A CN113961365A CN202111420320.9A CN202111420320A CN113961365A CN 113961365 A CN113961365 A CN 113961365A CN 202111420320 A CN202111420320 A CN 202111420320A CN 113961365 A CN113961365 A CN 113961365A
- Authority
- CN
- China
- Prior art keywords
- resource
- resources
- access
- database
- pair
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种资源死锁的检测方法和装置,涉及计算机技术领域,可用于金融领域或其他领域。该方法包括:获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序;基于第一进程对数据库中多个资源的访问顺序,确定第一资源对集合;基于第二进程对数据库中多个资源的访问顺序,确定第二资源对集合;确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁。本申请提供的资源死锁的检测方法可以在系统运行前就可以将存在资源死锁的进程排除,降低资源死锁的风险,减少可能对系统运行带来不利影响的因素,从而有利于提高系统可靠性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种资源死锁的检测方法和装置。
背景技术
在系统运行过程中,如果两个进程在执行时,按照相反的顺序访问数据库中的两个资源,比如,进程1按照“资源1→资源2”的顺序访问数据库,但进程2按照“资源2→资源1”的顺序访问数据库,就有可能出现如下情况:进程1锁住了资源1,进程2锁住了资源2,但进程1等待资源2,而进程2等待资源1。这种情况可以称为死锁。死锁的出现可能导致系统运行出现风险。
因此,希望提供一种技术,能够尽早识别出资源死锁,以降低对系统运行带来的影响。
发明内容
本申请提供了一种资源死锁的检测方法和装置,以期尽早识别出资源死锁,进而可以降低对系统运行带来的影响。
第一方面,本申请提供了一种资源死锁的检测方法,该方法包括:获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序,第一进程和第二进程为同一系统中的两个进程;基于第一进程对数据库中多个资源的访问顺序,确定第一资源对集合,第一资源对集合包括由第一进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照第一进程的访问顺序排布的两个资源;基于第二进程对数据库中多个资源的访问顺序,确定第二资源对集合,第二资源对集合包括由第二进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照第二进程的访问顺序排布的两个资源;确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁,其中,存在资源死锁的两个资源对包括相同的两个资源,但访问顺序相反。
本申请提供的资源死锁的检测方法,基于进程的代码进行静态扫描,以获取每个进程访问资源的顺序,进而将对资源相同、访问顺序相反的两个资源识别出来。因此,可以在系统运行前识别出死锁进程,降低资源死锁的风险,减少可能对系统运行带来不利影响的因素,从而有利于提高系统可靠性。
结合第一方面,在第一方面的某些可能的实现方式中,获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序,包括:获取第一进程的代码和第二进程的代码;基于第一进程的代码,获取第一进程对数据库中多个资源的访问顺序;基于第二进程的代码,获取第二进程对数据库中多个资源的访问顺序。
结合第一方面,在第一方面的某些可能的实现方式中,基于第一进程的代码,获取第一进程对数据库中多个资源的访问顺序,包括:基于第一进程的代码确定第一进程的访问链,第一进程的访问链是按照第一进程对数据库中多个资源的访问顺序连接而成的链路,用于指示第一进程访问数据库中多个资源的先后顺序;以及于第二进程的代码,获取第二进程对数据库中多个资源的访问顺序,包括:基于第二进程的代码确定第二进程的访问链,第二进程的访问链是按照第二进程对数据库中多个资源的访问顺序连接而成的链路,用于指示第二进程访问数据库中多个资源的先后顺序。
应当理解,访问链是进程对资源访问顺序的一种表现形式,还可以是序列、表格等形式,本申请对此不作任何限定。
结合第一方面,在第一方面的某些可能的实现方式中,第一进程的访问链包括多个第一资源;该方法还包括:对第一进程的访问链中的多个第一资源进行去重处理,以得到去重后的访问链,去重后的访问链中的资源互不相同,且第一资源在去重后的访问链中的位置根据第一资源在去重前的访问链中首次出现的位置确定。
去重处理可以避免误识别的情况发生。如果不进行去重处理,一些本来不会产生资源死锁的情况可能会被误识别为产生资源死锁。
结合第一方面,在第一方面的某些可能的实现方式中,资源对为按照访问链的顺序,从在先访问的一个资源指向在后访问的一个资源的向量,第一资源对集合为包括多个向量的第一向量集合,第二资源对集合为包括多个向量的第二向量集合,以及确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁,包括:基于预定义的乘法运算的规则、第一向量集合中的多个向量和第二向量集合中的多个向量,得到多个运算结果,每个运算结果由第一向量集合中的一个向量和第二向量集合中的一个向量执行乘法运算得到;基于多个运算结果和预定义的目标值,确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁。
应当理解,向量可以是行向量,或者,列向量,本申请对此不做限定。
还应当理解,向量是资源对的一种表现形式,还可以是数组、表格等形式,本申请对此不作限定。
结合第一方面,在第一方面的某些可能的实现方式中,该方法还包括:在第一资源对集合中的资源对与第二资源对集合中的资源对存在资源死锁的情况下,输出检测结果,检测结果包括第一进程的标识和第二进程的标识。
可选地,检测结果还包括存在资源死锁的两个资源对。
第二方面,本申请提供了一种资源死锁的检测装置,该装置包括用于实现第一方面或第一方面任意一种可能实现方式中的方法的模块或单元。应理解,各个模块或单元可通过执行计算机程序来实现相应的功能。
第三方面,本申请提供了一种资源死锁的检测装置,包括处理器,所述处理器用于执行计算机程序,以执行第一方面以及第一方面任意一种可能的实现方式。
第四方面,本申请提供了一种计算机可读存储介质,包括计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行第一方面以及第一方面任一种可能实现方式中的方法。
第五方面,本申请提供了一种计算机程序产品,包括计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行第一方面以及第一方面任一种可能实现方式中的方法。
应当理解的是,本申请的第二方面至第五方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
需要说明的是,本申请提供的资源死锁的检测方法和装置可用于金融领域在资源死锁方面的检测,也可用于除金融领域之外任意领域在资源死锁方面的检测,本申请对资源死锁的检测方法和装置的应用领域不做限定。
附图说明
图1是适用于本申请实施例提供的资源死锁的检测方法的应用场景的示意图;
图2是本申请实施例提供的资源死锁的检测方法的示意性流程图;
图3是本申请实施例提供的资源死锁的检测装置的示意性框图;
图4是本申请实施例提供的资源死锁的检测装置的另一示意性框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”以及任何变形,意图在于覆盖不排他的包含。
系统中的两个或两个以上的进程在执行时,由于竞争资源或者彼此通信而造成阻塞,若无外力作用,这些进程都将无法执行下去,这种现象称作死锁。本申请提供的资源死锁的检测方法适用于检测两个进程之间的资源死锁。
为了便于理解本申请,首先结合图1对适用于本申请提供的资源死锁检测的场景做简单说明。
图1是适用于本申请实施例提供的资源死锁的检测方法的应用场景的示意图。如图1所示,该资源死锁的检测方法的应用场景包括第一进程110、第二进程120、数据库130。其中,第一进程110包括依次执行的程序1和程序2,程序1从数据库130中依次访问资源1和资源3,程序2从数据库130中依次访问资源1和资源2;第二进程120包括依次执行的程序3和程序4,程序3从数据库130中依次访问资源1和资源2,程序4从数据库中依次访问资源3和资源4。
需要说明的是,进程访问的资源数量与该进程所包含的程序访问的资源数量相关。在一个进程包括多个程序的情况下,如果各个程序访问的资源互不相同,则该进程访问的资源数量可以是各个程序访问的资源数量之和;如果各个程序访问的资源有重复,则该进程访问的资源数量小于各个程序访问的资源数量之和。换言之,进程访问的资源数量不超过其所包含的各个程序访问的资源数量之和。
应理解,图1示出的场景中,每个进程包括了两个程序,每个程序访问的资源数为2。但这不应构成任何限定。本申请对于每个进程包括的程序及其数量,每个程序访问的资源及其数量均不作限定。
再看图1,第一进程110访问数据库130中资源的顺序为资源1、资源3、资源1、资源2,第二进程120访问数据库130中资源的顺序为资源1、资源2、资源3、资源4。可以发现,第一进程110和第二进程120都需要访问资源2和资源3,不同的是,第一进程110先访问资源3后访问资源2;第二进程120先访问资源2后访问资源3。
在进程的执行过程中就有可能出现:第一进程110锁住了资源3,要访问资源2;第二进程120锁住了资源2,要访问资源3。两个进程各自锁住了对方要访问的资源,也都访问不到自己所需要的资源,这样就造成了资源死锁(也可简称为死锁),而发生资源死锁的两个进程,如上述的第一进程110和第二进程120,可以称为死锁进程。
在系统运行过程中,如果出现资源死锁,可能会对系统运行造成影响,比如,系统无法继续运行,严重时可能导致系统崩溃,系统可靠性不能保证。因此,运维人员需要查找出导致系统不能正常运行的根因,进而解决根因。但这也会造成系统运行被暂停,且死锁进程分别锁住了资源,其他未发生资源死锁的进程也可能会受到影响。
鉴于此,本申请提供了一种资源死锁的检测方法,旨在系统运行之前就提前检测出死锁进程。该方法基于进程的代码进行静态扫描,以获取每个进程访问资源的顺序,进而将对资源相同、访问顺序相反的两个资源识别出来,提前进行人工处理。因此在系统运行前就可以将死锁进程排除,降低资源死锁的风险,减少可能对系统运行带来不利影响的因素,从而有利于提高系统可靠性。
图2是本申请实施例提供的资源死锁的检测方法200的示意性流程图,如图2所示,该方法200可以包括步骤210至240,可以由资源死锁的检测装置来执行,该检测装置例如可以是计算机,或者配置于计算机中的部件,如芯片、芯片系统等。本申请对此不作限定。
需要说明的是,下文中为便于理解和说明,以第一进程和第二进程为例来描述了资源死锁的检测方法。其中,第一进程和第二进程是同一系统中的两个进程。但这并不代表该系统中只运行该两个进程。该系统中可以运行更多数量的进程,检测装置可以基于如下方法对系统中的多个进程进行检测,具体可以将多个进程两两组合,然后基于如下方法,对组合得到的每两个进程进行一次检测,以确认是否存在资源死锁。
下面对方法200中的各个步骤做详细说明。
在步骤210中,获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序。
其中,第一进程访问的多个资源和第二进程访问的多个资源可以是完全相同的,或者,也可以是部分相同的,或者,还可以是完全不同的。
示例性地,第一进程访问资源1、资源2、资源3,第二进程访问资源1、资源2、资源3,则第一进程访问的多个资源和第二进程访问的多个资源是完全相同的;第一进程访问资源1、资源2、资源3,第二进程访问资源1、资源2、资源4,则第一进程访问的多个资源和第二进程访问的多个资源是部分相同的;第一进程访问资源1、资源2,第二进程访问资源3、资源4,则第一进程访问的多个资源和第二进程访问的多个资源是完全不同的。
可以理解的是,如果第一进程访问的多个资源和第二进程访问的多个资源部分或全部相同,则有可能存在资源死锁的风险。本文中假设第一进程访问的多个资源和第二进程访问的多个资源中,存在至少两个相同的资源。换言之,第一进程和第二进程有共同访问的至少两个资源。
由于各进程可以通过执行一个或多个程序来实现,每个程序可能需要访问数据库中的资源,因此各进程访问资源的顺序取决于进程中的程序访问资源的顺序。
示例性地,第一进程依次执行程序1和程序2,程序1依次访问资源1和资源3,程序2依次访问资源1和资源2,则第一进程访问资源的顺序为资源1、资源3、资源1、资源2;第二进程依次执行程序3和程序4,程序3依次访问资源1和资源2,程序4依次访问资源3和资源4,则第二进程访问资源的顺序为资源1、资源2、资源3、资源4。
在一种可能的实现方式中,检测装置可通过提前读取各进程代码的方式来获取各自的对资源的访问顺序。
可选地,步骤210具体包括:获取第一进程的代码和第二进程的代码;并基于第一进程的代码,获取第一进程对数据库中多个资源的访问顺序;基于第二进程的代码,获取第二进程对数据库中多个资源的访问顺序。
其中,第一进程的代码可以包括第一进程所涉及程序的全量代码,第一进程所涉及程序的全量代码可以包括第一进程的入口程序代码;第二进程的代码可以包括第二进程所涉及程序的全量代码,第二进程所涉及程序的全量代码可以包括第二进程的入口程序代码。每个进程所涉及的程序包括入口程序,以及后续的执行程序。
基于对第一进程的代码和第二进程的代码的读取,检测装置可以得到第一进程对多个资源的访问顺序以及第二进程对多个资源的访问顺序。
进程对资源的访问顺序可以通过不同的形式来表示。例如可以按照预先定义的排布顺序,将多个资源被进程访问的顺序以序列、表格的形式表示出来。该预先定义的顺序例如可以是从左到右、从上到下等等。本申请实施例对此不作限定。
在一种可能的设计中,进程对资源的访问顺序可以表现为访问链。访问链是按照进程对多个资源的访问顺序连接而成的链路,可用于指示进程访问资源的先后顺序。
示例性地,第一进程依次访问了资源1、资源3、资源1、资源2,则第一进程的访问链为:资源1→资源3→资源1→资源2;第二进程依次访问了资源1、资源2、资源3、资源4,则第二进程的访问链为:资源1→资源2→资源3→资源4。
在访问链中,可能存在重复的资源,比如,第一进程的访问链中,资源1重复出现。由于在一个进程的执行过程中,一旦访问某一资源,就在执行结束之前将该资源锁住而不释放,故没有必要将同一资源在访问链中多次出现,这反而可能造成误判,将一些本来不会产生资源死锁的情况可能会被误识别为产生资源死锁。为便于区分和说明,本文中将在访问链中重复出现的资源记为第一资源。可以理解,每个进程的访问链中都可能出现重复的第一资源,本文假设第一进程的访问链包括多个第一资源,如上例中的资源1。
针对重复出现的第一资源,可以对访问链进行去重处理。可选地,步骤210还包括:对第一进程的访问链中的多个第一资源进行去重处理,以得到去重后的访问链,去重后的访问链中的资源互不相同,且所述第一资源在所述去重后的访问链中的位置根据所述第一资源在去重前的访问链中首次出现的位置确定。
示例性地,第一进程的访问链在去重前为:资源1→资源3→资源1→资源2,经去重处理得到的去重后的访问链为:资源1→资源3→资源2。
在步骤220中,基于第一进程对数据库中多个资源的访问顺序,确定第一资源对集合。
在步骤230中,基于第二进程对数据库中多个资源的访问顺序,确定第二资源对集合。
其中,资源对为按照访问链的顺序,从在先访问的一个资源指向在后访问的一个资源的向量,第一资源对集合为包括多个向量的第一向量集合,第二资源对集合为包括多个向量的第二向量集合。
示例性地,向量(资源1,资源3)就表示该进程是先访问资源1再访问资源3。
基于上文列举的第一进程对多个资源的访问顺序,可以得到第一向量集合为{(资源1,资源3),(资源1,资源2),(资源3,资源2)};基于上文列举的第二进程对多个资源的访问顺序,可以得到第二向量集合为{(资源1,资源2),(资源1,资源3),(资源1,资源4),(资源2,资源3),(资源2,资源4),(资源3,资源4)}。
应理解,向量可以是行向量,或者,列向量,本申请对此不做限定。向量中两个元素的排布顺序可以预先定义,例如,在行向量中可以按从左到右或从右到左的顺序示出依次访问的资源,在列向量中可以按从上到下或从下到上的顺序示出依次访问的资源。
还应理解,向量只是资源对的一种表现形式,还可以是数组、表格等形式,本申请对此不作限定。
在步骤240中,确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁。
示例性地,检测装置可以先从第一资源对集合中取一个资源对,然后遍历第二资源对集合中的资源对,查找第二资源对集合中与该资源对存在资源死锁的资源对。如果查找到了,则输出该结果;如果没有查找到,则不输出结果。接下来,可以从第一资源对集合中取下一个资源对,重复上述步骤,直到将第一资源对集合中的所有资源对被遍历。
应理解,上述实现方式仅为一种示例,比如检测装置也可以先从第二资源对集合中取一个资源,遍历第一资源对集合中的资源对来查找,如此循环,直到第二资源对集合中的所有资源对被遍历。
在一种可能的设计中,可以基于上述的向量来设计乘法运算的规则,当两个向量包括相同的元素,相反的顺序时,则可将二者执行乘法运算的结果定义为目标值。若第一向量集合中的某一向量与第二向量集合中的某一向量的乘法运算结果为该目标值,则该两个向量存在死锁资源,该两个进程为死锁进程。
可选地,步骤240包括:基于预定义的乘法运算的规则、第一向量集合中的多个向量和第二向量集合中的多个向量,得到多个运算结果,每个运算结果由第一向量集合中的一个向量和第二向量集合中的一个向量执行乘法运算得到;基于多个运算结果和预定义的目标值,确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁。
示例性地,预定义的乘法运算的规则为:如果两个向量中的元素相同但顺序相反,则这两个向量的乘法运算结果为1;如果两个向量中的元素相同且顺序相同,或者,两个资源中有任意一个资源不同,则这两个向量的乘法运算结果为不为1,比如为0、-1或者其他值。本申请实施例对此不做限定。
其中,判断第一资源对集合中的资源对与第二资源对集合中的资源对存在资源死锁的预定义的目标值为1。
示例性地,第一向量集合中的(资源3,资源2)与第二向量集合中的(资源2,资源3)的乘法运算为:(资源3,资源2)×(资源2,资源3)=1;第一向量集合中的(资源1,资源3)与第二向量集合中的(资源1,资源3)的乘法运算为:(资源1,资源3)×(资源1,资源3)=0;第一向量集合中的(资源1,资源3)与第二向量集合中的(资源1,资源2)的乘法运算为:(资源1,资源3)×(资源1,资源2)=0。
为方便示出,下面将上述乘法运算结果用表格表示:
应理解,上文示出的乘法运算的运算结果是基于去重处理后的第一进程的访问链确定的第一向量集合而计算得到的。如果没有对第一进程的访问链中的多个第一资源进行去重处理,在第一向量集合中会包括有向量(资源3,资源1),而这个向量本来不应该出现在第一向量集合中。向量(资源3,资源1)会和第二向量集合中的向量(资源1,资源3)产生乘法运算,结果为1,与资源死锁的预定义的目标值相吻合。从而被误识别为产生资源死锁。
应当理解,判断是否存在资源死锁的预定义目标值可以为1和0,或者,也可以为其他数字、字母或符号,本申请对此不做限定。
可选地,该方法还包括:在第一资源对集合中的资源对与第二资源对集合中的资源对存在资源死锁的情况下,输出检测结果,检测结果包括第一进程的标识和第二进程的标识。
为了便于运维人员更快地定位死锁的资源,该检测结果还可进一步包括存在资源死锁的两个资源对。
示例性地,输出检测结果为:
基于输出检测结果,运维人员根据输出的检测结果对资源死锁的情况进行确认、评估及修改。
示例性地,运维人员修改的方式为:调换第一进程中程序1和程序2的执行顺序,使第一进程访问数据库的顺序变为资源1、资源2、资源3;或者使第一进程访问另一个可以替代资源3的资源,如未列出的资源5等。
应理解,运维人员会根据系统的具体情况决定修改的方式,本实施例仅作为示例,不对本申请的方案进行任何限定。
需要说明的是,本申请提供的资源死锁的检测方法可用于金融领域在资源死锁方面的检测,也可用于除金融领域之外任意领域在资源死锁方面的检测,本申请对资源死锁的检测方法和装置的应用领域不做限定。例如,在金融领域中,本申请实施例中的“进程”可以为金融领域的“交易”,“资源”可以为数据库中的“表”。
例如,在本申请实施例中,第一交易可以是第一进程的一例,包括依次执行的程序1和程序2,程序1从数据库中依次访问表1和表3,程序2从数据库中依次访问表1和表2,表1、表2和表3为第一交易在数据库中访问的多个资源,分别为资源1、资源2和资源3的一例;第二交易可以是第二进程的一例,包括依次执行的程序3和程序4,程序3从数据库中依次访问表1和表2,程序4从数据库中依次访问表3和表4,表1、表2、表3和表4为第二交易在数据库中访问的多个资源,分别为资源1、资源2、资源3和资源4的一例。
因此,根据本申请实施例提供的资源死锁的检测方法,可以在系统运行之前基于进程的代码进行静态扫描,以获取每个进程访问资源的顺序,进而将对资源相同、访问顺序相反的两个资源识别出来,提前进行人工处理。因此在系统运行前就可以将死锁进程排除,降低资源死锁的风险,减少可能对系统运行带来不利影响的因素,从而有利于提高系统可靠性。
图3是本申请实施例提供的资源死锁的检测装置的示意性框图。如图3所示,该资源死锁的检测装置300可以包括获取模块310和处理模块320。其中,该获取模块310可用于获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序,第一进程和第二进程为同一系统中的两个进程;该处理模块320可用于基于第一进程对数据库中多个资源的访问顺序,确定第一资源对集合,第一资源对集合包括由第一进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照第一进程的访问顺序排布的两个资源;并用于基于第二进程对数据库中多个资源的访问顺序,确定第二资源对集合,第二资源对集合包括由第二进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照第二进程的访问顺序排布的两个资源;还用于确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁,其中,存在资源死锁的两个资源对包括相同的两个资源,但访问顺序相反。
可选地,获取模块310具体用于,获取第一进程的代码和第二进程的代码;处理模块320具体用于,基于第一进程的代码,获取第一进程对数据库中多个资源的访问顺序;基于第二进程的代码,所述第二进程对数据库中多个资源的访问顺序。
可选地,处理模块320具体用于,基于第一进程的代码确定第一进程的访问链,第一进程的访问链是按照第一进程对数据库中多个资源的访问顺序连接而成的链路,用于指示第一进程访问数据库中多个资源的先后顺序;基于第二进程的代码确定第二进程的访问链,第二进程的访问链是按照第二进程对数据库中多个资源的访问顺序连接而成的链路,用于指示第二进程访问数据库中多个资源的先后顺序。
可选地,第一进程的访问链包括多个第一资源;可选地,处理模块320具体用于,对第一进程的访问链中的多个第一资源进行去重处理,以得到去重后的访问链,去重后的访问链中的资源互不相同,且第一资源在去重后的访问链中的位置根据第一资源在去重前的访问链中首次出现的位置确定。
可选地,资源对为按照访问链的顺序,从在先访问的一个资源指向在后访问的一个资源的向量,第一资源对集合为包括多个向量的第一向量集合,第二资源对集合为包括多个向量的第二向量集合;以及处理模块320具体用于,基于预定义的乘法运算的规则、第一向量集合中的多个向量和第二向量集合中的多个向量,得到多个运算结果,每个运算结果由第一向量集合中的一个向量和第二向量集合中的一个向量执行乘法运算得到;基于多个运算结果和预定义的目标值,确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁。
可选地,该装置300还包括输出模块,用于在第一资源对集合中的资源对与第二资源对集合中的资源对存在资源死锁的情况下,输出检测结果,该检测结果包括第一进程的标识和第二进程的标识。
可选地,该检测结果还包括存在资源死锁的两个资源对。
应理解,本申请中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本申请中的各模块可以集成在一个设备中,也可以是单独物理存在。
图4是本申请实施例提供的资源死锁的检测装置的另一示意性框图。如图4所示,该装置400可以包括至少一个处理器410,用于可用于实现本申请提供的方法中资源死锁检测的功能。具体参见方法示例中的详细描述,此处不做赘述。
该装置400还可以包括一个存储器420,用于存储程序指令和/或数据。存储器420和处理器410耦合。本申请中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器410可能和存储器420协同操作。处理器410可能执行存储器420中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
该装置400还可以包括一个通信接口430,用于通过传输介质和其它设备进行通信,从而用于装置400中的装置可以和其它设备进行通信。所述通信接口430例如可以是收发器、接口、总线、电路或者能够实现收发功能的装置。处理器410可利用通信接口430收发数据和/或信息。
本申请中不限定上述处理器410、存储器420以及通信接口430之间的具体连接介质。本申请在图4中以处理器410、存储器420以及通信接口430之间通过总线440连接。总线440在图4中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
根据本申请提供的方法,本申请还提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该程序代码在计算机上运行时,使得该计算机执行图2所示实施例中资源死锁的检测方法。
根据本申请提供的方法,本申请还提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码。当该计算机程序代码在计算机上运行时,使得该计算机执行图2所示实施例中资源死锁的检测方法。
本申请提供的技术方案可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、终端设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线,例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质例如,数字视频光盘(digital video disc,DVD)、或者半导体介质等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种资源死锁的检测方法,其特征在于,包括:
获取第一进程对数据库中多个资源的访问顺序和第二进程对所述数据库中多个资源的访问顺序,所述第一进程和所述第二进程为同一系统中的两个进程;
基于所述第一进程对所述数据库中多个资源的访问顺序,确定第一资源对集合,所述第一资源对集合包括由所述第一进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照所述第一进程的访问顺序排布的两个资源;
基于所述第二进程对所述数据库中多个资源的访问顺序,确定第二资源对集合,所述第二资源对集合包括由所述第二进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照所述第二进程的访问顺序排布的两个资源;
确定所述第一资源对集合中的资源对是否与所述第二资源对集合中的资源对存在资源死锁,其中,存在资源死锁的两个资源对包括相同的两个资源,但访问顺序相反。
2.如权利要求1所述的方法,所述获取第一进程对数据库中多个资源的访问顺序和第二进程对所述数据库中多个资源的访问顺序,包括:
获取所述第一进程的代码和所述第二进程的代码;
基于所述第一进程的代码,获取所述第一进程对所述数据库中多个资源的访问顺序;
基于所述第二进程的代码,获取所述第二进程对所述数据库中多个资源的访问顺序。
3.如权利要求2所述的方法,所述基于所述第一进程的代码,获取所述第一进程对所述数据库中多个资源的访问顺序,包括:
基于所述第一进程的代码确定所述第一进程的访问链,所述第一进程的访问链是按照所述第一进程对所述数据库中多个资源的访问顺序连接而成的链路,用于指示所述第一进程访问所述数据库中多个资源的先后顺序;以及
所述基于所述第二进程的代码,获取所述第二进程对所述数据库中多个资源的访问顺序,包括:
基于所述第二进程的代码确定所述第二进程的访问链,所述第二进程的访问链是按照所述第二进程对所述数据库中多个资源的访问顺序连接而成的链路,用于指示所述第二进程访问所述数据库中多个资源的先后顺序。
4.如权利要求3所述的方法,所述第一进程的访问链包括多个第一资源;
所述方法还包括:
对所述第一进程的访问链中的多个第一资源进行去重处理,以得到去重后的访问链,所述去重后的访问链中的资源互不相同,且所述第一资源在所述去重后的访问链中的位置根据所述第一资源在去重前的访问链中首次出现的位置确定。
5.如权利要求4所述的方法,所述资源对为按照访问链的顺序,从在先访问的一个资源指向在后访问的一个资源的向量,所述第一资源对集合为包括多个向量的第一向量集合,所述第二资源对集合为包括多个向量的第二向量集合,以及
所述确定所述第一资源对集合中的资源对是否与所述第二资源对集合中的资源对存在资源死锁,包括:
基于预定义的乘法运算的规则、所述第一向量集合中的多个向量和所述第二向量集合中的多个向量,得到多个运算结果,每个运算结果由所述第一向量集合中的一个向量和所述第二向量集合中的一个向量执行乘法运算得到;
基于所述多个运算结果和预定义的目标值,确定所述第一资源对集合中的资源对是否与所述第二资源对集合中的资源对存在资源死锁。
6.如权利要求1至5中任一项所述的方法,所述方法还包括:
在所述第一资源对集合中的资源对与所述第二资源对集合中的资源对存在资源死锁的情况下,输出检测结果,所述检测结果包括所述第一进程的标识和所述第二进程的标识。
7.一种资源死锁的检测装置,其特征在于,包括:
获取模块,用于获取第一进程对数据库中多个资源的访问顺序和第二进程对所述数据库中多个资源的访问顺序,所述第一进程和所述第二进程为同一系统中的两个进程;
处理模块,用于基于所述第一进程对所述数据库中多个资源的访问顺序,确定第一资源对集合,所述第一资源对集合包括由所述第一进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照所述第一进程的访问顺序排布的两个资源;并用于基于所述第二进程对所述数据库中多个资源的访问顺序,确定第二资源对集合,所述第二资源对集合包括由所述第二进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照所述第二进程的访问顺序排布的两个资源;还用于确定所述第一资源对集合中的资源对是否与所述第二资源对集合中的资源对存在资源死锁,其中,存在资源死锁的两个资源对包括相同的两个资源,但访问顺序相反。
8.如权利要求7所述的装置,其特征在于,所述获取模块具体用于获取所述第一进程的代码和所述第二进程的代码;
所述处理模块具体用于:基于所述第一进程的代码,获取所述第一进程对所述数据库中多个资源的访问顺序;基于所述第二进程的代码,获取所述第二进程对所述数据库中多个资源的访问顺序。
9.如权利要求8所述的装置,其特征在于,所述处理模块具体用于:基于所述第一进程的代码确定所述第一进程的访问链,所述第一进程的访问链是按照所述第一进程对所述数据库中多个资源的访问顺序连接而成的链路,用于指示所述第一进程访问所述数据库中多个资源的先后顺序;基于所述第二进程的代码确定所述第二进程的访问链,所述第二进程的访问链是按照所述第二进程对所述数据库中多个资源的访问顺序连接而成的链路,用于指示所述第二进程访问所述数据库中多个资源的先后顺序。
10.如权利要求9所述的装置,其特征在于,所述第一进程的访问链包括多个第一资源;
所述处理模块具体用于对所述第一进程的访问链中的多个第一资源进行去重处理,以得到去重后的访问链,所述去重后的访问链中的资源互不相同,且所述第一资源在所述去重后的访问链中的位置根据所述第一资源在去重前的访问链中首次出现的位置确定。
11.如权利要求10所述的装置,其特征在于,所述资源对为向量,所述第一资源对集合为包括多个向量的第一向量集合,所述第二资源对集合为包括多个向量的第二向量集合,以及
所述处理模块具体用于基于预定义的乘法运算的规则、所述第一向量集合中的多个向量和所述第二向量集合中的多个向量,得到多个运算结果,每个运算结果由所述第一向量集合中的一个向量和所述第二向量集合中的一个向量执行乘法运算得到;基于所述多个运算结果和预定义的目标值,确定所述第一资源对集合中的资源对是否与所述第二资源对集合中的资源对存在资源死锁。
12.如权利要求7至11中任一项所述的装置,其特征在于,所述装置还包括输出模块,用于在所述第一资源对集合中的资源对与所述第二资源对集合中的资源对存在资源死锁的情况下,输出检测结果,所述检测结果包括所述第一进程的标识和所述第二进程的标识。
13.一种资源死锁的检测装置,其特征在于,包括处理器,所述处理器用于执行计算机程序,以实现如权利要求1至6中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,包括计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行权利要求1至6中任一项所述的方法。
15.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序被运行时,使得计算机执行如权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111420320.9A CN113961365A (zh) | 2021-11-26 | 2021-11-26 | 一种资源死锁的检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111420320.9A CN113961365A (zh) | 2021-11-26 | 2021-11-26 | 一种资源死锁的检测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113961365A true CN113961365A (zh) | 2022-01-21 |
Family
ID=79472239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111420320.9A Pending CN113961365A (zh) | 2021-11-26 | 2021-11-26 | 一种资源死锁的检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961365A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115392895A (zh) * | 2022-10-28 | 2022-11-25 | 深圳市小赢信息技术有限责任公司 | 基于热点账户的账户数据处理方法、装置、终端及介质 |
-
2021
- 2021-11-26 CN CN202111420320.9A patent/CN113961365A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115392895A (zh) * | 2022-10-28 | 2022-11-25 | 深圳市小赢信息技术有限责任公司 | 基于热点账户的账户数据处理方法、装置、终端及介质 |
CN115392895B (zh) * | 2022-10-28 | 2023-03-24 | 深圳市小赢信息技术有限责任公司 | 基于热点账户的账户数据处理方法、装置、终端及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200117692A1 (en) | Systems and methods for web analytics testing and web development | |
CN112365987A (zh) | 诊断数据异常检测方法、装置、计算机设备及存储介质 | |
CN107851156B (zh) | 分析方法、分析装置和记录介质 | |
CN109241014B (zh) | 数据处理方法、装置和服务器 | |
CN114066475A (zh) | 基于云支付的信息安全防护方法及服务器 | |
CN112199935A (zh) | 数据的比对方法、装置、电子设备及计算机可读存储介质 | |
CN110688111A (zh) | 业务流程的配置方法、装置、服务器和存储介质 | |
CN113961365A (zh) | 一种资源死锁的检测方法和装置 | |
US20220405184A1 (en) | Method, electronic device, and computer program product for data processing | |
CN116701403A (zh) | 数据库管理方法、装置、电子设备、程序单元以及存储介质 | |
CN117093619A (zh) | 一种规则引擎处理方法、装置、电子设备及存储介质 | |
CN116340172A (zh) | 基于测试场景的数据收集方法、装置及测试用例检测方法 | |
CN114826717B (zh) | 一种异常访问检测方法、装置、电子设备及存储介质 | |
CN116109114A (zh) | 一种常态化政务服务数据处理方法及系统 | |
CN110795308A (zh) | 一种服务器检验方法、装置、设备及存储介质 | |
KR102153674B1 (ko) | Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스 | |
KR102215263B1 (ko) | Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스 | |
CN113157483A (zh) | 一种异常处理方法和装置 | |
CN109634868A (zh) | 金融数据分析系统自动化测试结果的处理方法及装置 | |
CN114499960A (zh) | 一种csrf漏洞识别方法、装置及计算机可读存储介质 | |
US20170132278A1 (en) | Systems and Methods for Inferring Landmark Delimiters for Log Analysis | |
US11430534B2 (en) | Method for testing storage systems, electronic device, and computer program product | |
CN110349025B (zh) | 一种基于未花费交易输出的合约资产防遗失方法及装置 | |
CN118349448A (zh) | 用于对应用程序编程接口进行测试的方法以及系统 | |
CN115563916A (zh) | 一种数字电路的验证方法及其装置 |
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 |