docker使用jconsole远程监控jvm

在java 程序研发过程中,常常会对已经完成的java程序进行检测和分析,如何查看开发的java程序内存是否有泄漏的风险?

众所周知,java程序是运行在jvm虚拟机上的,如果java程序写的有问题,导致内存一直占用GC回收不掉,那么这个程序运行一段时间后jvm会内存溢出,从而导致项目崩溃。为了检测开发的java程序 jvm内存是否有泄漏,这里我们使用的是  jconsole.exe 。

jconsole.exe 我使用的是jdk1.8 bin目录下的。见下图(1)

图(1)

如何进行远程连接 监控 测试环境  和 开发环境的程序是否有内存泄漏的情况。

介绍一下项目背景

1.docker环境  host模式 启动 java应用
2.java应用使用springboot框架开发。
重点来了!
创建容器时候的命令如下:


```

docker run -d --name <容器名称> \

--net=host \        //这里以host模式创建容器 即 和容器共用一个网络环境

-v /data/app/XXX:/root/ \    //挂载路径

-e TZ="Asia/Shanghai" \    //解决时区问题

docker.io/isuper/java-oracle \    //此处使用的是oracle下的jdk  当然也可以用openJDK

java -Dfile.encoding=UTF8 -Dcom.sun.management.jmxremote.ssl=false \      // 步骤一

-Dcom.sun.management.jmxremote.port=\                                      // 步骤二

-Dcom.sun.management.jmxremote.authenticate=false \                      // 步骤三

-Dcom.sun.management.jmxremote.ssl=false \                                  // 步骤四

-Dcom.sun.management.jmxremote.rmi.port=\                        // 步骤五

-Djava.rmi.server.hostname=远程ip\                                                // 步骤六

-jar -Xms64M -Xmx128M -Xmn20M /root/yourApp.jar                      //步骤七

```


注意:
上面两处的  <port>  需要一致  远程ip :是你要连接监控的机器ip
我这里启动的image是构建dockerfile的后的image。具体按自己实际情况替换掉路径
步骤 1-7 是常规的启动jar程序的main 方法。
这里远程连接是没有使用密码的。使用密码 还没有试过,后面有时间探究出来了再完善此文章。
现在打开本机的jdk1.8目录 打开 jconsole.exe 图(1),随后出现下图图(2):

图(2)

选择远程连接  输入  ====>  远程ip:port  ==========>>点击连接 如下图

图(3)

图(3)

Done!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值