1.JMX監(jiān)控
(1)遠(yuǎn)程Java程序運(yùn)行參數(shù)配置
nohup java -Dcom.sun.management.jmxremote.port=1008 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=[實(shí)例公有IP] -jar xxx.jar &
參數(shù)解釋:
配置遠(yuǎn)程連接的IP:-Djava.rmi.server.hostname=[實(shí)例公有IP]
配置遠(yuǎn)程連接的端口號(hào):-Dcom.sun.management.jmxremote.port=1008
配置是否開(kāi)啟ssl傳輸:-Dcom.sun.management.jmxremote.ssl=false
配置是否開(kāi)啟校驗(yàn):-Dcom.sun.management.jmxremote.authenticate=false
(2)添加安全組規(guī)則
把上面設(shè)置遠(yuǎn)程連接的端口號(hào)1008加入安全組規(guī)則配置成開(kāi)放
(3)連接
打開(kāi)jvisualvm,點(diǎn)擊遠(yuǎn)程->添加遠(yuǎn)程主機(jī),輸入[實(shí)例的公網(wǎng)ip]:

點(diǎn)擊確定:

點(diǎn)擊ali右鍵,右鍵添加JMX連接,填好連接信息,點(diǎn)擊確定就可以了:

jconsole也是類似的,填好ip和端口就可以了
如果無(wú)法連接,看下與遠(yuǎn)程連接端口相同的PID下是否有其他未開(kāi)放的端口:

如上圖中將藍(lán)色框中未在安全組規(guī)則的添加到安全組規(guī)則,再重新連接
原因:除了JMX Server指定的監(jiān)聽(tīng)端口號(hào),JMX Server還會(huì)監(jiān)聽(tīng)隨機(jī)端口
ps:重啟java進(jìn)程時(shí),又會(huì)生成其他隨機(jī)端口,需要修改開(kāi)放的端口號(hào)
2.Jstatd 監(jiān)控
如果想要使用Visual GC插件就需要使用Jstatd連接了,JMX不支持Visual GC。
(1)添加插件
點(diǎn)擊工具->插件->配置
在這里:https://visualvm.github.io/pluginscenters.html找到合適自己jdk版本的插件中心鏈接:

點(diǎn)擊需要的插件進(jìn)行安裝:

(2)遠(yuǎn)程機(jī)器配置
在$JAVA_HOME/bin下創(chuàng)建jstatd.all.policy安全策略文件:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
運(yùn)行jstatd:
$JAVA_HOME/bin/jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=[公網(wǎng)IP] -p [自定義端口號(hào),默認(rèn)1099] &
(3)添加安全組規(guī)則
同JMX
(4)連接
點(diǎn)擊ali右鍵添加jstatd連接
參考:
[1]jmx遠(yuǎn)程連接阿里云服務(wù)器的問(wèn)題丶一個(gè)站在Java后端設(shè)計(jì)之_橙光游戲網(wǎng)
[2]jstatd jvisualvm 遠(yuǎn)程監(jiān)控jvm - 技術(shù)研究與問(wèn)題解決 - 博客園