1.JMX监控
(1)远程Java程序运行参数配置
nohup java -Dcom.sun.management.jmxremote.port=1008 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=[实例公有IP] -jar xxx.jar &
参数解释:
配置远程连接的IP:-Djava.rmi.server.hostname=[实例公有IP]
配置远程连接的端口号:-Dcom.sun.management.jmxremote.port=1008
配置是否开启ssl传输:-Dcom.sun.management.jmxremote.ssl=false
配置是否开启校验:-Dcom.sun.management.jmxremote.authenticate=false
(2)添加安全组规则
把上面设置远程连接的端口号1008
加入安全组规则配置成开放
(3)连接
打开jvisualvm,点击远程->添加远程主机,输入[实例的公网ip]:
点击确定:
点击ali右键,右键添加JMX连接,填好连接信息,点击确定就可以了:
jconsole也是类似的,填好ip和端口就可以了
如果无法连接,看下与远程连接端口相同的PID下是否有其他未开放的端口:
如上图中将蓝色框中未在安全组规则的添加到安全组规则,再重新连接
原因:除了JMX Server指定的监听端口号,JMX Server还会监听随机端口
ps:重启java进程时,又会生成其他随机端口,需要修改开放的端口号
2.Jstatd 监控
如果想要使用Visual GC插件就需要使用Jstatd连接了,JMX不支持Visual GC。
(1)添加插件
点击工具->插件->配置
在这里:https://visualvm.github.io/pluginscenters.html找到合适自己jdk版本的插件中心链接:
点击需要的插件进行安装:
(2)远程机器配置
在$JAVA_HOME/bin下创建jstatd.all.policy安全策略文件:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
运行jstatd:
$JAVA_HOME/bin/jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=[公网IP] -p [自定义端口号,默认1099] &
(3)添加安全组规则
同JMX
(4)连接
点击ali右键添加jstatd连接
参考:
[1]jmx远程连接阿里云服务器的问题丶一个站在Java后端设计之_橙光游戏网
[2]jstatd jvisualvm 远程监控jvm - 技术研究与问题解决 - 博客园