轉自:http://hanwangkun.VEvb.com/blog/1195526
JDK里面本身就帶了很多的監控工具,如JConsole等。我們今天要講的這款工具visualvm,就是其中的一款。但是這款工具是在JDK1.6.07及以上才有的。它能夠對java程序的JVM堆、線程、類加載情況、JVM GC情況進行監控,是一個很好的免費的監控工具。
監控范圍:JDK1.4及以上版本的程序都能夠監控。
它在JDK里面叫做: jvisualvm,當然我們可以到它的官方網站上去下載它的最新版本,當前最新版本是:
1.3.2,如下所示:
在圖中已經列出了它的官方網站地址:
http://visualvm.java.net
首先,打開visualvm,它會自動檢索到本地機器上java應用程序,如下圖:
雙擊它就可對它開始進行各項數據的監控了。
但是監控遠程機器上的Java應用程序就沒有這么簡單了,需要進行相應的配置,首先我們來看下visualvm監控遠程機器上Java應用程序的原理:
由上圖可知,visualvm必須通過jstatd服務來取得遠程機器上Java應用程序的運行數據。
所以我們得先在要監控的機器上啟動jstatd服務(這個服務是在遠程機器上啟動的)
1、 首先在遠程機器上配置好Java環境:
JAVA_HOME,CLASSPATH,PATH
配置完之后,在cmd里面通過:java -version和javac -version,確定Java環境配置完成
2、 創建一個文件:jstatd.all.policy(名字可以變,擴展名不可以變),內容如下:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
這個文件的作用是讓jstatd服務能夠讀取機器上的java應用程序的運行數據
3、 把這個文件放到:%JAVA_HOME%/bin目錄下。
4、 打開cmd,把目錄切到:%JAVA_HOME%/bin目錄下,然后執行如下命令:
jstatd -J-Djava.security.policy=jstatd.all.policy
這個時候,如果cmd是如下所示的狀態,則說明jstatd服務啟動成功
注:上面啟動的jstatd服務,默認端口是1099,也可以在上面命令中指定端口號
按照上面的原理圖,在遠程機子上啟動jstatd服務之后,visualvm就可以監控到遠程機器上的JAVA應用程序了,按下面操作即可:
1、 在本地visualvm界面上添加遠程主機:
在左邊“應用程序”中,右擊“遠程”,選擇“添加遠程主機”
然后在彈出的對話框里面輸入所要監控的遠程主機的ip,如下所示:
剛開始進入時,不是這個對話框,點擊“高級設置”就會展開余下的部分,就是上面所示的對話框,在里面可以設置遠程機器上jstatd服務所用的端口號,默認是1099,可以通過勾選“顯示名稱”,在里面輸入自己想要的遠程主機名,最后點擊確定即可。
2、 展開剛所新建的遠程主機,就可看到運行在遠程機器上的JAVA應用程序了,如下所示:
通過雙擊里面的應用程序,就可以像本地應用程序一樣,對它進行監控了。
到此,visualvm遠程監控部分算是完成了。
最后需要注意的一點是,jdk6上的visualvm不能夠監控到jdk7上的java應用程序,即使jstatd服務成功啟動也不行。
新聞熱點
疑難解答