本發(fā)明涉及智能運維,尤其涉及一種基于knn的內(nèi)存泄漏檢測方法、設(shè)備及介質(zhì)。
背景技術(shù):
1、內(nèi)存泄漏指程序中已經(jīng)不再需要使用的內(nèi)存沒有被釋放,從而造成內(nèi)存資源浪費和程序性能下降。在計算機(jī)系統(tǒng)中,內(nèi)存泄漏是一個常見且影響深遠(yuǎn)的問題。內(nèi)存泄漏會導(dǎo)致系統(tǒng)內(nèi)存占用不斷增加,最終可能導(dǎo)致系統(tǒng)內(nèi)存瓶頸、內(nèi)存溢出等問題,最終導(dǎo)致系統(tǒng)崩潰。因此,及時檢測和解決內(nèi)存泄漏問題對于提高系統(tǒng)的穩(wěn)定性和可靠性至關(guān)重要。
2、現(xiàn)有的內(nèi)存異常檢測算法主要面向資源瓶頸、容量不足(cpu100%、磁盤100%)等通用的、共性的故障,對于內(nèi)存泄露這一特定場景并沒有針對性的故障檢測方案,在發(fā)生內(nèi)存泄露故障時不能及時給出該故障對應(yīng)的告警,也就是說,現(xiàn)有的內(nèi)存異常檢測算法對于內(nèi)存泄漏故障識別不夠精準(zhǔn)、故障識別滯后。
技術(shù)實現(xiàn)思路
1、本發(fā)明提供了一種基于knn的內(nèi)存泄漏檢測方法、設(shè)備及介質(zhì),用以解決現(xiàn)有的內(nèi)存異常檢測算法主要面向資源瓶頸、容量不足等通用的內(nèi)存故障,對于內(nèi)存泄漏故障識別不夠精準(zhǔn)、故障識別滯后的技術(shù)問題。
2、第一方面,本發(fā)明提供了一種基于knn的內(nèi)存泄漏檢測方法,包括:
3、獲取目標(biāo)系統(tǒng)在預(yù)設(shè)時間段的內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合;
4、基于所述內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合中的任一數(shù)據(jù)點與其他數(shù)據(jù)點之間的距離,確定所述任一數(shù)據(jù)點是否為異常點;
5、若所述內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合中異常點的數(shù)量超過預(yù)設(shè)數(shù)量閾值,則確定所述目標(biāo)系統(tǒng)存在內(nèi)存泄漏故障。
6、在一種可行的實施方式中,所述目標(biāo)系統(tǒng)包括jvm應(yīng)用程序、redis應(yīng)用程序和.net應(yīng)用程序中的至少一種,獲取目標(biāo)系統(tǒng)在預(yù)設(shè)時間段的內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合,包括:
7、在所述目標(biāo)系統(tǒng)為jvm應(yīng)用程序時,獲取所述目標(biāo)系統(tǒng)在預(yù)設(shè)時間內(nèi)的已使用的內(nèi)存、已提交的內(nèi)存、fullgc時老年代內(nèi)存中的至少一種;
8、在所述目標(biāo)系統(tǒng)為redis應(yīng)用程序時,獲取所述目標(biāo)系統(tǒng)在預(yù)設(shè)時間段內(nèi)的redis內(nèi)部使用的內(nèi)存量、redis進(jìn)程內(nèi)存占用量中的至少一種;
9、在所述目標(biāo)系統(tǒng)為.net應(yīng)用程序時,獲取所述目標(biāo)系統(tǒng)中進(jìn)程占用總內(nèi)存、gen1代內(nèi)存占用量、gen2代內(nèi)存占用量中的至少一種。
10、在一種可行的實施方式中,在獲取目標(biāo)系統(tǒng)在預(yù)設(shè)時間段的內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合之后,所述方法還包括:
11、基于公式對所述內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合中的任一數(shù)據(jù)點進(jìn)行歸一化處理,其中,x是經(jīng)過所述歸一化處理前的數(shù)據(jù),xnorm是經(jīng)過所述歸一化處理后的數(shù)據(jù),min(x)為所述內(nèi)存監(jiān)控數(shù)據(jù)集合中的最小值,max(x)為所述內(nèi)存監(jiān)控數(shù)據(jù)集合中的最大值。
12、在一種可行的實施方式中,基于所述內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合中的任一數(shù)據(jù)點與其他數(shù)據(jù)點之間的距離,確定所述任一數(shù)據(jù)點是否為異常點,包括:
13、基于所述任一數(shù)據(jù)點與其他數(shù)據(jù)點之間的距離,在所述內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合中,確定出所述任一數(shù)據(jù)點的k個近鄰點;
14、計算所述任一數(shù)據(jù)點與所述k個近鄰點的距離的和;
15、將所述距離的和與k的比值確定為所述任一數(shù)據(jù)點的目標(biāo)距離;
16、基于所述任一數(shù)據(jù)點的目標(biāo)距離,確定初始距離閾值;
17、若所述任一數(shù)據(jù)點的目標(biāo)距離超過所述初始距離閾值,則將所述任一數(shù)據(jù)點確定為異常點。
18、在一種可行的實施方式中,基于所述任一數(shù)據(jù)點與其他數(shù)據(jù)點之間的距離,在所述內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合中,確定出所述任一數(shù)據(jù)點的k個近鄰點,包括:
19、確定所述任一數(shù)據(jù)點與其他數(shù)據(jù)點之間的距離;
20、將與所述任一數(shù)據(jù)點之間的距離最小的前k個其他數(shù)據(jù)點,確定為所述任一數(shù)據(jù)點的k個近鄰點。
21、在一種可行的實施方式中,確定所述任一數(shù)據(jù)點與其他數(shù)據(jù)點之間的距離,包括:
22、根據(jù)公式確定所述任一數(shù)據(jù)點與其他數(shù)據(jù)點之間的距離,其中,xi和xj表示兩個數(shù)據(jù)點,d(xi,xj)表示數(shù)據(jù)點xi和數(shù)據(jù)點xj之間的距離,n表示數(shù)據(jù)點的維度,xik和xjk分別表示數(shù)據(jù)點xi和xj在第k個維度上的值。
23、在一種可行的實施方式中,基于所述任一數(shù)據(jù)點的目標(biāo)距離,確定初始距離閾值,包括:
24、計算所述內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合中所有數(shù)據(jù)點的目標(biāo)距離的和;
25、將所述目標(biāo)距離的和與所述內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合中數(shù)據(jù)點的數(shù)量之間的比值,確定為距離均值;
26、基于公式和公式確定距離標(biāo)準(zhǔn)差,其中,σ為距離標(biāo)準(zhǔn)差,υ為距離方差,μ為所述距離均值,di為所述任一數(shù)據(jù)點的目標(biāo)距離,n為所述內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合中數(shù)據(jù)點的數(shù)量;
27、基于所述距離均值和所述距離標(biāo)準(zhǔn)差,確定初始距離閾值。
28、在一種可行的實施方式中,在確定所述目標(biāo)系統(tǒng)存在內(nèi)存泄漏故障之后,所述方法還包括:
29、觸發(fā)內(nèi)存泄漏故障對應(yīng)的處置動作,所述處置動作包括內(nèi)存調(diào)試、抓取內(nèi)存快照、服務(wù)重啟和流量限制中的至少一種。
30、第二方面,本發(fā)明提供了一種基于knn的內(nèi)存泄漏檢測設(shè)備,所述設(shè)備包括:至少一個處理器;以及,與所述至少一個處理器通信連接的存儲器;其中,所述存儲器存儲有能夠被所述至少一個處理器執(zhí)行的指令,以使所述至少一個處理器能夠執(zhí)行上述任一實施方式所述的一種基于knn的內(nèi)存泄漏檢測方法。
31、第三方面,本發(fā)明提供了一種非易失性計算機(jī)存儲介質(zhì),所述存儲介質(zhì)為非易失性計算機(jī)可讀存儲介質(zhì),所述非易失性計算機(jī)可讀存儲介質(zhì)存儲有至少一個程序,每個所述程序包括指令,所述指令當(dāng)被終端執(zhí)行時,使所述終端執(zhí)行上述任一實施方式所述的一種基于knn的內(nèi)存泄漏檢測方法。
32、本發(fā)明提供的一種基于knn的內(nèi)存泄漏檢測方法、設(shè)備及介質(zhì),與現(xiàn)有技術(shù)相比,具有以下有益的技術(shù)效果:
33、(1)本發(fā)明在獲取目標(biāo)系統(tǒng)在預(yù)設(shè)時間段的內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合后,根據(jù)內(nèi)存監(jiān)控指標(biāo)集合中的任一數(shù)據(jù)點與其他數(shù)據(jù)點之間的距離,確定該數(shù)據(jù)點是否為異常點,當(dāng)異常點的數(shù)量超過預(yù)設(shè)數(shù)量閾值時,確定目標(biāo)系統(tǒng)存在內(nèi)存泄漏故障。本發(fā)明提供了一種對于內(nèi)存泄漏這一類特定故障場景的針對性故障檢測方法,能夠在目標(biāo)系統(tǒng)存在內(nèi)存泄露故障時,精準(zhǔn)、及時地檢測出目標(biāo)系統(tǒng)存在內(nèi)存泄露這一故障,提高系統(tǒng)的穩(wěn)定性和可靠性。
34、(2)本發(fā)明提供的對于內(nèi)存泄漏這一類特定故障場景的針對性故障檢測方法,具有通用性,可以適用于多種類型的目標(biāo)系統(tǒng),例如,jvm應(yīng)用程序、redis應(yīng)用程序和.net應(yīng)用程序。對于不同類型的目標(biāo)系統(tǒng),獲取對應(yīng)的內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合即可。
35、(3)本發(fā)明在確定目標(biāo)系統(tǒng)存在內(nèi)存泄漏故障后,觸發(fā)對應(yīng)的處置動作,有助于實現(xiàn)對內(nèi)存泄露故障的快速故障處理。
1.一種基于knn的內(nèi)存泄漏檢測方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的一種基于knn的內(nèi)存泄漏檢測方法,其特征在于,所述目標(biāo)系統(tǒng)包括jvm應(yīng)用程序、redis應(yīng)用程序和.net應(yīng)用程序中的至少一種,獲取目標(biāo)系統(tǒng)在預(yù)設(shè)時間段的內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合,包括:
3.根據(jù)權(quán)利要求1所述的一種基于knn的內(nèi)存泄漏檢測方法,其特征在于,在獲取目標(biāo)系統(tǒng)在預(yù)設(shè)時間段的內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合之后,所述方法還包括:
4.根據(jù)權(quán)利要求1所述的一種基于knn的內(nèi)存泄漏檢測方法,其特征在于,基于所述內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合中的任一數(shù)據(jù)點與其他數(shù)據(jù)點之間的距離,確定所述任一數(shù)據(jù)點是否為異常點,包括:
5.根據(jù)權(quán)利要求4所述的一種基于knn的內(nèi)存泄漏檢測方法,其特征在于,基于所述任一數(shù)據(jù)點與其他數(shù)據(jù)點之間的距離,在所述內(nèi)存監(jiān)控指標(biāo)數(shù)據(jù)集合中,確定出所述任一數(shù)據(jù)點的k個近鄰點,包括:
6.根據(jù)權(quán)利要求5所述的一種基于knn的內(nèi)存泄漏檢測方法,其特征在于,確定所述任一數(shù)據(jù)點與其他數(shù)據(jù)點之間的距離,包括:
7.根據(jù)權(quán)利要求4所述的一種基于knn的內(nèi)存泄漏檢測方法,其特征在于,基于所述任一數(shù)據(jù)點的目標(biāo)距離,確定初始距離閾值,包括:
8.根據(jù)權(quán)利要求1所述的一種基于knn的內(nèi)存泄漏檢測方法,其特征在于,在確定所述目標(biāo)系統(tǒng)存在內(nèi)存泄漏故障之后,所述方法還包括:
9.一種基于knn的內(nèi)存泄漏檢測設(shè)備,其特征在于,所述設(shè)備包括:
10.一種非易失性計算機(jī)存儲介質(zhì),其特征在于,所述存儲介質(zhì)為非易失性計算機(jī)可讀存儲介質(zhì),所述非易失性計算機(jī)可讀存儲介質(zhì)存儲有至少一個程序,每個所述程序包括指令,所述指令當(dāng)被終端執(zhí)行時,使所述終端執(zhí)行根據(jù)權(quán)利要求1-8中任一項所述的一種基于knn的內(nèi)存泄漏檢測方法。