CN115905137A - 一种文件描述符泄露监控方法、装置、设备及存储介质 - Google Patents
一种文件描述符泄露监控方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115905137A CN115905137A CN202111162046.XA CN202111162046A CN115905137A CN 115905137 A CN115905137 A CN 115905137A CN 202111162046 A CN202111162046 A CN 202111162046A CN 115905137 A CN115905137 A CN 115905137A
- Authority
- CN
- China
- Prior art keywords
- target process
- mode
- file descriptor
- target
- function
- 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
- 238000000034 method Methods 0.000 title claims abstract description 278
- 238000012544 monitoring process Methods 0.000 title claims abstract description 94
- 230000008569 process Effects 0.000 claims abstract description 237
- 230000006870 function Effects 0.000 claims description 103
- 238000004590 computer program Methods 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 18
- 230000000875 corresponding effect Effects 0.000 description 47
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000012806 monitoring device Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 8
- 230000005236 sound signal Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
Images
Classifications
-
- 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
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种文件描述符泄露监控方法、装置、设备及存储介质。在本申请实施例中,可以对需要监控的进程执行文件描述符泄露监控操作,获取当前被监控进程执行文件操作占用的文件描述符的个数,并在该文件描述符的个数超过文件描述符泄露的预设阈值的情况下,根据当前被监控进程对应的具体调用方式,获取当前被监控进程执行文件操作过程中对应的调用栈信息,以得到全面的调用栈信息。基于此,可以准确分析造成当前被监控进程发生文件描述符泄露的原因。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种文件描述符泄露监控方法、装置、设备及存储介质。
背景技术
在Linux操作系统中,为了高效管理进程对文件执行打开或关闭的操作,内核以文件描述符(File Descriptor,fd)作为索引,用来唯一标识已经打开的文件。进程每打开一个文件,系统就会为其分配一个fd与其对应,进程可以用fd访问到对应的文件;当进程关闭已打开的文件时,系统会释放与其对应的fd,以便进程下次打开文件时有可用的fd。
在实际使用中,系统允许进程占用的fd具有上限值,例如通常为1024个,如果进程打开的文件数量较多或者在关闭文件后没有及时释放对应的fd,导致可用fd数量的不足,此时系统就会报错,甚至造成进程所属应用程序崩溃,导致应用程序在运行过程中被强制退出,影响应用程序运行的稳定性,这种现象被称为fd泄露。
在现有技术中,通常会追踪进程执行文件操作时生成的调用栈信息,根据调用栈信息分析造成fd泄露的原因。然而,在实际应用场景中,获取到的调用栈信息并不全面,基于此分析造成fd泄露的原因不够准确。
发明内容
本申请的多个方面提供一种文件描述符泄露监控方法、装置、设备及存储介质,用以根据进程对应的具体调用方式获取进程执行文件操作对应的调用栈信息,以得到全面的调用栈信息,准确分析造成文件描述符泄露的原因。
本申请实施例提供一种文件描述符泄露监控方法,包括:获取待监控的目标进程;在系统中为所述目标进程注册目标函数及其对应的标识信号,所述目标函数用于在用户态调用方式下为所述目标进程生成第一调用栈信息;若所述目标进程占用的文件描述符个数大于预设阈值且对所述目标进程的调用方式为用户态调用方式,将所述标识信号发送给所述目标进程,以控制所述目标进程执行所述目标函数并返回所述目标函数生成的第一调用栈信息。
在一可选实施例中,在确定所述目标进程占用的文件描述符个数是否大于预设阈值之前,还包括:在所述目标进程执行文件操作过程中,按照设定监控时段周期性统计所述目标进程占用的文件描述符的个数。
在一可选实施例中,还包括:在系统中的文件描述符申请函数和文件描述符释放函数中分别添加监控状态使能标志,并将所述监控状态使能标志初始化为非使能状态;以及在所述个数大于预设阈值的情况下,将所述监控状态使能标志设置为使能状态,以允许针对所述目标进程执行文件描述符泄露监控操作。
在一可选实施例中,还包括:在所述个数从大于预设阈值变为小于或等于预设阈值的情况下,将所述监控状态使能标志重新设置为非使能状态。
在一可选实施例中,对所述目标进程的调用方式还包括内核态调用方式,所述方法还包括:若所述个数大于预设阈值且对所述目标进程的调用方式为内核态调用方式,获取所述目标进程在内核态调用方式下执行所述文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息。
在一可选实施例中,在获取所述目标进程在内核态调用方式下执行所述文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息之前,还包括:若所述监控状态使能标志为使能状态,判断当前执行所述文件描述符申请函数和文件描述符释放函数的进程是否为目标进程;若是,则判断当前对所述目标进程的调用方式是否为内核态调用方式,并在判断结果为是的情况下,执行获取所述目标进程在内核态调用方式下执行所述文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息的操作。
在一可选实施例中,还包括:在所述目标进程被释放的情况下,将所述目标函数和标识信号从所述系统中注销。
在一可选实施例中,还包括:根据所述第一调用栈信息和/或所述第二调用栈信息,分析造成所述目标进程出现文件描述符泄露的原因。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被处理器执行时,致使所述处理器实现方法实施例中的各步骤。
在本申请实施例中,可以对需要监控的进程执行文件描述符泄露监控操作,获取当前被监控进程执行文件操作占用的文件描述符的个数,并在该文件描述符的个数超过文件描述符泄露的预设阈值的情况下,根据当前被监控进程对应的具体调用方式,获取当前被监控进程执行文件操作过程中对应的调用栈信息,以得到全面的调用栈信息。基于此,可以准确分析造成当前被监控进程发生文件描述符泄露的原因。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种文件描述符泄露监控方法的流程图;
图2为本申请实施例提供的一种文件描述符泄露监控设备的结构示意图;
图3为本申请实施例提供的一种文件描述符泄露监控装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在Linux或Unix操作系统中,一切皆可以看成是文件,例如普通文件、目录、链接和设备均被视为一个文件。内核利用文件描述符(File Descriptor,fd)来访问文件,应用程序每次打开或者创建一个文件,内核都会返回一个非负整数作为与该文件相对应的文件描述符,使得在读写文件时可以根据内核返回的文件描述符来指定待读写的文件。可以理解为,文件描述符是内核为了高效管理进程打开的文件所创建的非负整数索引。
然而,文件描述符的数量是有限的,系统中可占用的文件描述符个数与系统内存大小相关,受硬件性能影响。因此,在文件调用结束后需要关闭其对应的文件描述符,使该文件描述符对应的数字被系统回收,并且在下一次打开或创建文件时被重新利用。若在文件调用结束后没有及时关闭其对应的文件描述符,造成文件描述符不够用,会使应用程序无法打开或者创建新的文件,影响系统的运行甚至会造成系统崩溃。通常,将这种文件没有及时关闭反而持续占用文件描述符的现象叫文件描述符泄露。
本申请实施例提供一种文件描述符泄露监控方法,用以对执行进程进行监控,并在确定当前被监控进程存在文件描述符泄露风险或者已经发生文件描述符泄露的情况下,根据当前被监控进程对应的具体调用方式获取当前被监控进程执行文件操作对应的调用栈信息,以根据调用栈信息分析造成文件描述符泄露的原因。
图1为本申请实施例提供的文件描述符泄露监控方法的流程图,如图1所示,方法包括:
S1、获取待监控的目标进程;
S2、在系统中为目标进程注册目标函数及其对应的标识信号,目标函数用于在用户态调用方式下为目标进程生成第一调用栈信息;
S3、若目标进程占用的文件描述符个数大于预设阈值且对目标进程的调用方式为用户态调用方式,将标识信号发送给目标进程,以控制目标进程执行目标函数并返回目标函数生成的第一调用栈信息。
在本申请实施例中,可以根据业务需求对指定的进程执行文件描述符泄露监控操作,也可以对系统中的所有进程执行文件描述符泄露监控操作,在此不做限定。进一步,在被监控的进程为指定进程的情况下,被监控的进程可以是用于执行主要业务功能的进程,也可以是执行频率较高的进程,在此不做限定。基于此,在需要执行文件描述符泄露监控的情况下,可以获取需要监控是否存在文件描述符泄露风险的进程标识,可选地,可以接收用户态或内核态发起的监控请求,该请求中可包括需要监控的进程标识。
在获取到需要监控的进程标识的情况下,可根据该进程标识确定待监控的目标进程,并在系统中为目标进程注册目标函数及其对应的标识信号。由于进程在用户态调用方式下执行文件打开或关闭操作过程中不会生成对应的调用栈信息,本申请实施例中的目标函数用于在用户态调用方式下为目标进程生成对应的第一调用栈信息,以在确定目标进程存在文件描述符泄露风险的情况下,利用目标函数生成的第一调用栈信息,定位目标进程在执行文件操作过程中可能造成文件描述符泄露的泄漏点。进一步可选地,在目标进程被释放的情况下,还可以将目标函数和标识信号从系统中注销。
由于每个进程都有其对应的文件描述符列表,文件描述符列表中记录有对应进程当前打开的所有文件,且每个文件对应一个文件描述符。基于此,在确定对目标进程执行文件描述符泄露监控的情况下,可以在目标进程执行文件操作过程中,按照设定监控时段统计目标进程占用的文件描述符的个数,并根据统计的个数确定目标进程是否存在文件描述符泄露风险或已经发生文件描述符泄露。可选地,可对每个需要监控的进程设置其对应的预设阈值,该预设阈值可以用于衡量当前被监控的进程是否存在文件描述符泄露风险,或者,用于衡量当前被监控的进程是否已经发生文件描述符泄露。
例如,进程允许占用的文件描述符个数通常最多为1024个,若进程当前占用的文件描述符个数超过600,可视为存在发生文件描述符泄露风险,则可将预设阈值设置为600,用于衡量当前被监控的进程是否存在文件描述符泄露风险;若进程当前占用的文件描述符个数超过800,可视为已经发生文件描述符泄露,则可将预设阈值设置为800,用于衡量当前被监控的进程是否已经发生文件描述符泄露。对于预设阈值的设置方式,在此不做限定,可以根据实际需求确定;另外,对于预设阈值的具体取值,也不做限定,上述仅为示例性说明,并不限于此。
进一步,在获取到目标进程占用的文件描述符个数的情况下,可将获取的文件描述符个数与预设阈值作比较,在文件描述符个数大于预设阈值且在对目标进程的调用方式为用户态调用方式的情况下,可以将在系统中注册的标识信号发送给目标进程,以控制目标进程根据该信号标识执行与标识信号对应的目标函数,生成目标进程执行文件操作对应的调用栈信息,进一步,还可以接收目标进程返回的目标函数生成的第一调用栈信息,以根据接收到的第一调用栈信息分析目标进程在设定监控时段内执行文件操作发生文件描述符泄露的原因,进而做出相应的进行处理,解决文件描述符泄露问题。
在本申请可选实施例中,在需要执行文件描述符泄露监控的情况下,还可以在系统中的文件描述符申请函数和文件描述符释放函数中分别添加监控状态使能标志,用于根据各进程的监控需求灵活启动或结束对各进程的文件描述符泄露监控操作。可选地,在添加监控状态使能标志的情况下,可将监控状态使能标志初始化为非使能状态,表示默认不启动文件描述符泄露监控操作。进一步,在确定目标进程占用的文件描述符个数大于预设阈值的情况下,可将监控状态使能标志设置为使能状态,以允许针对目标进程执行文件描述符泄露监控操作。
在本申请实施例中,不限定监控状态使能标志的实现形式。例如,监控状态使能标志可以为数值类型,可选地,在监控状态使能标志的值为0的情况下,可以表示为非使能状态;在监控状态使能标志的值为1的情况下,可以表示为使能状态。又例如,监控状态使能标志可以为布尔类型,可选地,在监控状态使能标志的值为false的情况下,可以表示为非使能状态;在监控状态使能标志的值为true的情况下,可以表示为使能状态。又例如,监控状态使能标志还可以为字符类型,可选地,在监控状态使能标志的值为‘N’的情况下,可以表示为非使能状态;在监控状态使能标志的值为‘Y’的情况下,可以表示为使能状态。具体采用哪种类型以及对应的具体取值,可根据实际需求确定,上述仅为示例性说明。
基于此,在监控状态使能标志为使能状态的情况下,本申请实施例在目标进程执行文件操作过程中,可以按照设定监控时周期性统计目标进程占用的文件描述符的个数,在确定文件描述符的个数大于预设阈值的情况下,获取目标进程对应的调用栈信息,并继续监控目标进程占用的文件描述符的个数。进一步,在监控到目标进程占用的文件描述符的个数从大于预设阈值变为小于或等于预设阈值的情况下,说明目标进程已经不存在文件描述符泄露的风险,此时,可以将监控状态使能标志重新设置为非使能状态,以结束对目标进程执行的文件描述符泄露监控操作。
在实际应用中,进程在预设时段内执行文件操作的过程中,其被调用的方式可能是用户态调用方式,也可能是内核态调用方式,还可能在预设时段内既有用户态调用方式又有内核态调用方式;例如,预设时段为5分钟,目标进程在前2分钟内由用户态调用,而在后3分钟内由内核态调用。在内核态调用方式下,进程在执行文件操作过程中,系统会根据文件描述符申请函数和文件描述符释放函数被执行的过程,自动生成进程对应的调用栈信息。
基于此,在本申请可选实施例中,在设定监控时段内对目标进程执行监控操作的过程中,若对目标进程的调用方式还包括内核态调用方式,则在确定目标进程占用的文件描述符的个数大于预设阈值且在对目标进程的调用方式为内核态调用方式的情况下,可以获取目标进程在内核态调用方式下执行文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息,并根据在设定监控时段内的第一调用栈信息和第二调用栈信息,分析目标进程在设定监控时段内执行文件操作发生文件描述符泄露的原因,进而执行处理,解决文件描述符泄露问题。
在本申请可选实施例中,在获取调用栈信息之前,还可以判断监控状态使能标志是否为使能状态;若是,说明当有需要被监控的进程,则进一步判断当前执行文件描述符申请函数和文件描述符释放函数的进程是否为目标进程。可选地,可以获取当前执行文件描述符申请函数和文件描述符释放函数的进程标识,根据该进程标识与目标进程标识比较,若确定当前执行文件描述符申请函数和文件描述符释放函数的进程是目标进程,则获取目标进程对应的调用栈信息。
由于进程在用户态调用方式下执行文件操作并不会生成对应的调用栈信息,而进程在内核态调用方式下会生成对应的调用栈信息,则在获取目标进程对应的调用栈信息之前,需要根据目标进程对应的调用方式确定获取调用栈信息的具体方式。可选地,若判断当前对目标进程的调用方式为内核态调用方式,则执行获取目标进程在内核态调用方式下执行文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息的操作;若判断当前对目标进程的调用方式为用户态调用方式,则按照上述实施例中的方式,获取目标进程对应的目标函数生成的第一调用栈信息。
进一步,在获取到目标进程对应的调用栈信息的情况下,可将获取到的调用栈信息输出至系统维护人员对应的设备,以供系统维护人员根据调用栈信息确定在设定监控时段内,目标进程打开哪些文件和关闭哪些文件,从而确定哪些文件一直被打开,对这些没有关闭的文件执行操作的代码,可能就是造成文件描述符泄露的原因。基于此,可对相关代码进行排查,确定造成文件描述符泄露的具体原因并对其进行修改,避免造成系统崩溃或影响应用程序运行的稳定性。
在本申请实施例中,不限定系统维护人对应的设备的实现形态,在一可选实施例中,系统维护人对应的设备可以是计算机设备,也可以是终端设备;可选地,终端设备可以是手机或平板电脑等智能设备。进一步可选地,在获取到第一进程对应的调用栈信息的情况下,还可根据调用栈信息确定一直被打开的文件,并控制第一进程停止对这些文件的操作,以保证系统的安全以及应用程序的稳定。当然,还可以根据获取到的调用栈信息执行其他操作,在此不做限定,上述仅为示例性说明。
在本申请实施例中,可以在设定监控时段内对需要监控的进程周期性执行文件描述符泄露监控操作,获取当前被监控进程执行文件操作占用的文件描述符的个数,并在该文件描述符的个数超过可能造成文件描述符泄露的预设阈值的情况下,根据当前被监控进程对应的具体调用方式,获取当前被监控进程在用户态调用方式和/或内核态调用方式下执行文件操作过程中对应的调用栈信息,以得到全面的调用栈信息。基于此,可以准确分析当前被监控进程在设定监控时段内的发生文件描述符的原因。
关于上述方法实现过程的具体细节可参见上述系统方法实施例,在此不做赘述。需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤S1至步骤S3的执行主体可以为设备A;又比如,步骤S1至步骤S2的执行主体可以为设备A,步骤S3的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如S1、S2等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本申请实施例还提供了一种文件描述符泄露监控设备,图2为本申请实施例的文件描述符泄露监控设备的结构示意图,如图2所示,文件描述符泄露监控设备包括:处理器21以及存储有计算机程序的存储器22。其中,处理器21和存储器22可以是一个或多个。存储器22,主要用于存储计算机程序,这些计算机程序可被处理器执行,致使处理器控制文件描述符泄露监控设备实现相应功能、完成相应动作或任务。除了存储计算机程序之外,存储器还可被配置为存储其它各种数据以支持在文件描述符泄露监控设备上的操作,这些数据的示例包括用于在文件描述符泄露监控设备上操作的任何应用程序或方法的指令。
存储器22,可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请实施例中,并不限定处理器21的实现形态,例如可以是但不限于CPU、GPU或MCU等。处理器21可以看作是文件描述符泄露监控设备的控制系统,可用于执行存储器22中存储的计算机程序,以控制文件描述符泄露监控设备实现相应功能、完成相应动作或任务。值得说明的是,根据文件描述符泄露监控设备实现形态以及所处于场景的不同,其所需实现的功能、完成的动作或任务会有所不同;相应地,存储器22中存储的计算机程序也会有所不同,而处理器21执行不同计算机程序可控制文件描述符泄露监控设备实现不同的功能、完成不同的动作或任务。
在一些可选实施例中,如图2所示,文件描述符泄露监控设备还可以包括:通信组件23、显示器24以及电源组件25等其它组件。图2中仅示意性给出部分组件,并不意味着文件描述符泄露监控设备只包括图2所示组件,针对不同的应用需求,文件描述符泄露监控设备还可以包括其他组件,具体可视文件描述符泄露监控设备的产品形态而定。
在本申请实施例中,不限定文件描述符泄露监控设备的使用场景和实现形态,在不同的使用场景中,文件描述符泄露监控设备的实现形态也可能不同,例如,在车辆使用场景中,车辆中的车载设备能够多个进程,每个进程在执行具体的任务时需要打开对应的文件,例如进程需要显示图片时,可以打开图片文件进行显示。相应地,在该场景下,文件描述符泄露监控设备可以为车载设备中的一种,其可以对自身运行的进程执行文件描述符泄露监控操作,也可对车辆上的其他车载设备执行文件描述符泄露监控操作,在此不做限定。
在本申请实施例中,当处理器21执行存储器22中的计算机程序时,以用于:获取待监控的目标进程;在系统中为目标进程注册目标函数及其对应的标识信号,目标函数用于在用户态调用方式下为目标进程生成第一调用栈信息;若目标进程占用的文件描述符个数大于预设阈值且对目标进程的调用方式为用户态调用方式,将标识信号发送给目标进程,以控制目标进程执行目标函数并返回目标函数生成的第一调用栈信息。
在一可选实施例中,处理器21在确定目标进程占用的文件描述符个数是否大于预设阈值之前,还用于:在目标进程执行文件操作过程中,按照设定监控时段周期性统计目标进程占用的文件描述符的个数。
在一可选实施例中,处理器21还用于:在系统中的文件描述符申请函数和文件描述符释放函数中分别添加监控状态使能标志,并将监控状态使能标志初始化为非使能状态;以及在个数大于预设阈值的情况下,将监控状态使能标志设置为使能状态,以允许针对目标进程执行文件描述符泄露监控操作。
在一可选实施例中,处理器21还用于:在个数从大于预设阈值变为小于或等于预设阈值的情况下,将监控状态使能标志重新设置为非使能状态。
在一可选实施例中,对目标进程的调用方式还包括内核态调用方式,若个数大于预设阈值且对目标进程的调用方式为内核态调用方式,处理器21还用于获取目标进程在内核态调用方式下执行文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息。
在一可选实施例中,处理器21在获取目标进程在内核态调用方式下执行文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息之前,还用于:若监控状态使能标志为使能状态,判断当前执行文件描述符申请函数和文件描述符释放函数的进程是否为目标进程;若是,则判断当前对目标进程的调用方式是否为内核态调用方式,并在判断结果为是的情况下,执行获取目标进程在内核态调用方式下执行文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息的操作。
在一可选实施例中,处理器21还用于:在目标进程被释放的情况下,将目标函数和标识信号从系统中注销。
在一可选实施例中,处理器21在还用于:根据第一调用栈信息和/或第二调用栈信息,分析造成目标进程出现文件描述符泄露的原因。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可文件描述符泄露监控设备执行的各步骤。
本申请实施例还提供一种文件描述符泄露监控装置。例如该处理装置可实现为通信控制器(Communication Control Unit,CCU)中的虚拟装置,例如应用程序。如图3所示,该文件描述符泄露监控装置包括:
获取模块301:用于获取待监控的目标进程;
第一处理模块302:用于在系统中为目标进程注册目标函数及其对应的标识信号,目标函数用于在用户态调用方式下为目标进程生成第一调用栈信息;
第二处理模块302:若目标进程占用的文件描述符个数大于预设阈值且对目标进程的调用方式为用户态调用方式,用于将标识信号发送给目标进程,以控制目标进程执行目标函数并返回目标函数生成的第一调用栈信息。
在一可选实施例中,第二处理模块302在确定目标进程占用的文件描述符个数是否大于预设阈值之前,还用于:在目标进程执行文件操作过程中,按照设定监控时段周期性统计目标进程占用的文件描述符的个数。
在一可选实施例中,第二处理模块302还用于:在系统中的文件描述符申请函数和文件描述符释放函数中分别添加监控状态使能标志,并将监控状态使能标志初始化为非使能状态;以及在个数大于预设阈值的情况下,将监控状态使能标志设置为使能状态,以允许针对目标进程执行文件描述符泄露监控操作。
在一可选实施例中,第二处理模块302还用于:在个数从大于预设阈值变为小于或等于预设阈值的情况下,将监控状态使能标志重新设置为非使能状态。
在一可选实施例中,对目标进程的调用方式还包括内核态调用方式,若个数大于预设阈值且对目标进程的调用方式为内核态调用方式,第二处理模块302还用于获取目标进程在内核态调用方式下执行文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息。
在一可选实施例中,第二处理模块302在获取目标进程在内核态调用方式下执行文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息之前,还用于:若监控状态使能标志为使能状态,判断当前执行文件描述符申请函数和文件描述符释放函数的进程是否为目标进程;若是,则判断当前对目标进程的调用方式是否为内核态调用方式,并在判断结果为是的情况下,执行获取目标进程在内核态调用方式下执行文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息的操作。
在一可选实施例中,第二处理模块302还用于:在目标进程被释放的情况下,将目标函数和标识信号从系统中注销。
在一可选实施例中,第二处理模块302在还用于:根据第一调用栈信息和/或第二调用栈信息,分析造成目标进程出现文件描述符泄露的原因。
上述实施例中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述实施例中的显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
上述实施例中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述实施例中的音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种文件描述符泄露监控方法,其特征在于,包括:
获取待监控的目标进程;
在系统中为所述目标进程注册目标函数及其对应的标识信号,所述目标函数用于在用户态调用方式下为所述目标进程生成第一调用栈信息;
若所述目标进程占用的文件描述符个数大于预设阈值且对所述目标进程的调用方式为用户态调用方式,将所述标识信号发送给所述目标进程,以控制所述目标进程执行所述目标函数并返回所述目标函数生成的第一调用栈信息。
2.根据权利要求1所述的方法,其特征在于,还包括:
在系统中的文件描述符申请函数和文件描述符释放函数中分别添加监控状态使能标志,并将所述监控状态使能标志初始化为非使能状态;以及
在所述个数大于预设阈值的情况下,将所述监控状态使能标志设置为使能状态,以允许针对所述目标进程执行文件描述符泄露监控操作。
3.根据权利要求2所述的方法,其特征在于,还包括:
在所述个数从大于预设阈值变为小于或等于预设阈值的情况下,将所述监控状态使能标志重新设置为非使能状态。
4.根据权利要求2或3所述的方法,其特征在于,对所述目标进程的调用方式还包括内核态调用方式,所述方法还包括:
若所述个数大于预设阈值且对所述目标进程的调用方式为内核态调用方式,获取所述目标进程在内核态调用方式下执行所述文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息。
5.根据权利要求4所述的方法,其特征在于,在获取所述目标进程在内核态调用方式下执行所述文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息之前,还包括:
若所述监控状态使能标志为使能状态,判断当前执行所述文件描述符申请函数和文件描述符释放函数的进程是否为目标进程;
若是,则判断当前对所述目标进程的调用方式是否为内核态调用方式,并在判断结果为是的情况下,执行获取所述目标进程在内核态调用方式下执行所述文件描述符申请函数和文件描述符释放函数时产生的第二调用栈信息的操作。
6.根据权利要求1-5任一项所述的方法,其特征在于,还包括:
在所述目标进程被释放的情况下,将所述目标函数和标识信号从所述系统中注销。
7.根据权利要求1-5任一项所述的方法,其特征在于,还包括:
根据所述第一调用栈信息和/或所述第二调用栈信息,分析造成所述目标进程出现文件描述符泄露的原因。
8.一种文件描述符泄露监控装置,其特征在于,包括:
获取模块:用于获取待监控的目标进程;
第一处理模块:用于在系统中为所述目标进程注册目标函数及其对应的标识信号,所述目标函数用于在用户态调用方式下为所述目标进程生成第一调用栈信息;
第二处理模块:若所述目标进程占用的文件描述符个数大于预设阈值且对所述目标进程的调用方式为用户态调用方式,用于将所述标识信号发送给所述目标进程,以控制所述目标进程执行所述目标函数并返回所述目标函数生成的第一调用栈信息。
9.一种文件描述符泄露监控设备,其特征在于,包括:处理器以及存储有计算机程序的存储器;
所述处理器,用于执行所述计算机程序,以用于:
获取待监控的目标进程;
在系统中为所述目标进程注册目标函数及其对应的标识信号,所述目标函数用于在用户态调用方式下为所述目标进程生成第一调用栈信息;
若所述目标进程占用的文件描述符个数大于预设阈值且对所述目标进程的调用方式为用户态调用方式,将所述标识信号发送给所述目标进程,以控制所述目标进程执行所述目标函数并返回所述目标函数生成的第一调用栈信息。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被执行时,实现权利要求1-8任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111162046.XA CN115905137A (zh) | 2021-09-30 | 2021-09-30 | 一种文件描述符泄露监控方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111162046.XA CN115905137A (zh) | 2021-09-30 | 2021-09-30 | 一种文件描述符泄露监控方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115905137A true CN115905137A (zh) | 2023-04-04 |
Family
ID=86482833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111162046.XA Pending CN115905137A (zh) | 2021-09-30 | 2021-09-30 | 一种文件描述符泄露监控方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115905137A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117195204A (zh) * | 2023-11-01 | 2023-12-08 | 建信金融科技有限责任公司 | 异常数据检测方法、装置、电子设备及计算机可读介质 |
-
2021
- 2021-09-30 CN CN202111162046.XA patent/CN115905137A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117195204A (zh) * | 2023-11-01 | 2023-12-08 | 建信金融科技有限责任公司 | 异常数据检测方法、装置、电子设备及计算机可读介质 |
CN117195204B (zh) * | 2023-11-01 | 2024-02-13 | 建信金融科技有限责任公司 | 异常数据检测方法、装置、电子设备及计算机可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038107B (zh) | 一种获取应用卡顿信息的方法及装置 | |
CN107948744B (zh) | 接口检测方法、接口检测设备及计算机可读存储介质 | |
CN107423213B (zh) | 一种文件描述符分配检测方法和装置 | |
CN107645546B (zh) | 基于安卓系统的文件监听方法、智能设备及存储介质 | |
CN111625383B (zh) | 进程异常事件处理方法、装置、电子设备及存储介质 | |
CN112445686A (zh) | 内存泄漏检测方法、装置以及计算机可读存储介质 | |
CN115185777A (zh) | 一种异常检测方法、装置、可读存储介质以及电子设备 | |
CN114415973A (zh) | 慢盘检测方法、装置、电子设备及存储介质 | |
CN115905137A (zh) | 一种文件描述符泄露监控方法、装置、设备及存储介质 | |
CN109815695A (zh) | 进程安全的检测方法、装置及设备 | |
US20240152439A1 (en) | Detection Method and Electronic Device | |
CN114356434A (zh) | 页面加载方法、设备、装置、存储介质及程序产品 | |
CN112241362A (zh) | 一种测试方法、装置、服务器及存储介质 | |
CN104063288A (zh) | 进程管理方法及装置 | |
CN112989323B (zh) | 进程检测方法、装置、终端及存储介质 | |
CN110888822B (zh) | 内存处理方法、装置及存储介质 | |
US20230195891A1 (en) | Resource monitoring device and method using hardware abstraction layer | |
CN110069922A (zh) | 一种系统界面劫持检测方法、装置及终端 | |
CN113961427A (zh) | 系统内存分析的方法及电子设备 | |
CN113806183A (zh) | 应用卡顿处理方法、装置、设备、存储介质和程序产品 | |
CN103777933A (zh) | 显示进程信息的方法及装置 | |
CN113485846A (zh) | 一种内存处理方法及装置 | |
CN110908866A (zh) | 软件监控方法及相关设备 | |
CN117667604B (zh) | 追踪事件的数据监测方法、装置、电子设备及存储介质 | |
CN104850551A (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 |