1. 程式人生 > 實用技巧 >jvisualvm 遠端連線java程式

jvisualvm 遠端連線java程式

1.首先需要停止正在執行的java服務
2.在命令nohup java -jar test.jar >/usr/local/test.txt &
此命令為後臺啟動jar包並將控制檯資訊輸出至test.txt,在此啟動命令中間中新增如下資訊:

nohup java
-Dcom.sun.management.jmxremote 
-Djava.rmi.server.hostname=192.168.1.16 
-Dcom.sun.management.jmxremote.port=3214 
-Dcom.sun.management.jmxremote.rmi.port=3214
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.password.file=jmxremote.password -Dcom.sun.management.jmxremote.access.file=jmxremote.access -Dcom.sun.management.jmxremote.local.only=false -jar test.jar >/usr/local/test.txt &

配置詳解:

nohup java
#啟用JMX遠端監控
-Dcom.sun.management.jmxremote
#連線的Linux機器的IP地址,該項必須設定,否則遠端連線會因為解析到127.0.0.1出現連線失敗的情況。如果不設定該項,也可以通過修改Linux的/etc/hosts檔案,使hostname -i指向正確的IP.
-Djava.rmi.server.hostname=192.168.1.16
#設定欲連線到Linux機器上的埠號,在不跟Linux中現有埠衝突的情況下,可隨意設定該埠
-Dcom.sun.management.jmxremote.port=3214
#RMI繫結埠與上邊保持一致即可
-Dcom.sun.management.jmxremote.rmi.port=3214
#啟用ssl加密傳輸
-Dcom.sun.management.jmxremote.ssl=false
#啟用身份驗證連線
-Dcom.sun.management.jmxremote.authenticate=false
#如果啟用身份驗證,配置使用者名稱密碼的檔案
-Dcom.sun.management.jmxremote.password.file=jmxremote.password
#如果啟用身份驗證,配置使用者名稱密碼許可權的檔案
-Dcom.sun.management.jmxremote.access.file=jmxremote.access
-Dcom.sun.management.jmxremote.local.only=false
-jar test.jar >/usr/local/test.txt &

linux命令授權使用者名稱密碼檔案
chmod 600 jmxremote.access
chmod 600 jmxremote.password
chown root:root jmxremote.access
chown root:root jmxremote.password

jmxremote.access 檔案內容
monitorRole readonly
controlRole readwrite
admin readwrite
jmxremote.password 檔案內容
monitorRole 111111
controlRole 222222
admin 123456

在Java啟動時,JMX會繫結一個介面,RMI也會繫結一個介面,在複雜網路環境下,有可能你通過開啟防火牆允許了JMX埠的通過,但是由於沒有放行RMI,遠端連線也是會失敗的。這是因為JMX在遠端連線時,會隨機開啟一個RMI埠作為連線的資料埠,
這個埠會被防火牆給阻止,以至於連線超時失敗。選擇方案

1.關閉遠端機器的防火牆即可:service iptables stop
2.找出JMX埠,放行這個埠
3.在Java7u25版本後,可以使用 -Dcom.sun.management.jmxremote.rmi.port引數來指定這個埠;好訊息是,你可以將這個埠和jmx.port的埠設定成一個埠,這樣防火牆就只需要放行一個埠就可以了。