使用Java自带的VisualVM监控远程服务器部署在Docker容器中的Java项目并使用Mat在线工具排查服务器内存泄露或内存溢出的原因。项目解耦,与业务模块分离单独运行定时任务

事情是这样的,我们项目最近应业主的要求迁移到了新的服务器,起初一切正常,部署、上线、测试都没有问题,项目大概运行了一周的工作日时间都没出现问题,直到周六那天,项目经理打电话过来说服务器崩了,图片上传不了,验证码加载不出来等各种问题。。。然后火速连到服务器docker stats --no-stream查看了一下Docker 命令中用来显示容器资源利用情况,发现这个Java服务一直在持续的上涨到15G左右(正常也就几百兆),以至于涨到服务器挂掉了。。。额,我初步怀疑是定时任务太多的问题。

在这里插入图片描述

于是我马上咨询单位里经验比较丰富的大佬,让我去监控一下程序的进程,内存使用等情况。如果临时使用的话,就让我临时处理的话就新建一个boot项目,把定时任务都丢里面去构建一个jar,直接在服务器里java -jar跑。这个方法可能可以维持一段时间,因为本质问题还没得到解决,后面还是会出问题。于是我去上网搜了一下有个JDK文件夹里叫VisualVM的工具可以实时监控。

在这里插入图片描述

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

在这里插入图片描述

下面我将教大家怎么连到Docker容器中的Java服务进行实时监控

1.修改docker-compose.yml文件

在文件中添加连接端口,这里设置成1199

在这里插入图片描述

2.修改Dockerfile文件

添加配置
-Djava.rmi.server.hostname = xxx.xxx.xxx.xxx 指定宿主机的公网ip
-Dcom.sun.management.jmxremote.port = xxxx 用于Java VisualVM远程监控的端口
-Dcom.sun.ma

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

令人作呕的溏心蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值