本地jvisualvm远程监控阿里云java进程

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连接,填好连接信息,点击确定就可以了:

图片.png

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 - 技术研究与问题解决 - 博客园

你可能感兴趣的:(本地jvisualvm远程监控阿里云java进程)