1. 程式人生 > >利用VisualVM監視遠程JVM

利用VisualVM監視遠程JVM

ase oracl name 連接 tty 獨立 gem keys 多個

VisualVM介紹

VisualVM是集成了多個JDK命令工具的一個可視化工具,它主要用來監控JVM的運行情況,可以用它來查看和瀏覽Heap Dump、Thread Dump、內存對象實例情況、GC執行情況、CPU消耗以及類的裝載情況。
在JDK Update7之後,VisualVM作為JDK的一部分發布,但同時VisualVM也發布獨立的版本。VisualVM必須運行在JDK1.6以上的VM環境下,但可以用它來監控JDK1.4以上的JVM
下載地址:http://visualvm.java.net/download.html技術分享圖片

配置jetty------匿名

修改啟動腳本:

vi /srv/jetty6/mtct

在RUN_CMD後面追加:

#指定hostname 一般情況需要重新指定hostname,否則連接不成功
-Djava.rmi.server.hostname=192.168.0.147
#指定hostname 指定端口默認:1099
-Dcom.sun.management.jmxremote.port=8899
#禁止ssl連接
-Dcom.sun.management.jmxremote.ssl=false

#禁止用戶認證
-Dcom.sun.management.jmxremote.authenticate=false

另一種配置------認證配置

#指定hostname 一般情況需要重新指定hostname,否則連接不成功
-Djava.rmi.server.hostname=192.168.0.147
#指定hostname 指定端口默認:1099
-Dcom.sun.management.jmxremote.port=8899
#禁止ssl連接
com.sun.management.jmxremote.ssl=false

#開啟用戶認證
com.sun.management.jmxremote.authenticate=true

#認證用戶名密碼
-Dcom.sun.management.jmxremote.password.file=/opt/home/lichengwu/jvm/management/jmxremote.password
#訪問模式
-Dcom.sun.management.jmxremote.access.file=/opt/home/lichengwu/jvm/management/jmxremote.access

註意:jmxremote.password和jmxremote.access文件只允許啟動用戶名對該文件擁有讀寫權限 ,我們服務用root啟動 所以:

[root@dog:management]# chmod 600 *
[root@dog:management]# chown root:root *
[root@dog:management]# ll
total 8
-rw------- 1 root root 29 Nov 14 16:38 jmxremote.access
-rw------- 1 root root 26 Nov 14 16:38 jmxremote.password
[root@dog:management]#

如果權限設置不正確會報錯:Error: Password file read access must be restricted

jmxremote.password模板:

[用戶名]       [密碼]
mtct          ct.meituan
test          test

jmxremote.access模板:

[用戶名]      [權限]
mtct        readwrite
test        readonly

第三種配置------SSL

參考:http://download.oracle.com/javase/1.5.0/docs/guide/management/agent.html#SSL_enabled技術分享圖片

  1. 在服務器上使用keytool創建密鑰對
    keytool是java平臺自帶的一個密鑰和證書管理工具,使用keytool創建密鑰對:
    keytool -genkey -alias jetty -keystore /opt/home/lichengwu/jvm/ssl/jettyKeyStore
    

    按照提示輸入相關信息(包括設定密碼、姓、組織名等),這些信息是可以隨便輸入的,但從產品角度講應該統一設定。輸入的密碼在今後操作中均需要使用。

  2. 導出公鑰
    keytool -export -alias jetty -keystore /opt/home/lichengwu/jvm/ssl/jettyKeyStore -file /opt/home/lichengwu/jvm/ssl/jetty.cert
    
  3. 將公鑰導入至需要運行VisualVM的機器。(我的是windows 放在 Z:\jvm\ssl\jetty.cert)
    keytool -import
     -alias jetty -keystore Z:\jvm\ssl\jettyKeyStore -file Z:\jvm\ssl\jetty.cert
    
  4. 修改jetty的啟動腳本
    將-Dcom.sun.management.jmxremote.ssl="false
    "
    修改為:
    -Dcom.sun.management.jmxremote.ssl="true
    "
    ,並添加:
    -Djavax.net.ssl.keyStore=/opt/home/lichengwu/jvm/ssl/jettyKeyStore
    -Djavax.net.ssl.keyStorePassword=123456
    
  5. 使用如下參數啟動VisualVM:
    VisualVM -J-Djavax.net.ssl.trustStore=Z:\jvm\ssl\jettyKeyStore
    

    監控

啟動VisualVM,添加遠程主機:


技術分享圖片
輸入遠程主機地址:192.168.0.147


技術分享圖片
修改端口,如果是默認端口,可可跳過


技術分享圖片
添加JMX連接


技術分享圖片

完成後雙擊:


技術分享圖片

利用VisualVM監視遠程JVM