Linux下快速分析DUMP文件

dump文件傳輸到本地進行分析, 經常須要大量的等待時間。 使用IBM的eclipse的MAT工具能夠直接在服務器上進行快速DUMP分析。php

 

運行環境要求

  • linux操做系統
  • JDK8 以上

下載MAT的linux版本

Eclipse的MAT工具下載連接
MAT支持各類操做系統,找到Linux版本下載下來html

# 運行uname -m 看一下linux是 x86_64仍是 x86的幫助你選擇下載那個版本。 uname -m #x86_64 
http://iso.mirrors.ustc.edu.cn/eclipse/mat/1.8/rcp/MemoryAnalyzer-1.8.0.20180604-linux.gtk.x86_64.zip 

解壓配置MAT基本參數

unzip MemoryAnalyzer-1.8.0.20180604-linux.gtk.x86_64.zip ## 修改MAT的內存大小, 注意這個大小要根據你dump文件大小來的,若是dump文件是5GB那麼 這裏最好配>5GB 不然會報MAT內存不足的異常 ## 修改MemoryAnalyzer.ini 的 -Xmx6024m vi MemoryAnalyzer.ini 

jmap dump整個堆

想了解更詳細的請看這篇博文望聞問切使用jstack和jmap剖析java進程各類疑難雜症java

jmap -dump:format=b,file=jmap.info PID 

MAT分析 dump

./ParseHeapDump.sh jmap.info org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components 

等待結果….

結果會生產以下三個zip文件,很小能夠直接拷貝到本機linux

jmap_Leak_Suspects.zip jmap_System_Overview.zip jmap_Top_Components.zip 

查看報告結果

有兩種查看報告的方法api

  • 直接把zip下載到本地,而後解壓用瀏覽器查看index.html
  • 把zip下載到本地, 用MAT可視化工具解析zip

遇到問題

Unable to initialize GTK+

遇到這個問題的話,是由於ParseHeapDump.sh
裏面須要調用GTK的一些東西。解決方法:瀏覽器

vi ParseHeapDump.sh #註釋掉 "$(dirname -- "$0")"/MemoryAnalyzer -consolelog -application org.eclipse.mat.api.parse "$@"這一行 #而後加入下面 #注意plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar要根據你本身本地的文件名作修改調整 java -Xmx4g -Xms4g \ -jar plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar \ -consoleLog -consolelog -application org.eclipse.mat.api.parse "$@" 

而後繼續運行服務器

./ParseHeapDump.sh jmap.info org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components 

問題解決app

MAC 如何使用 mat工具

MAC 版本 Eclipse的MAT工具下載連接
下載加壓縮之後eclipse

#修改內存大小,默認1G不夠用 vi mat.app/Contents/Eclipse/MemoryAnalyzer.ini 

運行工具

sudo  mat.app/Contents/MacOS/MemoryAnalyzer 
## 一、點擊最上面的Overview的 tab ## 二、點擊最早面的 Open a Head Dump 就能夠選擇加載dump文件了

 

轉自: http://www.moheqionglin.com/site/blogs/84/detail.html

常常使用, 故記錄於此

相關文章
相關標籤/搜索