需求背景:
需要观察springboot项目线上堆内存的运行情况。
项目情况:
1. springboot项目部署到阿里云系统centOS7。
2. 部署springboot项目命令:
java -jar
-Djava.rmi.server.hostname=35.98.654.698(随便写的ip)
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9001
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
test-0.0.1-SNAPSHOT.jar
3. 我这边的防火墙是关闭的且在ECS服务器安全组配置9001端口开放,不是关闭的童鞋请自己处理,再此不做说明。
使用步骤:
1. 打开jdk安装目录 D:\DevelopTools\Jdk\bin ,找到 jvisualvm.exe,打开,展示如下:
2. 打开窗口如下,输入,阿里云外网IP+端口号,例如:35.98.654.698:9001,点击确定
3. 本来以为可以连上的,(꒦_꒦) ,报 “使用service:jmx:rmi:///...无法连接” 字样的错误。查看好多资料,都是说IP不对,或者防火墙没开启之类的,我这边IP是阿里云外网IP,防火墙是关闭的,且9001端口已经加入了安全组开放。
4. 后来通过查资料了解到,原来JMX server指定的监听端口号外,JMXserver还会监听一到两个随机端口号
5. 通过 jps -l 命令查到 当前 test-0.0.1-SNAPSHOT.jar 的 pid , 比如是 3297
6. 然后使用 lsof -i|grep 3297 命令查到所有的相关端口:
7. 然后把以上两个端口 43728 和 44360 添加到阿里云安全组就可以啦,奥利给。
以上原创,转载注明出处,写作不易,如果觉得帮助了你,请支持: