利用VisualVM監視遠程JVM
阿新 • • 發佈:2017-12-03
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
- 在服務器上使用keytool創建密鑰對
keytool是java平臺自帶的一個密鑰和證書管理工具,使用keytool創建密鑰對:keytool -genkey -alias jetty -keystore /opt/home/lichengwu/jvm/ssl/jettyKeyStore
按照提示輸入相關信息(包括設定密碼、姓、組織名等),這些信息是可以隨便輸入的,但從產品角度講應該統一設定。輸入的密碼在今後操作中均需要使用。
- 導出公鑰
keytool -export -alias jetty -keystore /opt/home/lichengwu/jvm/ssl/jettyKeyStore -file /opt/home/lichengwu/jvm/ssl/jetty.cert
- 將公鑰導入至需要運行VisualVM的機器。(我的是windows 放在 Z:\jvm\ssl\jetty.cert)
keytool -import -alias jetty -keystore Z:\jvm\ssl\jettyKeyStore -file Z:\jvm\ssl\jetty.cert
- 修改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
- 使用如下參數啟動VisualVM:
VisualVM -J-Djavax.net.ssl.trustStore=Z:\jvm\ssl\jettyKeyStore
監控
啟動VisualVM,添加遠程主機:
輸入遠程主機地址:192.168.0.147
修改端口,如果是默認端口,可可跳過
添加JMX連接
完成後雙擊:
利用VisualVM監視遠程JVM