一、使用jstatd

linux下使用 hostname -i 查看hostname对应的IP

确保远程连接使用的ip在列表里,不在的话jvisualvm无法使用ip远程连接。

不在的话vi /etc/hosts 在里面加入。

进入jdk的bin目录下:/usr/java/jdk1.8/bin/

新建文件jstatd.all.policy

写入内容:

grant codebase “file:${java.home}/../lib/tools.jar” {
permission java.security.AllPermission;
};

编写启动脚本:startJstatd.sh

#!/bin/bash
nohup $JAVA_HOME/bin/jstatd -J-Djava.rmi.server.hostname=172.16.200.82 -p 1099 -J-Djava.security.policy=jstatd.all.policy -J-Dcom.sun.management.jmxremote.authenticate=false -J-Dcom.sun.management.jmxremote.ssl=false -J-Dcom.sun.management.jmxremote.port=1199 &

(-J-Djava.rmi.server.logCalls=true 参数能看到日志输出)

脚本里有jstatd 和 jmx的配置。只要jstatd的配置也OJBK。

确保linux的jstatd端口(默认1099)对外开放,然后使用jvisualvm远程连接即可。

二、使用jmx

找到配置文件$JAVA_HOME/jre/lib/management/jmxremote.password.template,复制一份并改名为jmxremote.password,

使用chmod +w jmxremote.password 将文件加入写权限

然后打开jmxremote.passwrod,取消以下两行注释:

#monitorRole QED#controlRole R&D monitorRole为用户名 QED为密码 执行:chmod 400 jmxremote.password指令。 JVM启动脚本加入启动参数:JAVA_PARAMS=”$JAVA_PARAMS -Djava.rmi.server.hostname=47.95.10.167 -Dcom.sun.management.jmxremote.port=1199 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true”(可以关闭验证也OJBK)