java-jvisualvm遠端監控阿里雲伺服器上的Tomcat
一、修改要訪問的遠端主機(Linux)tomcat相關檔案
1.開啟$CATALINA_HOME/bin/catalina.sh,在第一行註釋後面新增,也就是#!/bin/sh後新增,
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.*.* -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/opt/apache-tomcat-9.0.1/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/opt/apache-tomcat-9.0.1/conf/jmxremote.access"
2.備註:
-Dcom.sun.management.jmxremote 啟用JMX遠端監控
-Djava.rmi.server.hostname=192.168.*.* 連線的伺服器地址
-Dcom.sun.management.jmxremote.port=8999 jmx連線埠 可以自己定義
-Dcom.sun.management.jmxremote.ssl=false 是否ssl加密
-Dcom.sun.management.jmxremote.authenticate=true 遠端連線需要密碼認證(如為false後面的可省略);
-Dcom.sun.management.jmxremote.password.file=/opt/apache-tomcat-9.0.1/conf/jmxremote.password 指定連線的使用者名稱和密碼配置檔案
-Dcom.sun.management.jmxremote.access.file=/opt/apache-tomcat-9.0.1/conf/jmxremote.access 指定連線的使用者所擁有許可權的配置檔案
連線伺服器地址可以寫為公網地址,linux使用命令 hostname -i 檢視輸出是否為公網地址,不是的話修改/etc/hosts檔案,指向公網地址。
3.其中jmxremote.password檔案:
monitorRole roor123
controlRole root123
4.jmxremote.access檔案:
monitorRole readonly
controlRole readwrite
5.重啟Tomcat服務。
6.使用命令 lsof -i:8999 檢視埠號是否被監聽。
7.使用命令 netstat -antup |grep [pid]
會發現tomcat多開啟了兩個埠號 39143 38202。
因為當我們新增 -Dcom.sun.management.jmxremote.port 引數後不止會開啟指定的埠,還會隨機開啟兩個埠號,一個作為Jms的資料通訊埠,另一位作為jconsole的本地連線埠。從阿里雲控制檯開放指定埠和兩個隨機埠,如果開啟有防火牆,同樣放開,不然會導致連線不上。
二、在本地(Windows)建立jvisualvm--JMX連線
1.開啟本地安裝JDK_HOME/bin目錄:{JAVA_HOME}\bin
2.開啟:jvisualvm.exe
3.右鍵新增遠端主機:
4.新建JMX連線
右鍵開啟此連線即可。
參考資料:
https://www.cnblogs.com/quyanhui/p/5924474.html
https://blog.csdn.net/caomiao2006/article/details/51589836