Java VisualVM监控部署在Docker容器中的java项目

有时候程序内存溢出或者做压力测试的时候我们就需要监控我们的程序的运行状况,包括内存使用情况、CPU使用情况等等,Java VisualVM就是监控这些数据的一个很好的工具,它在JDK安装目录的bin目录下。

在打开这个工具之前,我们先对我们部署的java项目做一些配置。我这里是使用Docker-Compose对容器进行管理,所以我这里主要就是修改docker-compose.yml文件和docker容器的构建文件Dockerfile。

红框中的那一句就是为了使用Java VisualVM实现监控而多加的一行,这一行的目的是为了把容器内的1199端口挂载到宿主机的1199端口。

红框中的内容就是为了使用Java VisualVM实现监控而多加的内容。其中

-Djava.rmi.server.hostname指定宿主机的公网ip
-Dcom.sun.management.jmxremote.port用于Java VisualVM远程监控的端口
-Dcom.sun.management.jmxremote.rmi.port指定“用于Java VisualVM远程监控的端口”需要挂载到宿主机的哪个端口
-Dcom.sun.management.jmxremote.authenticate配置是否需要验证,如果true,则在使用Java VisualVM连接的时候需要你认证账号密码
-Dcom.sun.management.jmxremote.ssl不指定ssl

最后开放上面配置的1199端口,如果你的是阿里云服务器,就像我下图一样,在阿里云控制台配置安全组规则。别的云服务器安全策略配置方式可能不一样,有的可能是配置防火墙,反正目的就是向外开放1199端口。

修改好这两个文件之后重新构建你的容器,然后在你本地就可以远程监控你的Java程序了。

最后监控成功,如下图

当我们需要“堆dump”操作的时候,dump文件是生成在远程服务器的docker容器内的,如下两张图,我们需要把dump文件拿到本地来分析的话,需要找到dump文件的位置

所以我们要把容器内的tmp目录挂载在宿主机的tmp目录,这样我们就可以通过宿主机拿到我们的dump文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值