技术新讯 > 计算推算,计数设备的制造及其应用技术 > 句柄告警方法、装置、电子设备、存储介质及程序产品与流程  >  正文

句柄告警方法、装置、电子设备、存储介质及程序产品与流程

  • 国知局
  • 2024-08-05 12:13:58

本公开涉及计算机领域,尤其涉及一种句柄告警方法、装置、电子设备、存储介质及程序产品。

背景技术:

1、在linux系统中,当应用程序打开文件时,内核就会产生一个句柄,用于表示该文件。但是操作系统对单个进程打开的句柄数会做限制(默认为1024,可通过os修改)。当一个进程不断使用句柄但不回收,一旦使用的句柄数量超过限制,就会导致打开或创建文件失败,进而导致该进程对应的业务程序失败。

2、为降低业务程序失败的风险,相关技术通常会对进程的句柄使用情况做监控,具体是在用户态开发程序,不断轮询查看内核接口/proc下所有的进程,再对/proc/pid_xxx/fd目录下的句柄数量做统计。同时,设定一个告警值(比如限制阈值的80%),当统计出某个进程使用的句柄数量超过告警值时,发送告警信息,再由开发人员对进程进行分析,查看句柄耗尽的原因。

3、然而该方案需要在用户态下主动以一定的时间间隔不断轮询/proc下的进程,并且为了保持精准度,两次轮询之间的间隔时间(sleep)往往控制在1秒以内,再加上涉及/proc和/proc/pid_xxx/fd两层轮询,时间复杂度为o(n²),也就是说当系统的进程数n越大时,监控进程的句柄使用情况对cpu的压力会越大(平方数级),造成极大的性能消耗。

技术实现思路

1、本公开提供一种句柄告警方法、装置、电子设备、存储介质及程序产品,以至少解决相关技术如何降低告警产生的性能消耗的问题。

2、根据本公开实施例的第一方面,提供一种句柄告警方法,应用于操作系统的内核态,所述句柄告警方法包括:在为第一用户态进程分配句柄之前,获取当前句柄数,其中,所述当前句柄数表示所述第一用户态进程已经使用的句柄的数量;在确定所述当前句柄数超过告警阈值的情况下,向第二用户态进程发送告警信息,其中,所述告警阈值小于进程最大句柄数量。

3、可选地,所述向第二用户态进程发送告警信息,包括:获取所述第一用户态进程的进程信息;向所述第二用户态进程发送包含所述进程信息的所述告警信息。

4、可选地,所述获取所述第一用户态进程的进程信息,包括:获取所述第一用户态进程的数字标识符、名称、所述当前句柄数、调用栈信息,作为所述进程信息。

5、可选地,获取所述第一用户态进程的所述调用栈信息的操作包括:获取寄存器信息;根据所述寄存器信息,对函数调用栈帧结构执行栈回溯操作,得到所述第一用户态进程的所述调用栈信息。

6、可选地,所述根据所述寄存器信息,对函数调用栈帧结构执行栈回溯操作,得到所述第一用户态进程的所述调用栈信息,包括:根据所述寄存器信息,从所述函数调用栈帧结构中确定当前帧;确定所述当前帧的帧信息以及调用所述当前帧的调用帧;将所述调用帧作为新的当前帧,继续执行所述确定所述当前帧的帧信息以及调用所述当前帧的调用帧的步骤,直到无法确定出新的调用帧;将确定的存在调用关系的各个帧的帧信息,作为所述第一用户态进程的所述调用栈信息。

7、可选地,所述句柄告警方法还包括:与所述第二用户态进程建立双向通信连接;基于所述双向通信连接,接收所述第二用户态进程发送的所述告警阈值。

8、根据本公开实施例的第二方面,提供一种句柄告警装置,应用于操作系统的内核态,所述句柄告警装置包括:获取单元,被配置为在为第一用户态进程分配句柄之前,获取当前句柄数,其中,所述当前句柄数表示所述第一用户态进程已经使用的句柄的数量;告警单元,被配置为在确定所述当前句柄数超过告警阈值的情况下,向第二用户态进程发送告警信息,其中,所述告警阈值小于进程最大句柄数量。

9、可选地,所述告警单元还被配置为:获取所述用户态进程的进程信息;向所述第二用户态进程发送包含所述进程信息的所述告警信息。

10、可选地,所述告警单元还被配置为获取所述第一用户态进程的数字标识符、名称、所述当前句柄数、调用栈信息,作为所述进程信息。

11、可选地,所述告警单元还被配置为:获取寄存器信息;根据所述寄存器信息,对函数调用栈帧结构执行栈回溯操作,得到所述第一用户态进程的所述调用栈信息。

12、可选地,所述告警单元还被配置为:根据所述寄存器信息,从所述函数调用栈帧结构中确定当前帧;确定所述当前帧的帧信息以及调用所述当前帧的调用帧;将所述调用帧作为新的当前帧,继续执行所述确定所述当前帧的帧信息以及调用所述当前帧的调用帧的步骤,直到无法确定出新的调用帧;将确定的存在调用关系的各个帧的帧信息,作为所述第一用户态进程的所述调用栈信息。

13、可选地,所述句柄告警装置还包括:连接单元,被配置为与所述第二用户态进程建立双向通信连接;接收单元,被配置为基于所述双向通信连接,接收所述第二用户态进程发送的所述告警阈值。

14、根据本公开实施例的第三方面,提供了一种电子设备,包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,计算机可执行指令在被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的句柄告警方法。

15、根据本公开实施例的第四方面,提供了一种计算机可读存储介质,计算机可读存储介质中的指令在被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的句柄告警方法。

16、根据本公开实施例的第五方面,提供了一种计算机程序产品,包括计算机指令,计算机指令在被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的句柄告警方法。

17、本公开的实施例提供的技术方案至少带来以下有益效果:根据本公开的句柄告警方法、装置、电子设备、存储介质及程序产品,通过在内核为第一用户态进程分配句柄之前,先直接获取第一用户态进程的当前句柄数,再在确定当前句柄数超过告警阈值时向第二用户态进程告警,能够在正式分配句柄前主动向用户态进程告警,无需在用户态下反复轮询,能够极大地降低性能消耗。

18、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

技术特征:

1.一种句柄告警方法,其特征在于,应用于操作系统的内核态,所述句柄告警方法包括:

2.如权利要求1所述的句柄告警方法,其特征在于,所述向第二用户态进程发送告警信息,包括:

3.如权利要求2所述的句柄告警方法,其特征在于,所述获取所述第一用户态进程的进程信息,包括:

4.如权利要求3所述的句柄告警方法,其特征在于,获取所述第一用户态进程的所述调用栈信息的操作包括:

5.如权利要求4所述的句柄告警方法,其特征在于,所述根据所述寄存器信息,对函数调用栈帧结构执行栈回溯操作,得到所述第一用户态进程的所述调用栈信息,包括:

6.如权利要求1至5中的任一权利要求所述的句柄告警方法,其特征在于,所述句柄告警方法还包括:

7.一种句柄告警装置,其特征在于,应用于操作系统的内核态,所述句柄告警装置包括:

8.一种电子设备,其特征在于,包括:

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中的指令在被至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1至6中任一项所述的句柄告警方法。

10.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令在被至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1至6中的任一权利要求所述的句柄告警方法。

技术总结本公开关于一种句柄告警方法、装置、电子设备、存储介质及程序产品,句柄告警方法应用于操作系统的内核态,句柄告警方法包括:响应于在为第一用户态进程分配句柄之前,获取当前句柄数,其中,当前句柄数表示第一用户态进程已经使用的句柄的数量;确定当前句柄数超过告警阈值的情况下,向第二用户态进程发送告警信息,其中,告警阈值小于进程最大句柄数量。本公开无需在用户态下反复轮询,能够极大地降低性能消耗。技术研发人员:高冲,贾镇源,孟杰,薛皓琳,赵敏敏受保护的技术使用者:统信软件技术有限公司技术研发日:技术公布日:2024/8/1

本文地址:https://www.jishuxx.com/zhuanli/20240802/261689.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。