JVisualVM监控跑在liunx上面的jar包JVM状态

前言

如果有需要观察项目是否有内存泄漏的情况。

思路:
(1)找到java所在地management 文件夹,根据模板创建一个jmxremote.password,并去掉 # monitorRole QED 和 # controlRole R&D 这两行前面的注释符号
(2)在 ~/.bash_profile 文件夹中新增 属性名JAVA_OPTS
(3)打开防火墙指定端口或关闭防火墙
(4)启动java程序的时候需要加上$JAVA_OPTS这个属性
(5)连接根据端口连接就行

一、创建jmxremote.password

这个并不是必须的!!!如果是使用tomcat就需要,如果是jar包启动的一般就不需要了

查找java所在地:

han@ubuntu:/etc$ whereis java
java: /usr/bin/java /usr/share/java /usr/lib/jvm/java-8-openjdk-amd64/bin/java /usr/share/man/man1/java.1.gz
han@ubuntu:/etc$ ls -lrt /usr/bin/java
lrwxrwxrwx 1 root root 22 4月   2 15:54 /usr/bin/java -> /etc/alternatives/java
han@ubuntu:/etc$ ls -lrt /etc/alternatives/java
lrwxrwxrwx 1 root root 46 4月   2 15:54 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

a.进入JAVA_HOME\jre\lib\management\目录
b.拷贝jmxremote.password.template这个文件到当前目录, 并改名为jmxremote.password
c.打开jmxremote.password文件,去掉 # monitorRole QED 和 # controlRole R&D 这两行前面的注释符号

在这里插入图片描述


二、在 ~/.bash_profile 文件夹中新增 属性名JAVA_OPTS

# 进入.bash_profile文件
vim ~/.bash_profile 

#加上配置 ,配置中还需要修改ip才能使用
JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=172.16.1.53 -Dcom.sun.management.jmxremote.rmi.port=9999"

#重新加载文件
source ~/.bash_profile

在这里插入图片描述
各参数含义:
-Djava.rmi.server.hostname=172.16.1.53 :远程服务器的主机名;  
-Dcom.sun.management.jmxremote :是否支持远程JMX访问,默认true;
-Dcom.sun.management.jmxremote.port :是JMX远程监控端口号,需要在防火墙开放该端口;
-Dcom.sun.management.jmxremote.ssl=false :表示是否对连接开启SSL加密,默认开启;
-Dcom.sun.management.jmxremote.authenticate=false :是否需要开启用户认证,默认开启,如果开启需要额外配置授权文件;
-Dcom.sun.management.jmxremote.rmi.port=9999 :RMI端口号,JMX在远程连接时,会随机开启一个RMI端口作为连接的数据端口,可以和JMX端口号相同。


三、打开防火墙指定端口或关闭防火墙

1、查看firewall服务状态

systemctl status firewalld

出现Active: active (running)切高亮显示则表示是启动状态。
出现 Active: inactive (dead)灰色表示停止,看单词也行。
2、查看firewall的状态
firewall-cmd --state

3、开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
4、查看防火墙规则

firewall-cmd --list-all
5、查询、开放、关闭端口

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

四、在启动的时候需要带上$JAVA_OPTS属性

在这里插入图片描述

五、连接

如果需要输入用户名密码的时候输入就行,一般不需要
在这里插入图片描述
参考:https://blog.csdn.net/u011391839/article/details/76984995
参考:https://blog.csdn.net/weixin_34049948/article/details/92303604


后言

啊哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值