JVM–基础–27.2–工具–VisualVM–远程连接
1、准备工作
准备工作是为了测试使用
1.1、代码地址
https://gitee.com/DanShenGuiZu/learnDemo/tree/master/visualvm-learn/demo1
1.2、将jar包放到机器上
2、远程连接–JMX方式
2.1、修改JDK配置文件
# 进入修改目录
cd /usr/local/jdk1.8/jre/lib/management
# 拷贝配置文件
cp jmxremote.password.template jmxremote.password
# 去掉 # monitorRole QED 的注释符号
# 去掉 # controlRole R&D 的注释符号
sed -i 's/# monitorRole/monitorRole/p' jmxremote.password
sed -i 's/# controlRole/controlRole/p' jmxremote.password
# 查看内容
cat jmxremote.password
2.2、添加java启动参数
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=192.168.187.139
-Dcom.sun.management.jmxremote.rmi.port=9999
"
2.2.1、-Djava.rmi.server.hostname=192.168.187.139
远程服务器的主机名
2.2.2、-Dcom.sun.management.jmxremote
- 是否支持远程JMX访问
- 默认:true;
2.2.3、-Dcom.sun.management.jmxremote.port
- JMX远程监控端口号
- 需要在防火墙开放该端口
2.2.4、-Dcom.sun.management.jmxremote.ssl=false
- 表示是否对连接开启SSL加密
- 默认:开启
2.2.5、-Dcom.sun.management.jmxremote.authenticate=false
- 是否需要开启用户认证
- 默认:开启
- 如果开启需要额外配置授权文件
2.2.6、 -Dcom.sun.management.jmxremote.rmi.port=9999
- RMI端口号(远程连接的端口)
- JMX在远程连接时,会随机开启一个RMI端口作为连接的数据端口
- 可以和JMX端口号相同
- 这里我们指定了RMI的端口号
2.3、启动java
# 启动java
nohup java -server \
-Xms512m \
-Xmx512m \
-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=192.168.187.139 \
-Dcom.sun.management.jmxremote.rmi.port=9999 \
-jar /home/hd/java/demo1-0.0.1-SNAPSHOT.jar /home/hd/java/log.log 2>&1 &
# 查看
ps -ef |grep java
2.4、 连接
3、远程连接–jstatd方式
3.1、配置安全策略
vim /usr/local/jdk1.8/jre/lib/security/java.policy
新增内容
permission java.security.AllPermission;
或者执行下面命令
# 在sun.security.pkcs11.disableKeyExtraction行的下一行,新增permission java.security.AllPermission;
sed -i '/"sun.security.pkcs11.disableKeyExtraction"/a\ permission java.security.AllPermission;' /usr/local/jdk1.8/jre/lib/security/java.policy
3.2、启动jstatd
/usr/local/jdk1.8/bin/jstatd -J-Djava.security.policy=all.policy &
启动后会开启注册端口1099和一个随机的连接端口,注册端口也可通过-p参数指定,如
/usr/local/jdk1.8/bin/jstatd -J-Djava.security.policy=all.policy -p 10003 &
3.3、查看
通常VisualVM会自动检测到jstatd连接并添加节点
如果没有自动添加,可以手动添加连接