博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Java VisualVM监控远程服务器部署在Docker容器中的java项目
阅读量:2240 次
发布时间:2019-05-09

本文共 928 字,大约阅读时间需要 3 分钟。

有时候程序内存溢出或者做压力测试的时候我们就需要监控我们的程序的运行状况,包括内存使用情况、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文件
在这里插入图片描述
在这里插入图片描述

转载地址:http://jrqbb.baihongyu.com/

你可能感兴趣的文章
【Linux】多线程和多进程 及其应用场景
查看>>
【C++】构造函数中必须通过初始化列表来进行初始化情况
查看>>
【操作系统】系统调用的概念
查看>>
【C++】构造函数、析构函数抛出异常的问题
查看>>
【C++】关于vector<bool>
查看>>
【操作系统】内存碎片产生原因及终极解决办法
查看>>
幂等性验证思想
查看>>
DB理论--数据存储方式
查看>>
PB协议的说明与使用
查看>>
什么是TPS,什么是QPS,区别是什么?
查看>>
git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
查看>>
arraylist扩容时机java8
查看>>
logback中additivity的理解
查看>>
一篇文章搞懂hash,hashcode,equals,==的用法
查看>>
mysql数据库,悲观锁。for update 的用法。
查看>>
springboot+jta+atomikos多数据源和 springboot+mybatisplus+aop实现数据库读写分离而引发的一些思考
查看>>
java面试中常考的一些面试sql语句
查看>>
一个字节等于多少位?
查看>>
帧框架frameset的用法总结
查看>>
java1.8中创建hashmap的初始化大小设置标准
查看>>