CN112732405B - Jvm线程监控方法、装置及电子设备 - Google Patents

Jvm线程监控方法、装置及电子设备 Download PDF

Info

Publication number
CN112732405B
CN112732405B CN202110027887.3A CN202110027887A CN112732405B CN 112732405 B CN112732405 B CN 112732405B CN 202110027887 A CN202110027887 A CN 202110027887A CN 112732405 B CN112732405 B CN 112732405B
Authority
CN
China
Prior art keywords
information
thread
jvm
alarm
operation information
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.)
Active
Application number
CN202110027887.3A
Other languages
English (en)
Other versions
CN112732405A (zh
Inventor
肖凯
谭吉湘
杨陆
王晓宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Data Driven Technology Co ltd
Original Assignee
Beijing Data Driven Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Data Driven Technology Co ltd filed Critical Beijing Data Driven Technology Co ltd
Priority to CN202110027887.3A priority Critical patent/CN112732405B/zh
Publication of CN112732405A publication Critical patent/CN112732405A/zh
Application granted granted Critical
Publication of CN112732405B publication Critical patent/CN112732405B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了JVM线程监控方法、装置及电子设备。其中,该方法包括:获取JVM日志;对JVM日志进行解析处理,得到JVM中线程的运行信息;其中,运行信息包括以下至少之一:线程状态信息、内存使用信息和方法执行信息;判断运行信息是否与对应的预设告警规则相匹配;其中,预设告警规则包括以下至少之一:线程数量阈值、内存使用阈值和方法执行响应时间阈值;如果是,则生成运行信息对应的告警信息,以进行告警提示;从而通过预设告警规则,实现对JVM中线程的运行信息的监控,并当发生故障时通过告警信息进行告警,与现有的人工排查方法相比,提高了线程故障排查的效率和精度。

Description

JVM线程监控方法、装置及电子设备
技术领域
本发明涉及计算机技术领域,尤其是涉及JVM线程监控方法、装置及电子设备。
背景技术
当前,在众多互联网公司中,很多系统在服务器(或云服务器)上运行,当系统开发到一定阶段,线上的服务器(或云服务器)越来越多,此时,除了需要监控服务器之外,还需对业务方面进行监控。由于很多业务系统采用Java语言开发,JVM(Java Virtual Machine)是Java平台的一部分,因此,JVM能够运行采用Java语言编写的软件程序。
在实际应用中,很多Java程序采用多线程的方式来处理大量的并发请求,但是多线程执行的程序往往会出现一些问题,比如出现线程阻塞或者锁死的现象,从而导致运行的Java程序效率低下甚至出现不可用的现象。针对上述多线程执行时出现的问题,现有方法主要通过人工方法逐个排查运行的多线程,该方法虽然可以排查到发生故障的线程,但耗时较长,降低了排查效率和精度,不能满足实际应用需求。
发明内容
有鉴于此,本发明的目的在于提供JVM线程监控方法、装置及电子设备,以缓解上述问题,提高了线程故障排查的效率和精度。
第一方面,本发明实施例提供了一种JVM线程监控方法,应用于配置有JVM的服务器,该方法包括:获取JVM日志;对JVM日志进行解析处理,得到JVM中线程的运行信息;其中,运行信息包括以下至少之一:线程状态信息、内存使用信息和方法执行信息;判断运行信息是否与对应的预设告警规则相匹配;其中,预设告警规则包括以下至少之一:线程数量阈值、内存使用阈值和方法执行响应时间阈值;如果是,则生成运行信息对应的告警信息,以进行告警提示;其中,告警信息包括故障类型信息和/或故障位置信息。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,线程状态信息包括运行状态和非运行状态,上述判断运行信息是否与对应的预设告警规则相匹配的步骤,包括:根据每个线程的线程状态信息,计算得到JVM中运行线程数量;判断运行线程数量是否大于或等于线程数量阈值;如果是,则确定运行信息与对应的预设告警规则相匹配。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,每个线程配置有时间片,上述判断运行信息是否与对应的预设告警规则相匹配的步骤,包括:判断当前时间片对应的内存使用信息是否大于或等于内存使用阈值;如果是,则确定当前时间片的运行信息与对应的预设告警规则相匹配。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,上述判断运行信息是否与对应的预设告警规则相匹配的步骤,包括:基于方法执行信息确定线程对应方法的方法执行响应时间;判断方法执行响应时间是否大于或等于方法执行响应时间阈值;如果是,则确定运行信息与对应的预设告警规则相匹配。
结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,上述获取JVM日志的步骤,包括:实时获取JVM日志;或者,按照预设时间间隔获取JVM日志。
结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,上述判断运行信息是否与对应的预设告警规则相匹配的步骤之前,该方法还包括:对运行信息进行过滤处理,得到处理后的运行信息;和/或,对运行信息进行清洗处理,得到处理后的运行信息。
结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,该方法还包括:基于预设的校验规则对告警信息进行校验,并将校验通过的告警信息进行告警提示。
第二方面,本发明实施例还提供一种JVM线程监控装置,应用于配置有JVM的服务器,该装置包括:获取模块,用于获取JVM日志;解析模块,用于对JVM日志进行解析处理,得到JVM中线程的运行信息;其中,运行信息包括以下至少之一:线程状态信息、内存使用信息和方法执行信息;判断模块,用于判断运行信息是否与对应的预设告警规则相匹配;其中,预设告警规则包括以下至少之一:线程数量阈值、内存使用阈值和方法执行响应时间阈值;告警模块,用于如果是,则生成运行信息对应的告警信息,以进行告警提示;其中,告警信息包括故障类型信息和/或故障位置信息。
第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述第一方面的JVM线程监控方法的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述第一方面的JVM线程监控方法的步骤。
本发明实施例带来了以下有益效果:
本发明实施例提供了JVM线程监控方法、装置及电子设备,通过预设告警规则,实现对JVM中线程的运行信息的监控,并当发生故障时通过告警信息进行告警,与现有的人工排查方法相比,提高了线程故障排查的效率和精度;以及,便于用户根据告警信息的故障类型信息和/或故障位置信息进行故障修复,提高了线程应急效率。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种配置有JVM的服务器的结构示意图;
图2为本发明实施例提供的一种JVM线程监控方法的流程图;
图3为本发明实施例提供的一种Map集合示意图;
图4为本发明实施例提供的一种确定响应时间的示意图;
图5为本发明实施例提供的一种JVM线程监控装置的示意图;
图6为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有人工排查线程故障耗时较长,导致排查效率和精度较低,不能满足实际应用需求的问题,本发明实施例提供了JVM线程监控方法、装置及电子设备,通过预设告警规则,实现对JVM中线程的运行信息的监控,并当发生故障时通过告警信息进行告警,与现有的人工排查方法相比,提高了线程故障排查的效率和精度。
为便于对本实施例进行理解,下面首先对本发明实施例提供的一种JVM线程监控方法进行详细介绍。其中,该方法执行主体为应用于配置有JVM的服务器,如图1所示,该服务器10主要包括JVM101、数据收集服务102、消息中间件103、数据分析服务104、告警服务105和规则配置平台106;其中,JVM101中运行有多个Java程序,每个Java程序通过多线程执行,所谓多线程是指一个进程在执行过程中可以产生多个更小的程序单元,这些更小的单元称为线程,因此,JVM101中运行有多个线程,这里多个线程可能为同一Java程序,也可能为不同的Java程序。
在实际应用中,数据收集服务102用于提供一个服务的客户端jar包,Java应用程序依赖于此客户端,并使用http的方式进行数据采集,即获取JVM101的日志;消息中间件103则利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成;以及还通过提供消息传递模型和消息排队模型,以实现在分布式环境下扩展线程间的通信;数据分析服务104则是接收消息中间件传递的数据,并进行解析、过滤以及清洗等操作,以及匹配规则配置平台配置的告警策略规则,将符合告警规则的数据发送至告警服务105;告警服务105则用于对数据分析服务104产生的告警数据进行有效性校验,校验通过后在规定的时间内进行不同条件的聚合,并将聚合结果再次推送至消息中间件103,由告警线程进行数据消费并告警,常见对的告警方式有邮件、短信以及钉钉等;规则配置平台106则用于针对不同的应用程序本身需要关注的监控项进行配置,并为每个应用绑定不同的告警策略规则信息,以及选择需要发送的用户以及告警的方式进行定制化操作,将所有录入的数据信息存入到mysql数据库107中。因此,基于该服务器,可以实现本发明的JVM线程监控功能。
基于上述服务器,如图2所示,本发明实施例的JVM线程监控方法包括如下步骤:
步骤S202,获取JVM日志;
具体地,可以实时获取JVM日志,例如通过监控程序实时扫描JVM中的多个线程,并根据预设标识如运行标识确定JVM中运行线程,并获取运行线程的日志,得到JVM日志;或者,也可以按照预设时间间隔获取JVM日志,例如预设时间间隔为1ms等,具体可以根据实际情况进行设置,从而可以实现对JVM中运行线程的实时监控。
步骤S204,对JVM日志进行解析处理,得到JVM中线程的运行信息;
其中,运行信息包括以下至少之一:线程状态信息、内存使用信息和方法执行信息,具体的运行信息可以根据实际情况进行设置。在实际应用中,线程状态信息用于表征JVM中线程的状态,包括运行状态和非运行状态,内存使用信息主要指线程对应的Java程序中数据占用的内存大小,方法执行信息则是线程对应的Java程序执行情况,需要说明的是,上述运行信息均为每一个线程对应的运行信息,不同线程的运行信息可能相同,如同一个Java程序的多线程;也可能不同,如不同Java程序的线程,具体可以根据实际情况进行设置,本发明实施例在此不作限制说明。
可选的,为了提高线程故障监控的精度,对于上述运行信息,还可以对运行信息进行优化处理,例如,对运行信息进行过滤处理;这里可以按照预设的长度对运行信息进行过滤处理,也可以按照其他过滤规则对运行信息中进行过滤处理,得到处理后的运行信息;和/或,对运行信息进行清洗处理,如按照预设清洗规则对运行信息进行清洗处理,以去除运行信息中冗余数据等,得到处理后的运行信息,并基于预设告警规则判断处理后的运行信息,以提高线程中故障判断精度和效率。
步骤S206,判断运行信息是否与对应的预设告警规则相匹配;
其中,预设告警规则包括以下至少之一:线程数量阈值、内存使用阈值和方法执行响应时间阈值;具体的预设告警规则可以根据运行信息进行设置,例如运行信息包括线程状态信息和内存使用信息,则预设告警规则设置为对应的线程数量阈值和内存使用阈值,从而通过对应的预设告警规则,提高了线程故障的判断精度。
在其中一种可能的判断方式中,根据每个线程的线程状态信息,计算得到JVM中运行线程数量;判断运行线程数量是否大于或等于线程数量阈值;如果是,则确定运行信息与对应的预设告警规则相匹配。例如,根据每个线程的线程状态信息,统计得到JVM中运行线程数量为M,此时,判断运行线程数量为M与JVM中设定的线程数量阈值M1,如果是,则说明此时JVM中运行线程的数量达到阈值,即运行信息与对应的预设告警规则相匹配。
在实际应用中,在修改JVM加载Java程序的类时,主要采用ASM字节码的方式修改Java程序对应的方法(即线程)的字节码;具体地,在方法开始前设置开始时间,常见的以纳秒为单位,并在结束后加入一个分析方法,因此,每个线程的第一个参数为上面的开始时间,第二个参数则为类加载每一个Java方法分配的唯一ID(Identity Document,帐号)。
此外,对于每个线程,还通过数组+Map集合的方法把线程的响应时间存储到一个Point对象中;其中,对于数组存储,数组的下标代表线程的响应时间,而下标对应的元素值代表该响应时间出现的次数,如下表1所示:
表1
0 1 2 3 …… 998 999
99 20 50 49 …… 0 0
根据表1可知,数组存储记录了某个线程99次0ms的响应,20次1ms的响应,50次2ms的响应和49次3ms的响应。
在实际应用中,Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的key,另一组保存着Map的value。因此,对于Map集合存储,本发明实施例中Map的key代表方法的响应时间,而key对应的value的值则代表响应时间出现的次数,如图3所示,Map集合记录了某个线程100次的1000ms的响应,106次的1024ms的响应,98次的1051ms的响应,6次的2049ms的响应。
因此,本发明实施例中采用Point对象来记录线程的响应时间,并采用Points来存放同一个时间片内所有的Point对象,以及采用List<Points>存放所有的Point对象并维护一个索引index指向当前时间片的Points;所有的Point对象和Points均在应用程序启动时分配好,当当前时间片结束时,index便指向List<Points>中下一个Points,并作为下一个时间片的Points,以及计算当前时间片的性能指标,如响应时间,如此往复。
在另一种可能的判断方式中,每个线程配置有时间片,判断当前时间片对应的内存使用信息是否大于或等于内存使用阈值,如统计当前时间片内所有运行线程的内存占用即内存使用信息是否大于或等于内存使用阈值;如果是,则确定当前时间片的运行信息与对应的预设告警规则相匹配;以及在同一个时间片内,通过索引index指向不同的Point对象,以使指向的Point对象对应的线程占用内存,其余则不占用内存,即通过索引index指向不同的Point对象,以弹性的进行内存管理,有效减少对应的线程内存占用。
为了便于理解,这里举例说明。例如某个Java程序有1000个方法需要监控,数组的长度设为3000,Map集合的大小设为128,Points对象的数量为3;则每个数组占用3000*4B=12KB的空间,每个Map集合占用128*64B=8KB的空间,因此,如果监控上述1000个方法,需要占用的内存空间则是:1000*3*(12KB+8KB)=60MB。如果不使用弹性内存管理的方式,那么这60MB的对象则会常驻在内存中,造成内存不足,进而导致线程故障甚至不可用的情况,因此,本发明实施例可以在内存使用信息大于或等于内存使用阈值时,进行告警提示;并可以对内存进行弹性管理,避免了线程停止工作,保证了Java程序的良好运行,具有较好的实用价值。
在另一种可能的判断方式中,基于方法执行信息确定线程对应方法的方法执行响应时间;判断方法执行响应时间是否大于或等于方法执行响应时间阈值;如果是,则确定运行信息与对应的预设告警规则相匹配。
此外,在确定线程对应方法的方法执行响应时间,还可以通过遍历数组的方式确定。为了便于理解,这里举例进行说明。具体包括以下步骤:
(1)通过遍历一次数组可以计算出所有的响应时间以及出现的次数,把数组的所有数据放入sortPoints数组中,在sortPoints数组中下标是奇数代表次数,偶数则代表响应时间,如图4所示,0ms出现99次,1ms出现20次,2ms出现50次,3ms出现49次等;
(2)展开sortPoints数组,可以很快的计算出TP75、TP95、TP99等指标,把sortPoints数组的逻辑展开,可以得到连续存放99个0,20个1,50个2,49个3,一共218个响应时间,那么TP75对应于下标为218*75%=163的值,也就是2ms。
步骤S208,如果是,则生成运行信息对应的告警信息,以进行告警提示。
其中,告警信息包括故障类型信息和/或故障位置信息,从而便于用户及时掌握故障类型信息和/或故障位置信息,如线程数量故障,或者内存使用故障以及故障位置等,及时进行维修处理,提高了应急效率。
此外,该方法还包括:基于预设的校验规则对告警信息进行校验,并将校验通过的告警信息进行告警提示,从而保证了告警信息的有效性,避免了生成无效的告警信息,导致用户对JVM中正常运行的线程进行维修,影响了正常线程的运行,造成资源浪费。
本发明实施例提供的JVM线程监控方法,首先获取JVM日志,并对JVM日志进行解析处理,得到JVM中线程的运行信息;判断运行信息是否与对应的预设告警规则相匹配;如果是,则生成运行信息对应的告警信息,以进行告警提示;从而通过预设告警规则,实现对JVM中线程的运行信息的监控,并当发生故障时通过告警信息进行告警,与现有的人工排查方法相比,提高了线程故障排查的效率和精度,保证了分布式系统中线程对的正确运行,以及当发生故障时,便于用户按照故障类型信息和/或故障位置信息及时维修,提高了应急效率,具有较好的实用价值。
在上述方法实施例的基础上,本发明实施例还提供了一种JVM线程监控装置,执行主体为配置有JVM的服务器。如图5所示,该装置包括依次连接的获取模块51、解析模块52、判断模块53和告警模块54;其中,各个模块的功能如下:
获取模块51,用于获取JVM日志;
解析模块52,用于对JVM日志进行解析处理,得到JVM中线程的运行信息;其中,运行信息包括以下至少之一:线程状态信息、内存使用信息和方法执行信息;
判断模块53,用于判断运行信息是否与对应的预设告警规则相匹配;其中,预设告警规则包括以下至少之一:线程数量阈值、内存使用阈值和方法执行响应时间阈值;
告警模块54,用于如果是,则生成运行信息对应的告警信息,以进行告警提示;其中,告警信息包括故障类型信息和/或故障位置信息。
本发明实施例提供的JVM线程监控装置,首先获取JVM日志,并对JVM日志进行解析处理,得到JVM中线程的运行信息;判断运行信息是否与对应的预设告警规则相匹配;如果是,则生成运行信息对应的告警信息,以进行告警提示;从而通过预设告警规则,实现对JVM中线程的运行信息的监控,并当发生故障时通过告警信息进行告警,与现有的人工排查方法相比,提高了线程故障排查的效率和精度。
在其中一种可能的实施例中,其中,线程状态信息包括运行状态和非运行状态,上述判断模块53还用于:根据每个线程的线程状态信息,计算得到JVM中运行线程数量;判断运行线程数量是否大于或等于线程数量阈值;如果是,则确定运行信息与对应的预设告警规则相匹配。
在另一种可能的实施例中,其中,每个线程配置有时间片,上述判断模块53还用于:判断当前时间片对应的内存使用信息是否大于或等于内存使用阈值;如果是,则确定当前时间片的运行信息与对应的预设告警规则相匹配。
在另一种可能的实施例中,其中,上述判断模块53还用于:基于方法执行信息确定线程对应方法的方法执行响应时间;判断方法执行响应时间是否大于或等于方法执行响应时间阈值;如果是,则确定运行信息与对应的预设告警规则相匹配。
在另一种可能的实施例中,其中,上述获取模块51还用于:实时获取JVM日志;或者,按照预设时间间隔获取JVM日志。
在另一种可能的实施例中,其中,上述判断模块53之前,该装置还包括:对运行信息进行过滤处理,得到处理后的运行信息;和/或,对运行信息进行清洗处理,得到处理后的运行信息。
在另一种可能的实施例中,其中,该装置还包括:基于预设的校验规则对告警信息进行校验,并将校验通过的告警信息进行告警提示。
本发明实施例提供的JVM线程监控装置,与上述实施例提供的JVM线程监控方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本发明实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述JVM线程监控方法。
参见图6所示,该电子设备包括处理器60和存储器61,该存储器61存储有能够被处理器60执行的机器可执行指令,该处理器60执行机器可执行指令以实现上述JVM线程监控方法。
进一步地,图6所示的电子设备还包括总线62和通信接口63,处理器60、通信接口63和存储器61通过总线62连接。
其中,存储器61可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口63(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线62可以是ISA(IndustrialStandard Architecture,工业标准结构总线)总线、PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线或EISA(Enhanced Industry StandardArchitecture,扩展工业标准结构)总线等。上述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器60可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器60中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器60可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器61,处理器60读取存储器61中的信息,结合其硬件完成前述实施例的方法的步骤。
本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述JVM线程监控方法。
本发明实施例所提供的JVM线程监控方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种JVM线程监控方法,其特征在于,应用于配置有JVM的服务器,所述方法包括:
获取JVM日志;
对所述JVM日志进行解析处理,得到JVM中线程的运行信息;其中,所述运行信息包括:线程状态信息、内存使用信息和方法执行信息;
判断所述运行信息是否与对应的预设告警规则相匹配;其中,所述预设告警规则包括:线程数量阈值、内存使用阈值和方法执行响应时间阈值;
如果是,则生成所述运行信息对应的告警信息,以进行告警提示;其中,所述告警信息包括故障类型信息和/或故障位置信息;
每个所述线程配置有时间片;基于时间片对内存使用信息与内存使用阈值是否相匹配进行判断;
若当前时间片内存使用信息与内存使用阈值相匹配,调整索引所指向的Point对象,用于仅使索引指向的Point对象所对应的线程占用内存;
Point对象用于存储线程的方法执行响应时间;方法执行响应时间根据所述方法执行信息确定;
索引用于为存储所有Point对象的List指向当前时间片的多个Point对象。
2.根据权利要求1所述的JVM线程监控方法,其特征在于,所述线程状态信息包括运行状态和非运行状态,所述判断所述运行信息是否与对应的预设告警规则相匹配的步骤,包括:
根据每个所述线程的线程状态信息,计算得到所述JVM中运行线程数量;
判断所述运行线程数量是否大于或等于所述线程数量阈值;
如果是,则确定所述运行信息与对应的预设告警规则相匹配。
3.根据权利要求1所述的JVM线程监控方法,其特征在于,所述判断所述运行信息是否与对应的预设告警规则相匹配的步骤,包括:
判断当前时间片对应的内存使用信息是否大于或等于所述内存使用阈值;
如果是,则确定所述当前时间片的运行信息与对应的预设告警规则相匹配。
4.根据权利要求1所述的JVM线程监控方法,其特征在于,所述判断所述运行信息是否与对应的预设告警规则相匹配的步骤,包括:
基于所述方法执行信息确定所述线程对应方法的方法执行响应时间;
判断所述方法执行响应时间是否大于或等于所述方法执行响应时间阈值;
如果是,则确定所述运行信息与对应的预设告警规则相匹配。
5.根据权利要求1所述的JVM线程监控方法,其特征在于,所述获取JVM日志的步骤,包括:
实时获取所述JVM日志;或者,
按照预设时间间隔获取所述JVM日志。
6.根据权利要求1所述的JVM线程监控方法,其特征在于,所述判断所述运行信息是否与对应的预设告警规则相匹配的步骤之前,所述方法还包括:
对所述运行信息进行过滤处理,得到处理后的运行信息;和/或,
对所述运行信息进行清洗处理,得到处理后的运行信息。
7.根据权利要求1所述的JVM线程监控方法,其特征在于,所述方法还包括:
基于预设的校验规则对所述告警信息进行校验,并将校验通过的所述告警信息进行告警提示。
8.一种JVM线程监控装置,其特征在于,应用于配置有JVM的服务器,所述装置包括:
获取模块,用于获取JVM日志;
解析模块,用于对所述JVM日志进行解析处理,得到JVM中线程的运行信息;其中,所述运行信息包括:线程状态信息、内存使用信息和方法执行信息;
判断模块,用于判断所述运行信息是否与对应的预设告警规则相匹配;其中,所述预设告警规则包括:线程数量阈值、内存使用阈值和方法执行响应时间阈值;
告警模块,用于如果是,则生成所述运行信息对应的告警信息,以进行告警提示;其中,所述告警信息包括故障类型信息和/或故障位置信息;
每个所述线程配置有时间片;基于时间片对内存使用信息与内存使用阈值是否相匹配进行判断;
若当前时间片内存使用信息与内存使用阈值相匹配,调整索引所指向的Point对象,用于仅使索引指向的Point对象所对应的线程占用内存;
Point对象用于存储线程的方法执行响应时间;方法执行响应时间根据所述方法执行信息确定;
索引用于为存储所有Point对象的List指向当前时间片的多个Point对象。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1-7任一项所述的JVM线程监控方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述权利要求1-7任一项所述的JVM线程监控方法的步骤。
CN202110027887.3A 2021-01-08 2021-01-08 Jvm线程监控方法、装置及电子设备 Active CN112732405B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110027887.3A CN112732405B (zh) 2021-01-08 2021-01-08 Jvm线程监控方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110027887.3A CN112732405B (zh) 2021-01-08 2021-01-08 Jvm线程监控方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN112732405A CN112732405A (zh) 2021-04-30
CN112732405B true CN112732405B (zh) 2024-05-17

Family

ID=75590150

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110027887.3A Active CN112732405B (zh) 2021-01-08 2021-01-08 Jvm线程监控方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN112732405B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157458A (zh) * 2021-05-10 2021-07-23 广州欢网科技有限责任公司 快速释放java程序内存方法和装置
CN114241731A (zh) * 2021-12-20 2022-03-25 江苏丰东热技术有限公司 可控气氛热处理炉自动搬送过程的警示方法及装置
CN115442215A (zh) * 2022-09-08 2022-12-06 平安付科技服务有限公司 一种存储集群监控数据的处理方法、装置、设备及介质
CN115687052B (zh) * 2023-01-03 2023-03-31 北京宇信科技集团股份有限公司 运行状态可视化监测方法、服务器和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104503891A (zh) * 2014-12-10 2015-04-08 北京京东尚科信息技术有限公司 对jvm线程进行在线监控的方法和装置
CN111488255A (zh) * 2020-03-27 2020-08-04 深圳壹账通智能科技有限公司 多线程并发监控方法、装置、设备及存储介质
CN111625428A (zh) * 2020-04-20 2020-09-04 中国建设银行股份有限公司 监控Java应用程序运行状态的方法、系统、设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110067007A1 (en) * 2009-09-14 2011-03-17 Red Hat, Inc. Automatic thread dumping

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104503891A (zh) * 2014-12-10 2015-04-08 北京京东尚科信息技术有限公司 对jvm线程进行在线监控的方法和装置
CN111488255A (zh) * 2020-03-27 2020-08-04 深圳壹账通智能科技有限公司 多线程并发监控方法、装置、设备及存储介质
CN111625428A (zh) * 2020-04-20 2020-09-04 中国建设银行股份有限公司 监控Java应用程序运行状态的方法、系统、设备和存储介质

Also Published As

Publication number Publication date
CN112732405A (zh) 2021-04-30

Similar Documents

Publication Publication Date Title
CN112732405B (zh) Jvm线程监控方法、装置及电子设备
CN110888780A (zh) 应用监控方法、装置、设备及存储介质
EP3783869A1 (en) Cache server bandwidth scheduling method and device
CN111459782B (zh) 监控业务系统的方法、装置、云平台系统和服务器
CN110309030A (zh) 基于ELK和Zabbix的日志分析监控系统和方法
CN108923972B (zh) 一种去重流量提示方法、装置、服务器及存储介质
CN113505044B (zh) 数据库告警方法、装置、设备和存储介质
CN113176978B (zh) 基于日志文件的监控方法、系统、设备及可读存储介质
CN110602135B (zh) 网络攻击处理方法、装置以及电子设备
CN111866016A (zh) 日志的分析方法及系统
JP2010117757A (ja) 性能監視システムおよび性能監視方法
CN113206797A (zh) 一种流量控制方法、装置、电子设备和存储介质
CN110990245A (zh) 基于调用链数据的微服务运行状态判断方法及装置
CN110502581B (zh) 分布式数据库系统监测方法及装置
CN108763916B (zh) 业务接口安全评估方法及装置
CN114090037A (zh) 一种服务降级方法、装置、计算机设备以及存储介质
CN110011845B (zh) 日志采集方法及系统
CN110231921B (zh) 日志打印方法、装置、设备及计算机可读存储介质
CN110866831A (zh) 资产活跃度等级的确定方法、装置及服务器
CN112559023A (zh) 一种变更风险的预测方法、装置、设备及可读存储介质
CN112348371A (zh) 云资产的安全风险评估方法、装置、设备、及存储介质
CN112416974A (zh) 一种数据处理方法、装置、设备及可读存储介质
CN113992378B (zh) 一种安全监测方法、装置、电子设备及存储介质
CN110851316A (zh) 异常预警方法及装置、系统、电子设备、存储介质
CN109561083B (zh) bypass处理的方法、装置、设备及存储介质

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
GR01 Patent grant
GR01 Patent grant