jvm(10)

JDK裏面自己就帶了不少的監控工具,如JConsole等。咱們今天要講的這款工具visualvm,就是其中的一款。可是這款工具是在JDK1.6.07及以上纔有的。它可以對JAVA程序的JVM堆、線程、類加載狀況、JVM GC狀況進行監控,是一個很好的免費的監控工具。java

監控範圍:JDK1.4及以上版本的程序都可以監控。linux

它在JDK裏面叫作: jvisualvm,固然咱們能夠到它的官方網站上去下載它的最新版本,當前最新版本是:工具

1.3.2,以下所示:網站


 

在圖中已經列出了它的官方網站地址:spa

http://visualvm.java.net.net

首先,打開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信息, 內存信息, 統計加載類數量,線程信息.

相關文章
相關標籤/搜索