一、jvisualvm使用
JDK1.6中Oracle提供了一個新的JVM監控工具:jvisualvm。下面重點介紹如何在本地通過遠程的方式打開Linux服務器上的jvisualvm.
1、Xmanager安裝
由於jvisualvm為可視化監控工具,在本地遠程服務器時,為了保證能夠打開jvisualvm首先必須在本地安裝Xmanager;
2、啟動jvisualvm
進入Linux JDK Bin目錄下,然后分別運行如下命令啟動jvisualvm:
(1)export DISPLAY=本地IP:0
(2)./jvisualvm &
jvisualvm啟動后如下圖所示:
二、飛行記錄器的使用
為了分析和定位一個Java線上系統問題,我們需要查看JVM啟動時的一些參數設置,例如:垃圾回收算法、堆大小等等。這些參數可能在啟動腳本中明確指明,也可能采用默認值。在系統運行過程中其他人也許動態調整了系統參數。 如何實時查看正在運行的JVM的參數呢?此時我們可以使用jcmd.
jcmd是從JDK 7開始引入的一個JVM診斷命令行工具,可以向運行中的JVM發送診斷命令。因此要求JDK版本不得低於jdk1.8.0,也可以檢查本地jdk安裝目錄下是否有jmc.exe文件(本地打開jfr工具),如下所示:
在保證了JDK版本的前提下,欲使Linux上下載下來的jfr文件能在本地運行,還需要在搭有Linux環境的服務器JVM中添加如下參數:
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder ,配置完成后如下所示:
JAVA_OPTS="$JAVA_OPTS -d64 -XX:NewRatio=3 -Xms16g -Xmx128g -XX:PermSize=128M -XX:+UnlockCommercialFeatures -XX:+FlightRecorder"
然后在Linux環境上運行如下命令生成jfr文件:
jcmd pid JFR.start delay=1s duration=60s name=serverRecording filename=recording_`date +%Y%m%d%H%M%S`.jfr settings=profile
待文件生成成功后,下載相應的jfr雙擊即可查看相關信息。(代碼->熱點方法->堆棧跟蹤)
使用到的其它命令如下:
jcmd ----查看JVM進程的PID
jcmd -l
jcmd pid Thread.print ----打印堆棧信息,功能類似於jstack -m pid
飛行記錄器的示例如下:
三、Xmanager配置訪問Linux圖形化界面