Flink從入門到精通100篇(十二)-如何分析和定位 Flink 作業 OOM 問題?
前言
生產環境,我們的 Flink 作業偶爾會出現 heap OOM,那么當出現這種情況我們會怎么辦?通常來說會通過 jmap 命令去將作業的 heap dump 一份文件出來,可是 jmap 導出的文件我們也看不懂啊,那么該怎么分析呢?今天推薦 memory analyzer(mat)這個工具,讓他幫助我們來觀察程序的內存分布情況吧。
MAT 不是一個萬能工具,它并不能處理所有類型的堆存儲文件。但是比較主流的廠家和格式,例如 Sun, HP, SAP 所采用的 HPROF 二進制堆存儲文件,以及 IBM 的 PHD 堆存儲文件等都能被很好的解析。下面來看看要怎么做呢,也許對你有用。官方文檔:http://help.eclipse.org/luna/index.jsp?topic=/org.eclipse.mat.ui.help/welcome.html
造成OutOfMemoryError原因一般有2種:
1、內存泄露,對象已經死了,無法通過垃圾收集器進行自動回收,通過找出泄露的代碼位置和原因,才好確定解決方案;
2、內存溢出,內存中的對象都還必須存活著,這說明Java堆分配空間不足,檢查堆設置大小(-Xmx與-Xms),檢查代碼是否存在對象生命周期太長、持有狀態時間過長的情況。
jmap 命令生成堆信息
jmap?-dump:live,format=b,file=E:/jmap/heap.dump?pid
Flink
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。