一种线程池的运行状态获取方法、装置和电子设备与流程

文档序号:26615774发布日期:2021-09-11 00:26阅读:77来源:国知局
一种线程池的运行状态获取方法、装置和电子设备【
技术领域
:】1.本发明实施例涉及互联网
技术领域
:,尤其涉及一种线程池的运行状态获取方法、装置和电子设备。
背景技术
::2.线程,程序执行流的最小执行单位,是进程中的实际运作单位。在一个应用程序中,用户需要多次使用线程,也就意味着,用户需要多次创建并销毁线程。而创建并销毁线程的过程势必会消耗内存,在java中,内存资源是极其宝贵的,所以,java中开辟出了一种管理线程的概念,这个概念叫做线程池。线程池可以方便地管理线程,减少内存的消耗。3.在现有技术中,以java为开发语言,大量使用线程池去提升系统的性能。但在分布式系统下,如何追踪线程以及获取线程池的运行状态参数是一个需要解决的问题。技术实现要素:4.有鉴于此,本发明实施例提供了一种线程池的运行状态获取方法、装置和电子设备,用以解决现有技术中无法直接获取线程池的运行状态参数的问题。5.第一方面,本发明实施例提供一种线程池的运行状态获取方法,包括:6.根据原生线程池,构建支持链路追踪的增强线程池;7.将所述增强线程池注入spring容器中,并获取所述增强线程池在所述spring容器中的bean名称;8.响应于线程池监控服务的启动,在配置文件中添加待监控线程池的bean名称;9.根据所述配置文件中的bean名称,确定待监控的增强线程池;10.对所述待监控的增强线程池进行反射,确定待监控原生线程池,并获取所述待监控原生线程池的运行状态参数;11.如果根据所述运行状态参数,确定所述待监控原生线程池异常,则向监控设备发送告警信息。12.其中一种可能的实现方式中,根据原生线程池,构建支持链路追踪的增强线程池,包括:13.使用zipkin中间件对所述原生线程池进行代理增强,得到所述支持链路追踪的增强线程池。14.其中一种可能的实现方式中,所述线程池监控服务的启动之后,所述方法还包括:15.启动定时,在所述定时时间范围内执行获取所述运行状态参数的步骤。16.其中一种可能的实现方式中,所述线程池监控服务的程序代码包含于采用maven打包而成的jar包中,通过触发所述jar包启动所述线程池监控服务。17.其中一种可能的实现方式中,对所述待监控的增强线程池进行反射,确定原生线程池包括:18.对所述待监控的增强线程池进行jdk反射,以确定原生线程池。19.第二方面,本发明实施例提供一种线程池的运行状态获取装置,包括:20.构建模块,用于根据原生线程池,构建支持链路追踪的增强线程池;21.注入模块,用于将所述增强线程池注入spring容器中,并获取所述增强线程池在所述spring容器中的bean名称;22.监控模块,用于响应于线程池监控服务的启动,在配置文件中添加待监控线程池的bean名称;根据所述配置文件中的bean名称,确定待监控的增强线程池;对所述待监控的增强线程池进行反射,确定待监控原生线程池,并获取所述待监控原生线程池的运行状态参数;如果根据所述运行状态参数,确定所述待监控原生线程池异常,则向监控设备发送告警信息。23.其中一种可能的实现方式中,所述监控模块,包括:24.配置文件子模块,用于当线程池监控服务启动时,在配置文件中添加待监控线程池的bean名称;25.确定子模块,用于根据所述配置文件中的bean名称,确定待监控的增强线程池;26.反射子模块,用于对所述待监控的增强线程池进行反射,确定待监控原生线程池,并获取所述待监控原生线程池的运行状态参数;27.告警子模块,用于在根据所述运行状态参数,确定所述待监控原生线程池异常的状态时,则向监控设备发送告警信息。28.其中一种可能的实现方式中,所述监控模块,还包括:29.定时子模块,用于启动定时,以使线程池监控服务在所述定时时间范围内执行获取所述运行状态参数的步骤。30.第三方面,本发明实施例提供一种电子设备,包括:31.至少一个处理器;以及32.与所述处理器通信连接的至少一个存储器,其中:33.所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面提供的方法。34.第四方面,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面提供的方法。35.应当理解的是,本发明实施例的第二~第四方面与本发明实施例的第一方面的技术方案一致,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。36.本发明实施例提供的线程池的运行状态获取方法、装置和电子设备具备获取线程池运行状态参数的能力,能够根据线程池运行状态参数对异常线程池进行定位排查,完成线程池监控服务。所述线程池监控服务的程序代码包含于采用maven编译而成的jar包中。用户引入所述jar包后,仅需做少量的参数配置,即可获得支持链路追踪的线程池监控功能,可提高开发效率,简化开发流程,降本增效。【附图说明】37.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。38.图1为本发明实施例提供的一种线程池的运行状态获取方法的流程图;39.图2为本发明实施例提供的另一种线程池的运行状态获取方法的流程图;40.图3为本发明实施例提供的一种线程池的运行状态获取装置的示意图;41.图4为本发明实施例提供的另一种线程池的运行状态获取装置的示意图;42.图5为本发明实施例提供的一种线程池的运行状态获取电子设备的示意图。【具体实施方式】43.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。44.在现有技术中,以java为开发语言,大量使用线程池去提升系统的性能。但在分布式系统下,如何追踪线程以及获取线程池的运行状态参数是一个需要解决的问题。为解决该问题,本发明实施例提供了一种线程池的运行状态获取方法、装置和电子设备。所述线程池的运行状态获取方法、装置和电子设备具备获取线程池运行状态参数的能力,能够根据线程池运行状态参数对异常线程池进行定位排查,完成线程池监控服务。45.图1为本发明实施例提供的一种线程池的运行状态获取方法的流程图。如图1所示,该线程池的运行状态获取方法可以包括:46.步骤101,根据原生线程池,构建支持链路追踪的增强线程池。47.可选地,本发明实施例中可以基于zipkin得到支持链路追踪的增强线程池。具体的,可以使用zipkin中间件对原生线程池进行代理增强,以得到所述支持链路追踪的增强线程池。需要说明的是,zipkin是一种分布式链路追踪系统,主要功能是收集服务的定时数据,可解决分布式系统下,线程池链路追踪的跟踪文件标识(traceid)丢失问题。48.步骤102,将增强线程池注入spring容器中,并获取增强线程池在spring容器中的bean名称。49.其中,spring容器是一种能够对bean的生命周期进行管理的轻量级容器,具备注入功能,支持自定义被注入线程池的bean名称。本发明实施例中,将增强线程池注入spring容器。之后,用户可以对注入spring容器的增强线程池进行命名,并且基于spring容器可以获取到增强线程池的bean名称。50.步骤103,响应于线程池监控服务的启动,在配置文件中添加待监控线程池的bean名称。51.其中,所述线程池监控服务用于监控线程池的运行状态。该线程池监控服务的程序代码包含于采用maven打包而成的jar包中。在一些实施例中,可以通过触发所述jar包启动该线程池监控服务。线程池监控服务启动后,可以自动执行步骤103,即在配置文件中添加待监控线程池的bean名称。进一步,线程池监控服务执行步骤103,在配置文件中添加待监控线程池的bean名称之后继续执行下述步骤104。52.步骤104,根据所述配置文件中的bean名称,确定待监控的增强线程池。53.可选的,由于配置文件中添加的是待监控线程池的bean名称,因此线程池监控服务可以将配置文件中的bean名称对应的增强线程池,确定为待监控的增强线程池。线程池监控服务根据配置文件确定待监控的增强线程池之后,继续执行下述步骤105。54.步骤105,对所述待监控的增强线程池进行反射,确定待监控原生线程池,并获取所述待监控原生线程池的运行状态参数。55.具体的,本发明实施例中可以通过对所述待监控的增强线程池进行jdk反射,来确定原生线程池,进而获取待监控原生线程池的运行状态参数,如阻塞的队列数等。需要说明的是,jdk是java语言的软件开发工具包。而jdk反射是jdk工具包提供的一种获取java对象中属性的能力,可根据增强线程池确定原生线程池。线程池监控服务对待监控的增强线程池进行反射,确定待监控原生线程池,并获取待监控原生线程池的运行参数之后,继续执行下述步骤106。56.步骤106,如果根据所述运行状态参数,确定所述待监控原生线程池异常,则向监控设备发送告警信息。57.其中,监控设备可以包括但不限于个人计算机、无线手持设备、平板电脑、手机等。用户通过引入并使用线程池监控服务,仅需做少量参数配置,就能够根据原生线程池的运行状态参数,完成对异常线程池的定位排查,快速实现对线程池的监控和维护。58.图2为本发明实施例提供的另一种线程池的运行状态获取方法的流程图。如图2所示,步骤103中所述线程池监控服务启动之后,所述方法还包括:59.步骤201,启动定时,在所述定时时间范围内执行获取所述运行状态参数的步骤。60.具体的,获取所述运行状态参数的步骤包括步骤103、步骤104和步骤105。例如,可以将定时时间设定为10秒。定时任务启动后,每间隔10秒,执行一次上述获取运行状态参数的步骤,持续对待监控的线程进行扫描。所述线程池监控服务包括步骤103、步骤104、步骤105、步骤106和步骤201。61.图3为本发明实施例提供的一种线程池的运行状态获取装置的示意图。如图3所示,上述线程池的运行状态获取装置可以包括:62.构建模块31,用于根据原生线程池,构建支持链路追踪的增强线程池;63.注入模块32,用于将所述增强线程池注入spring容器中,并获取所述增强线程池在所述spring容器中的bean名称;64.监控模块33,用于响应于线程池监控服务的启动,在配置文件中添加待监控线程池的bean名称;根据所述配置文件中的bean名称,确定待监控的增强线程池;对所述待监控的增强线程池进行反射,确定待监控原生线程池,并获取所述待监控原生线程池的运行状态参数;如果根据所述运行状态参数,确定所述待监控原生线程池异常,则向监控设备发送告警信息。65.图3所示实施例提供的线程池的运行状态获取装置可用于执行本发明图1所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。66.图4为本发明实施例提供的另一种线程池的运行状态获取装置的示意图。如图4所示,所述线程池的运行状态获取装置中的监控模块33,可以包括:67.配置文件子模块41,用于当线程池监控服务启动时,在配置文件中添加待监控线程池的bean名称;68.确定子模块42,用于根据所述配置文件中的bean名称,确定待监控的增强线程池;69.反射子模块43,用于对所述待监控的增强线程池进行反射,确定待监控原生线程池,并获取所述待监控原生线程池的运行状态参数;70.告警子模块44,用于在根据所述运行状态参数,确定所述待监控原生线程池异常的状态时,则向监控设备发送告警信息;71.定时子模块45,用于启动定时,以使线程池监控服务在所述定时时间范围内执行获取所述运行状态参数的步骤。72.图4所示实施例提供的线程池的运行状态获取装置可用于执行本技术图1~图2所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。73.图5为本发明实施例提供的一种线程池的运行状态获取电子设备的示意图。如图5所示,上述电子设备可以包括至少一个处理器;以及与上述处理器通信连接的至少一个存储器,其中:存储器存储有可被处理器执行的程序指令,上述处理器调用上述程序指令能够执行本发明图1~图2所示实施例提供的线程池的运行状态获取方法。74.其中,上述电子设备可以为能够获取线程池运行状态的设备,例如:云服务器,本发明实施例对上述电子设备的具体形式不作限定。75.图5为本发明实施提供的一种电子设备的结构示意图。图5显示的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。76.如图5所示,电子设备以通用计算设备的形式表现。电子设备的组件可以包括但不限于:一个或者多个处理器410,通信接口420,存储器430,连接不同系统组件(包括存储器430和处理单元410)的通信总线440。77.通信总线440表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industrystandardarchitecture;以下简称:isa)总线,微通道体系结构(microchannelarchitecture;以下简称:mac)总线,增强型isa总线、视频电子标准协会(videoelectronicsstandardsassociation;以下简称:vesa)局域总线以及外围组件互连(peripheralcomponentinterconnection;以下简称:pci)总线。78.电子设备典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。79.存储器430可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(randomaccessmemory;以下简称:ram)和/或高速缓存存储器。电子设备可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。存储器430可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。80.具有一组(至少一个)程序模块的程序/实用工具,可以存储在存储器430中,这样的程序模块包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块通常执行本发明所描述的实施例中的功能和/或方法。81.处理器410通过运行存储在存储器430中的程序,从而执行各种功能应用以及数据处理,例如实现本发明图1~图2所示实施例提供的线程池的运行状态获取方法。82.本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行本发明图1~图2所示实施例提供的线程池的运行状态获取方法。83.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。84.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、rf等等,或者上述的任意合适的组合。85.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(localareanetwork;以下简称:lan)或广域网(wideareanetwork;以下简称:wan)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。86.上述对本发明特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。87.在本发明的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本发明中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本发明中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。88.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。89.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属
技术领域
:的技术人员所理解。90.取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。91.需要说明的是,本发明实施例中所涉及的终端可以包括但不限于个人计算机(personalcomputer;以下简称:pc)、个人数字助理(personaldigitalassistant;以下简称:pda)、无线手持设备、平板电脑(tabletcomputer)、手机、mp3播放器、mp4播放器等。92.在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。93.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。94.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1