[发明专利]监测JVM Full GC事件的方法及系统有效
申请号: | 201810150708.3 | 申请日: | 2018-02-13 |
公开(公告)号: | CN108446162B | 公开(公告)日: | 2021-11-26 |
发明(设计)人: | 梅存兵 | 申请(专利权)人: | 南京途牛科技有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 南京众联专利代理有限公司 32206 | 代理人: | 叶涓涓 |
地址: | 210000 江苏省南京*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 监测 jvm full gc 事件 方法 系统 | ||
1.监测JVM Full GC事件的方法,其特征在于,包括如下步骤:
步骤一,采集JVM的日志
实时采集JVM运行时的事件,采集信息包括FGC的触发时间和执行时长;
步骤二,分析Full GC事件
定期提取步骤一采集到的信息,分析每一个实例的状况,计算a、b和P0,并根据P0的阈值发送预警信息;
具体包括如下步骤:
1.从JVM日志中逐个提取每个实例最近一次JVM启动后FGC的发生情况:
a)如果JVM启动后,FGC次数不足2,则暂时不分析该实例;
b)当启动后FGC次数超过2次时,进行以下处理:
当启动时间不足基本时间则取启动后的所有FGC事件;
当启动时间超过基本时间,但最近基本时间内FGC次数不足2次,则取最近2次FGC事件;
当启动时间超过基本时间,且最近基本时间内FGC次数不少于2次,则取最近基本时间内的所有FGC事件;
2.通过以下公式计算a,b
a=(FGC次数-1)/(最后一次FGC触发时间–最早一次FGC触发时间);
b=FGC次数/全部FGC事件的累计执行时间;
3.计算P0=b/(a+b)
所述P0=b/(a+b)算式通过以下过程得来:
在t时刻,将系统不在处理FGC的概率记为P0(t),正在处理FGC的概率记为P1(t);
在从t时刻到t+Δt时刻这一段时间内,触发一次FGC事件的概率是Δt/(1/a),即aΔt;没有触发FGC的概率是1-aΔt;执行完一次FGC的概率是Δt/(1/b),即bΔt;没有一次FGC被执行完的概率是1-bΔt;其中,从t时刻到t+Δt时刻这段时间包含t时刻不包含t+Δt时刻,在Δt时间内最多只会触发一次FGC事件;1/a表示FGC发生的平均间隔时间,1/b表示FGC的平均执行时间,FGC发生的间隔时间和执行时间符合指数分布;
到了t+Δt时刻,系统不在处理FGC的概率为:P0(t+Δt)=P0(t)(1-aΔt)+P1(t)bΔt;系统正在处理FGC的概率为:P1(t+Δt)=P0(t)aΔt+P1(t)(1-bΔt);对这两式进行整理,同时Δt-0求极限得到如下微分方程组:
在任一时刻JVM都在执行FGC或不在执行FGC,即P0(0)=1,P1(0)=0,P0(t)+P1(t)=1,解方程得:
当系统稳定运行即t-∞时,求得系统不在处理FGC的概率是P0=b/(a+b);
4.判断当P0阈值,则发送预警信息;
步骤三,预警
在系统中进行预警,显示异常状态。
2.监测JVM Full GC事件的系统,其特征在于,包括:JVM日志采集模块、FGC分析模块、FGC预警模块,所述JVM日志采集模块用于实时采集JVM运行时的事件,采集信息包括FGC的触发时间和执行时长;所述FGC分析模块用于定期提取JVM日志采集模块采集到的信息,分析每一个实例的状况,计算a、b和P0,并根据P0的阈值发送预警信息;
所述FGC预警模块用于在系统中进行预警,发出异常状态的提示;
所述FGC分析模块分析和计算的过程如下:
1.从JVM日志中逐个提取每个实例最近一次JVM启动后FGC的发生情况:
c)如果JVM启动后,FGC次数不足2,则暂时不分析该实例;
d)当启动后FGC次数超过2次时,进行以下处理:
当启动时间不足基本时间则取启动后的所有FGC事件;
当启动时间超过基本时间,但最近基本时间内FGC次数不足2次,则取最近2次FGC事件;
当启动时间超过基本时间,且最近基本时间内FGC次数不少于2次,则取最近基本时间内的所有FGC事件;
2.通过以下公式计算a,b
a=(FGC次数-1)/(最后一次FGC触发时间–最早一次FGC触发时间);
b=FGC次数/全部FGC事件的累计执行时间;
3.计算P0=b/(a+b)
判断当P0阈值,则发送预警信息;
所述P0=b/(a+b)算式通过以下过程得来:
在t时刻,将系统不在处理FGC的概率记为P0(t),正在处理FGC的概率记为P1(t);
在从t时刻到t+Δt时刻这一段时间内,触发一次FGC事件的概率是Δt/(1/a),即aΔt;没有触发FGC的概率是1-aΔt;执行完一次FGC的概率是Δt/(1/b),即bΔt;没有一次FGC被执行完的概率是1-bΔt;其中,从t时刻到t+Δt时刻这段时间包含t时刻不包含t+Δt时刻,在Δt时间内最多只会触发一次FGC事件;1/a表示FGC发生的平均间隔时间,1/b表示FGC的平均执行时间,FGC发生的间隔时间和执行时间符合指数分布;
到了t+Δt时刻,系统不在处理FGC的概率为:P0(t+Δt)=P0(t)(1-aΔt)+P1(t)bΔt;系统正在处理FGC的概率为:P1(t+Δt)=P0(t)aΔt+P1(t)(1-bΔt);对这两式进行整理,同时Δt-0求极限得到如下微分方程组:
在任一时刻JVM都在执行FGC或不在执行FGC,即P0(0)=1,P1(0)=0,P0(t)+P1(t)=1,解方程得:
当系统稳定运行即t-∞时,求得系统不在处理FGC的概率是P0=b/(a+b)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京途牛科技有限公司,未经南京途牛科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810150708.3/1.html,转载请声明来源钻瓜专利网。