jvisualvm監控遠程jvm的兩種連接方式


一、jvisualvm監控遠程jvm的兩種連接方式

方式一:JMX

1. 服務端,添加配置

在tomcat/bin/catalina.sh文件中添加如下配置:

export JAVA_OPTS="-Xms256m -Xmx512m -Xss256m -XX:PermSize=512m -XX:MaxPermSize=1024m -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=10.7.93.127 -Dcom.sun.management.jmxremote.port=9015 -Dcom.sun.management.jmxremote.rmi.port=9015 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

詳解:

  要使用jmx遠程監控功能,在遠程java application啟動時,必須通過jvm選項配置提供遠程服務的端口:

-Dcom.sun.management.jmxremote.port=9015

  一般同時指定為本地jmx client提供服務的端口與遠程服務端口相同:

-Dcom.sun.management.jmxremote.rmi.port=9015

  jmx遠程服務默認是開啟ssl和認證功能功能的,也可以通過jvm選項把這兩個功能關閉:

-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

  還可以設置虛擬機參數:

-Xms256m -Xmx512m -Xss256m -XX:PermSize=512m -XX:MaxPermSize=1024m

  jmx默認是通過localhost的ip地址提供RMI服務的,如果要明確指定RMI服務地址或主機名(比如主機有多個接口,想使用非hostname關聯的接口),可以通過以下選項顯式指定:

-Djava.rmi.server.hostname=服務器IP

  這樣開啟jmx遠程監控功能的最小配置具體如下:

-Xms256m 
-Xmx512m 
-Xss256m 
-XX:PermSize=512m 
-XX:MaxPermSize=1024m 
-Dcom.sun.management.jmxremote 
-Djava.rmi.server.hostname=服務器IP 
-Dcom.sun.management.jmxremote.port=9015 
-Dcom.sun.management.jmxremote.rmi.port=9015 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

2. 重啟tomcat

java application啟動后,遠程監控工具就可以通過 <遠程主機名或ip地址>:8777,或jmx服務地址 service:jmx:rmi:///jndi/rmi://<遠程主機名或ip地址>:8777/jmxrmi連接遠程java application進行監控了

3. 客戶端操作

3.1.啟動jvisualvm.exe

找到jdk安裝目錄進入bin目錄下, 雙擊 jvisualvm.exe

啟動后的界面

 

 3.2.配置JMX

 

 

 

  

方式二:JSTATD

1. 創建 XXX.policy文件

jdk 1.8發布包中包括一個jstatd程序,使用jstatd需要指定一個policy文件,文件的后綴為  .policy,
比如:jstatd-all.policy 的文件,
內容為:親測此內容有效
grant codebase "file:/usr/java/jdk1.8.0_212/lib/tools.jar" {
    permission java.security.AllPermission;
};

或者

grant codebase "file:${java.home}/../lib/tools.jar" {
    permission java.security.AllPermission;
};

2. 啟動

./jstatd -J-Djava.security.policy=jstatd-all.policy &
或者指定端口
./jstatd -J-Djava.security.policy=jstatd-all.policy -p 9016 &

3. 客戶端配置

3.1.啟動jvisualvm.exe

找到jdk安裝目錄進入bin目錄下, 雙擊 jvisualvm.exe

啟動后的界面

 

 3.2.配置JMX

 

3.3.連接jstatd

 

 

 

 二、區別和利弊

1. jmx是jvm自身提供的一個標准的jmx管理功能,client支持度非常好,jvm監控工具基本上都會支持這種連接方式。而且只要配置幾個簡單的選項就可以使用了,不需要單獨啟動一個第三方的只用來監控連接的應用程序
2. jstatd是jdk提供的一個單獨的工具,一個主機只需要運行一個jstatd就可以監控主機上所有的java application,而因為jmx是集成在jvm中,如果主機上有多個java應用程序需要監控,需要每個java應用程序配置相應的jmx選項,而且遠程服務端口不能相同,client監控時也需要與每個java應用程序建立單獨的連接
3. java應用程序啟動時如果沒有配置相應的jmx選項,則在運行周期內都無法遠程監控應用程序,這可能會喪失定位問題的機會。而jstatd需要監控時,可以隨時運行並進行監控在jvisualvm中,只有通過jstatd連接才能使用visualGC插件功能
4. jstatd server的端口是隨機選擇的,在有些情況下可能無法使用。比如我司的辦公區域與生產區域之間網絡設置了防火牆,只允許某個范圍的端口通過,這是公司級的,某個團隊無法修改防火牆策略。同時辦公區域也不能直接ssh訪問生產區域服務器,必須經過一個relay,也不能使用jstatd over ssh的方式。個人覺得jstatd不能在啟動時顯示指定服務的端口是它的一個槽點

5. jstatd不支持cpu監控


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM