一种JVM性能监控方法、系统、设备及介质与流程

文档序号:31602794发布日期:2022-09-21 09:27阅读:60来源:国知局
一种jvm性能监控方法、系统、设备及介质
技术领域
1.本发明涉及计算机技术领域,具体而言,涉及一种jvm性能监控方法、系统、设备及介质。


背景技术:

2.jvm是java virtual machine的缩写,即java虚拟机,它是一种基于计算机设备的规范虚构的计算机;jvm屏蔽了具体操作系统平台的信息,通过jvm,java实现了平台无关性,java语言在不同平台上运行时不需要重新编译,只需要在该平台上部署jvm就可以。
3.在使用jvm时,需要对jvm进行监控,才能够更好的控制使用过程,在监控jvm的过程中,专注于其内存使用情况。现有技术中,有多中jvm监控方法,例如采用jvisualvm或java flight recorder等;其中,jvisualvm是java提供的jvm可视化工具,如果需要监控服务器上的远程jvm,需要服务器开放jmx端口进行连接,易造成较大的安全隐患。且在生产环境中,jvisualvm和jstat 等工具也无法方便的获取到 jvm 的垃圾回收信息。


技术实现要素:

4.本发明的目的在于提供一种jvm性能监控方法、系统、设备及介质,其目的在于在生产环境中,对jvm进行监测,以对jvm的运行进行风险告警,提高jvm的运行稳定性。
5.本发明的实施例通过以下技术方案实现:第一方面本技术实施例提供一种jvm性能监控方法,所述方法包括:采用java提供的垃圾回收事件监听器,周期性的获取所述jvm中发生的垃圾回收事件;对所述垃圾回收事件进行分析,将所述垃圾回收事件序列化为自定义格式的网络数据包;基于所述网络数据包,获取所述jvm中各个应用程序的垃圾回收情况;基于所述垃圾回收情况,对所述jvm的安全风险进行预警。
6.可选地,所述对所述垃圾回收事件进行分析,将所述垃圾回收事件序列化为自定义格式的网络数据包,包括:构建jvm性能分析器;建立所述jvm性能分析器与所述垃圾回收事件监听器之间的网络连接;周期性的迭代保存在所述应用程序本地缓存中的所述垃圾回收事件,并将其序列化为自定义格式的网络数据包;基于所述jvm性能分析器与所述垃圾回收事件监听器之间的网络连接,将所述网络数据包发送到所述jvm性能分析器。
7.可选地,所述方法还包括,每在所述应用程序本地缓存中序列化垃圾回收事件完成后,均清空所述应用程序本地缓存。
8.可选地,所述自定义格式的网络数据包,包括4字节长度的数据包长度、2字节长度的应用程序编号、4字节长度的jdk版本、若干字节长度的垃圾回收动作名称的数据长度、若干字节长度的垃圾回收动作名称、1字节长度的垃圾回收类型、若干字节长度的触发垃圾回收的原因的数据长度、若干字节长度的处罚垃圾回收的原因、若干字节长度的各个内存区域垃圾回收前后剩余空间的数据长度、若干字节的各内存区域垃圾回收前后剩余空间、8字节的垃圾回收开始时间和8字节的垃圾回收结束时间。
9.可选地,所述方法还包括:定时从github的openjdk官方仓库获取最新的tag,并基于所述tag更新所述jvm的内存区域名称,将当前源码版本与jvm内存区域名称关联。
10.可选地,所述基于所述网络数据包,获取所述jvm中各个应用程序的垃圾回收情况,包括:所述jvm性能分析器从所述网络数据包中读取垃圾回收情况,所述垃圾回收情况包括垃圾回收动作名称、垃圾回收类型、垃圾回收原因、垃圾回收开始时间和垃圾回收结束时间;所述jvm性能分析器基于所述jvm内存区域名称,获取各区域垃圾回收前后剩余空间;所述jvm性能分析器将所述垃圾回收情况和各区域垃圾回收前后剩余空间存储到redis缓存中。
11.可选地,所述方法还包括:所述jvm性能分析器获取所述网络数据包中的应用程序编号;所述jvm性能分析器按照所述应用程序编号,将垃圾回收情况汇总,并发送到web页面。
12.第二方面本技术实施例提供一种jvm性能监控系统,包括垃圾事件获取模块、分析模块、回收情况获取模块和风险预警模块;垃圾事件获取模块,用于周期性的获取所述jvm中发生的垃圾回收事件;分析模块,用于对所述垃圾回收事件进行分析,将所述垃圾回收事件序列化为自定义格式的网络数据包;回收情况获取模块,用于基于所述网络数据包,获取所述jvm中各个应用程序的垃圾回收情况;风险预警模块,用于基于所述垃圾回收情况,对所述jvm的安全风险进行预警。
13.第三方面本技术实施例提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行如发明内容第一方面所述的一种jvm性能监控方法。
14.第四方面本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如发明内容第一方面所述的一种jvm性能监控方法。
15.本发明实施例的技术方案至少具有如下优点和有益效果:在对jvm中发生的垃圾回收事件进行监控时,因为采用的是java自带的垃圾回收事件监听器,所以并不需要向外提供接口,不会影响到生成环境的安全,具有更好的安全性能;且将获取到的垃圾回收事件序列化为网络数据包后,通过对网络数据包进行分析,能够获得更完善的资料供用户对jvm的运行风险进行预警和告警,从而达到提高jvm运行稳定性的效果。
附图说明
16.图1为本发明实施例提供的一种jvm性能监控方法的步骤流程图;图2为本发明实施例提供的一种jvm性能监控系统的结构框图。
具体实施方式
17.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
18.实施例1本实施例提供一种jvm性能监控方法,参照图1,所述方法包括以下步骤:s101,采用java提供的垃圾回收事件监听器,周期性的获取所述jvm中发生的垃圾回收事件;在java中,不需要手动释放内存,jvm中的垃圾回收器会自动回收内存,所以会产生垃圾回收事件,通过对垃圾回收事件的监控,能够对jvm中的内存使用情况进行判断,从而对jvm的运行稳定性风险进行告警。
19.垃圾回收事件监听器是java提供的,通过采用垃圾回收事件监听器,能够直接对jvm进行监控,在监控时,不需要jvm提供额外的接口,这于生产环境中保持jvm的安全性能具有较大的意义。
20.s102,对所述垃圾回收事件进行分析,将所述垃圾回收事件序列化为自定义格式的网络数据包。包括以下子步骤:s1021,构建jvm性能分析器;在本实施例中,jvm性能分析器采用java语言构建,其在本实施例中的主要作用是对jvm的用用程序垃圾回收事件进行分析。
21.s1022,建立所述jvm性能分析器与所述垃圾回收事件监听器之间的网络连接;通过在jvm性能分析器与垃圾回收事件监听器之间设置网络连接,通过垃圾回收事件监听器获取的应用程序垃圾回收事件就能够传输到jvm性能分析器中,再通过jvm性能分析器进行分析。
22.s1023,周期性的迭代保存在所述应用程序本地缓存中的所述垃圾回收事件,并将其序列化为自定义格式的网络数据包;其中,所述自定义格式的网络数据包的数据格式,包括4字节长度的数据包长度、2字节长度的应用程序编号、4字节长度的jdk版本、若干字节长度的垃圾回收动作名称的数据长度、若干字节长度的垃圾回收动作名称、1字节长度的垃圾回收类型、若干字节长度的触发垃圾回收的原因的数据长度、若干字节长度的处罚垃圾回收的原因、若干字节长度的
各个内存区域垃圾回收前后剩余空间的数据长度、若干字节的各内存区域垃圾回收前后剩余空间、8字节的垃圾回收开始时间和8字节的垃圾回收结束时间。
23.在迭代时,应用程序垃圾回收事件存放于应用程序本地缓存中,还没有发送到jvm性能分析器中,通过对应用程序垃圾回收事件进行迭代和序列化,让应用程序垃圾回收事件被规格化为网络数据包,能够便于jvm性能分析器进行分析处理。
24.且每在所述应用程序本地缓存中序列化垃圾回收事件完成后,均清空所述应用程序本地缓存,以避免应用程序本地缓存被占用太多,导致内存无法清理。
25.s1024,基于所述jvm性能分析器与所述垃圾回收事件监听器之间的网络连接,将所述网络数据包发送到所述jvm性能分析器。
26.s103,基于所述网络数据包,获取所述jvm中各个应用程序的垃圾回收情况;在对jvm进行监控时,主要目的便是通过监听应用程序垃圾回收事件来判断jvm中的内存使用情况,而jvm的内存使用情况是能够通过jvm中的应用程序的垃圾回收情况来进行判断。所以需要通过对网络数据包的分析获取jvm的垃圾回收情况。
27.所述jvm性能分析器从所述网络数据包中读取垃圾回收情况,所述垃圾回收情况包括垃圾回收动作名称、垃圾回收类型、垃圾回收原因、垃圾回收开始时间和垃圾回收结束时间;因为在上传之前,便将jvm中发生的应用程序垃圾回收事件序列化为网络数据包并上传,而网络数据包的格式也比较完善,所以jvm性能分析器能够非常便捷的从网络数据包中获取到所需的垃圾回收情况。
28.定时从github的openjdk官方仓库获取最新的tag,并基于所述tag更新所述jvm的内存区域名称,将当前源码版本与jvm内存区域名称关联。因为jvm的源码版本会经常进行更新,所以在对jvm进行监控时,需要定期从github的openjdk官方仓库获取最新的tag,以保证jvm的源码版本能够与官方仓库发布的版本相同,在监控jvm时,不会出现版本不一致的情况。
29.在获取最近的tag时,从固定的官方页面检测是否发布最新的tag,如果有,则下载其对应的源码文件,将源码文件解压后,读取hotspot/src/share/vm/services/memorymanager.hpp 文件;并使用正则表达式 /return.+";/ 获取所有的 jvm 内存区域名称;将获取到的所有的 jvm 内存区域名称与当前源码版本下的jvm内存区域名称相关联,以防止版本不同导致的问题。
30.所述jvm性能分析器在收到网络数据包后,读取应用程序编号,应用程序编号在每次启动进行监听时使用uuid随机生成,在对网络数据包进行解析时,首先在rdeis缓存中读取应用程序对应的配置信息,配置信息包括jdk版本,上次垃圾回收事件结束时间、垃圾回收次数和垃圾回收总耗时,如果没有读取到对应的缓冲,则表明该应用程序是第一次进入监控,则将上次垃圾回收事件结束时间、垃圾回收次数和垃圾回收总耗时这三个指标值置为0。
31.基于所述jvm内存区域名称,获取各区域垃圾回收前后剩余空间;将jvm内存区域名称和网络数据包中包含的某个应用程序对应,并统计该应用程序的垃圾回收次数、垃圾回收总耗时、各类型垃圾回收的次数、各类型垃圾回收总耗时、垃圾回收各个类型的分布情况、最近 5 秒/10秒/30秒/1分钟/5分钟/10 分钟六个时间跨度的垃圾回收频率和jvm 各个内存区域空间占用情况的走势。jvm性能分析器再将所述垃圾回收情况和各区域垃圾回
收前后剩余空间存储到redis缓存中。
32.s104,基于所述垃圾回收情况,对所述jvm的安全风险进行预警。
33.所述jvm性能分析器获取所述网络数据包中的应用程序编号;所述jvm性能分析器按照所述应用程序编号,将垃圾回收情况汇总,并发送到web页面。jvm的用户通过web页面,能够较为清晰的了解jvm的内存释放情况,从而在长期持续的使用中对 jvm 进行观测,通过对采集数据的深度挖掘,可以辅助实现对 jvm 运行风险的预警和告警,提高生产环境系统运行稳定性。
34.在本实施中,在对jvm中发生的垃圾回收事件进行监控时,因为采用的是java自带的垃圾回收事件监听器,所以并不需要向外提供接口,不会影响到生成环境的安全,具有更好的安全性能;且将获取到的垃圾回收事件序列化为网络数据包后,通过对网络数据包进行分析,能够获得更完善的资料供用户对jvm的运行风险进行预警和告警,从而达到提高jvm运行稳定性的效果。
35.实施例2本实施例提供一种jvm性能监控系统,参照图2,包括垃圾事件获取模块、分析模块、回收情况获取模块和风险预警模块;垃圾事件获取模块,用于周期性的获取所述jvm中发生的垃圾回收事件;分析模块,用于对所述垃圾回收事件进行分析,将所述垃圾回收事件序列化为自定义格式的网络数据包;回收情况获取模块,用于基于所述网络数据包,获取所述jvm中各个应用程序的垃圾回收情况;风险预警模块,用于基于所述垃圾回收情况,对所述jvm的安全风险进行预警。
36.实施例3本技术实施例提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行实施例1中所述的一种jvm性能监控方法。
37.实施例4本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如实施例1中所述的一种jvm性能监控方法。
38.以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1