[發明專利]監測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.szxzyx.cn/pat/books/201810150708.3/1.html,轉載請聲明來源鉆瓜專利網。





