docker使用jconsole远程监控jvm

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

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

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

docker使用jconsole远程监控jvm_第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):

docker使用jconsole远程监控jvm_第2张图片
图(2)


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

图(3)

docker使用jconsole远程监控jvm_第3张图片
图(3)

Done!

你可能感兴趣的:(docker使用jconsole远程监控jvm)