线程池监控方法、装置、电子设备及存储介质制造方法及图纸

技术编号:37334168 阅读:13 留言:0更新日期:2023-04-21 23:12
本申请实施例提供一种线程池监控方法、装置、电子设备及存储介质;该方法包括:对于预置的多个线程池中的每一个,确定该线程池的执行类,并确定执行类的执行类字节码文件;在执行类字节码文件中构建数据采集逻辑,并在执行类字节码文件中设置拦截器,得到增强后的执行类字节码文件,将增强后的执行类字节码文件通过预置的探针加载到预置的程序虚拟机;响应于程序虚拟机为线程池创建实例对象,将增强后的执行类字节码文件注入至实例对象;响应于通过拦截器拦截到程序虚拟机运行实例对象,利用数据采集逻辑采集实例对象对应的线程池运行时的数据,以对线程池的运行状态进行监控。以对线程池的运行状态进行监控。以对线程池的运行状态进行监控。

【技术实现步骤摘要】
线程池监控方法、装置、电子设备及存储介质


[0001]本申请实施例涉及系统监控的
,尤其涉及线程池监控方法、装置、电子设备及存储介质。

技术介绍

[0002]在相关的线程池的监控技术中,需要对线程池及其所运行的应用程序本身进行一定程度上的修改,才能够对线程池进行监控。
[0003]进一步地,对线程池及其应用程序进行修改而非程序外包的方式,不仅将导致对线程池的监控手段十分繁琐且不灵活,还导致用户的使用应用程序时的体验较差。
[0004]基于此,需要一种能够实现避免通过修改来进行监控的方案。

技术实现思路

[0005]有鉴于此,本申请实施例提供了一种线程池监控方法、装置、电子设备及存储介质,以解决对线程池及其应用程序进行修改才能进行监控的问题。
[0006]基于上述目的,本申请实施例提供了一种线程池监控方法,包括:
[0007]对于预置的多个线程池中的每一个,确定该线程池的执行类,并确定所述执行类的执行类字节码文件;
[0008]在所述执行类字节码文件中构建数据采集逻辑,并在所述执行类字节码文件中设置拦截器,得到增强后的执行类字节码文件,将所述增强后的执行类字节码文件通过预置的探针加载到预置的程序虚拟机;
[0009]响应于所述程序虚拟机为所述线程池创建实例对象,将所述增强后的执行类字节码文件注入至所述实例对象;
[0010]响应于通过所述拦截器拦截到所述程序虚拟机运行所述实例对象,利用所述数据采集逻辑采集所述实例对象对应的所述线程池运行时的数据,以对所述线程池的运行状态进行监控。
[0011]进一步地,在所述执行类字节码文件中构建数据采集逻辑,包括:
[0012]构建采集所述线程池的注册信息的第一采集字段;
[0013]构建采集所述线程池的运行信息的第二采集字段;
[0014]将所述第一采集字段和所述第二采集字段嵌入至所述执行类字节码文件内。
[0015]进一步地,将所述第一采集字段和所述第二采集字段嵌入至所述执行类字节码文件内,包括:
[0016]在所述执行类中定义所述第一采集字段和所述第二采集字段;
[0017]将所述第一采集字段和所述第二采集字段作为所述执行类的对象,并在所述执行类字节码文件中进行定义;
[0018]利用所述构造器对定义后的所述第一采集字段和所述第二采集字段进行初始化。
[0019]进一步地,程序虚拟机为所述线程池创建实例对象,将所述增强后的执行类字节
码文件注入至所述实例对象,包括:
[0020]通过预设的线程池管理程序,将所述多个线程池中的每一个进行实例化,得到该线程池的实例对象;
[0021]将全部所述多个线程池各自的实例对象组成线程池实例集合;
[0022]遍历所述线程池实例集合中的各个实例对象,将所述执行类字节码文件注入至运行所述各个实例对象的各个线程池。
[0023]进一步地,利用所述数据采集逻辑采集所述实例对象对应的所述线程池运行时的数据,包括:
[0024]利用所述第一采集字段,采集所述线程池的所述注册信息;
[0025]利用所述第二采集字段,采集所述线程池的所述运行信息;
[0026]根据采集到的所述注册信息和所述运行信息,判断所述线程池的运行状态是否正常。
[0027]进一步地,采集所述线程池的所述注册信息,包括:
[0028]确定所述线程池的注册标识;
[0029]采集所述线程池中常驻的线程的核心线程数量;
[0030]采集所述线程池容纳线程的最大线程数量;
[0031]确定所述线程池中线程在阻塞时的阻塞队列类型;
[0032]对于发给所述线程池的任务,采集所述线程池运行时容纳所述任务的队列容量;
[0033]为所述线程池创建堆栈,并将所述注册标识、所述核心线程数量、所述最大线程数量、所述阻塞队列类型和所述队列容量插入至所述堆栈。
[0034]进一步地,采集所述线程池的所述运行信息,
[0035]按照预定的时间间隔,执行操作:
[0036]采集所述线程池当前活跃的线程的数量;
[0037]采集所述线程池当前全部的线程的数量;
[0038]采集所述线程池容纳线程的最大线程数量;
[0039]在发给所述线程池的任务中,采集所述线程池拒绝的任务的数量;
[0040]将所述当前活跃的线程的数量、所述当前全部的线程的数量、所述最大线程数量和拒绝的任务的数量构成时序数据。
[0041]本申请实施例还提供了一种线程池监控装置,包括:执行类字节码文件确定模块、数据采集逻辑设置模块、实例对象处理模块和采集模块;
[0042]其中,所述执行类字节码文件确定模块,被配置为,对于预置的多个线程池中的每一5个,确定该线程池的执行类,并确定所述执行类的执行类字节码文件;
[0043]所述数据采集逻辑设置模块,被配置为,在所述执行类字节码文件中构建数据采集逻辑,并在所述执行类字节码文件中设置拦截器,得到增强后的执行类字节码文件,将所述增强后的执行类字节码文件通过预置的探针加载到预置的程序虚拟机;
[0044]所述实例对象处理模块,被配置为,响应于所述程序虚拟机为所述线程池创建实例对0象,将所述增强后的执行类字节码文件注入至所述实例对象;
[0045]所述采集模块,被配置为,响应于通过所述拦截器拦截到所述程序虚拟机运行所述实例对象,利用所述数据采集逻辑采集所述实例对象对应的所述线程池运行时的数据,
以对所述线程池的运行状态进行监控。
[0046]本申请实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在5处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任意一项所述的线程池
[0047]监控方法。
[0048]本申请实施例还提供了一种非暂态计算机可读存储介质,其中,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上述线程池监控方法。
[0049]0本申请实施例中提供的一个或多个技术方案,通过对线程池的执行类注入数据采集逻
[0050]辑,来实现对执行类的增强,也就是说,通过对执行类字节码中嵌入数据采集逻辑相关的新的字节码,来得到增强后的执行类字节码文件,并基于此利用探针来将其加载至程序虚拟机,以避免对线程池及其运行的应用程序的修改。
[0051]进一步地,基于设置的探针,实现了令程序虚拟机可以在创建实例对象时,及时注入5增强后的执行类字节码文件,并在通过设置的拦截器,能够及时获知实例对象的运行,并
[0052]在其运行时,令数据采集逻辑及时介入来对运行状态下的线程池进行数据的采集,基于此,实现了以外包的方式对线程池的监控。
附图说明
[0053]0在下面结合附图对于示例性实施例的描述中,本专利技术的更多细节、特征和优点被公开,
[0054]在本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种线程池监控方法,其特征在于,包括:对于预置的多个线程池中的每一个,确定该线程池的执行类,并确定所述执行类的执行类字节码文件;在所述执行类字节码文件中构建数据采集逻辑,并在所述执行类字节码文件中设置拦截器,得到增强后的执行类字节码文件,将所述增强后的执行类字节码文件通过预置的探针加载到预置的程序虚拟机;响应于所述程序虚拟机为所述线程池创建实例对象,将所述增强后的执行类字节码文件注入至所述实例对象;响应于通过所述拦截器拦截到所述程序虚拟机运行所述实例对象,利用所述数据采集逻辑采集所述实例对象对应的所述线程池运行时的数据,以对所述线程池的运行状态进行监控。2.根据权利要求1所述的线程池监控方法,其特征在于,所述在所述执行类字节码文件中构建数据采集逻辑,包括:构建采集所述线程池的注册信息的第一采集字段;构建采集所述线程池的运行信息的第二采集字段;将所述第一采集字段和所述第二采集字段嵌入至所述执行类字节码文件内。3.根据权利要求2所述的线程池监控方法,其特征在于,所述将所述第一采集字段和所述第二采集字段嵌入至所述执行类字节码文件内,包括:在所述执行类中定义所述第一采集字段和所述第二采集字段;将所述第一采集字段和所述第二采集字段作为所述执行类的对象,并在所述执行类字节码文件中进行定义;利用所述构造器对定义后的所述第一采集字段和所述第二采集字段进行初始化。4.根据权利要求1所述的线程池监控方法,其特征在于,所述程序虚拟机为所述线程池创建实例对象,将所述增强后的执行类字节码文件注入至所述实例对象,包括:通过预设的线程池管理程序,将所述多个线程池中的每一个进行实例化,得到该线程池的实例对象;将全部所述多个线程池各自的实例对象组成线程池实例集合;遍历所述线程池实例集合中的各个实例对象,将所述执行类字节码文件注入至运行所述各个实例对象的各个线程池。5.根据权利要求2所述的线程池监控方法,其特征在于,所述利用所述数据采集逻辑采集所述实例对象对应的所述线程池运行时的数据,包括:利用所述第一采集字段,采集所述线程池的所述注册信息;利用所述第二采集字段,采集所述线程池的所述运行信息;根据采集到的所述注册信息和所述运行信息,判断所述线程池的运行状态是否正常。6.根据权利要求5所述的线程池监控方法,其特征...

【专利技术属性】
技术研发人员:李伟元
申请(专利权)人:北京基调网络股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1