JDK裏面自己就帶了不少的監控工具,如JConsole等。咱們今天要講的這款工具visualvm,就是其中的一款。可是這款工具是在JDK1.6.07及以上纔有的。它可以對JAVA程序的JVM堆、線程、類加載狀況、JVM GC狀況進行監控,是一個很好的免費的監控工具。java
監控範圍:JDK1.4及以上版本的程序都可以監控。linux
它在JDK裏面叫作: jvisualvm,固然咱們能夠到它的官方網站上去下載它的最新版本,當前最新版本是:工具
1.3.2,以下所示:網站
在圖中已經列出了它的官方網站地址:spa
首先,打開visualvm,它會自動檢索到本地機器上java應用程序,以下圖:
雙擊它就可對它開始進行各項數據的監控了。線程
=======================jstatd============code
可是監控遠程機器上的Java應用程序就沒有這麼簡單了,須要進行相應的配置,首先咱們來看下visualvm監控遠程機器上Java應用程序的原理:server
由上圖可知,visualvm必須經過jstatd服務來取得遠程機器上Java應用程序的運行數據。blog
因此咱們得先在要監控的機器上啓動jstatd服務(這個服務是在遠程機器上啓動的)
一、 首先在遠程機器上配置好Java環境:
JAVA_HOME,CLASSPATH,PATH
配置完以後,在cmd裏面經過:java -version和javac -version,肯定Java環境配置完成
二、 建立一個文件:jstatd.all.policy(名字能夠變,擴展名不能夠變),內容以下:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
這個文件的做用是讓jstatd服務可以讀取機器上的java應用程序的運行數據
三、 把這個文件放到:%JAVA_HOME%\bin目錄下。
四、 打開cmd,把目錄切到:%JAVA_HOME%\bin目錄下,而後執行以下命令:
jstatd -J-Djava.security.policy=jstatd.all.policy
這個時候,若是cmd是以下所示的狀態,則說明jstatd服務啓動成功
注:上面啓動的jstatd服務,默認端口是1099,也能夠在上面命令中指定端口號
按照上面的原理圖,在遠程機子上啓動jstatd服務以後,visualvm就能夠監控到遠程機器上的JAVA應用程序了,按下面操做便可:
一、 在本地visualvm界面上添加遠程主機:
在左邊「應用程序」中,右擊「遠程」,選擇「添加遠程主機」
而後在彈出的對話框裏面輸入所要監控的遠程主機的IP,以下所示:
剛開始進入時,不是這個對話框,點擊「高級設置」就會展開餘下的部分,就是上面所示的對話框,在裏面能夠設置遠程機器上jstatd服務所用的端口號,默認是1099,能夠經過勾選「顯示名稱」,在裏面輸入本身想要的遠程主機名,最後點擊肯定便可。
二、 展開剛所新建的遠程主機,就可看到運行在遠程機器上的JAVA應用程序了,以下所示:
經過雙擊裏面的應用程序,就能夠像本地應用程序同樣,對它進行監控了。
到此,visualvm遠程監控部分算是完成了。
最後須要注意的一點是,jdk6上的visualvm不可以監控到jdk7上的java應用程序,即便jstatd服務成功啓動也不行。
更多參考:http://ihuangweiwei.iteye.com/blog/1219302
================JMX=================
由於本地監控無需配置, 因此這裏主要介紹監控遠程JVM 要進行遠程監控, 本機的VisualVM就必須和遠程的JVM要進行通訊, Visualvm目前支持兩種remote connection方式. 分別是jstatd和JMX方式: 這裏我主要介紹的是經過JMX方式. 經過JMX鏈接遠程機器, 須要通過下面的配置: 1. 修改遠程機器JDK配置文件 (我這裏遠程機器是linux). a.進入JAVA_HOME\jre\lib\management\目錄 b.拷貝jmxremote.password.template這個文件到當前目錄, 並更名爲jmxremote.password c.打開jmxremote.password文件,去掉 # monitorRole QED 和 # controlRole R&D 這兩行前面的註釋符號 2. 修改遠程機器上須要被監控的程序的配置文件 (我這裏是監控Tomcat容器內部署的應用). a.進入TOMCAT_HOME\bin目錄 b.打開catalina.sh文件,加入以下信息: JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.0.237 -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" c.重啓Tomcat服務. 3. 客戶端VisualVM配置 (我客戶端用的是WinXP). a.直接反鍵點擊Remote,選擇Add Remote Host... b.在彈出的界面中輸入遠程機器的IP地址(192.168.0.237),這個IP地址會加入到Remote節點下. c.反鍵點擊這個IP地址,選擇Add JMX Connection, 在彈出的界面中輸入剛配置的端口號(18999), 這個鏈接會加入到該IP節點下. d.反鍵點擊這個鏈接,選擇Open. 此時就能夠看到監控的界面, 從界面上咱們能夠看到CPU信息, 內存信息, 統計加載類數量,線程信息.