1. 通过JMX连接(不支持Visaul GC插件)
以一个机遇SpringBoot项目的的打包编译好的jar文件为例,文件名为demo.jar
nohup java
-Djava.rmi.server.hostname=ipAddress #ip地址
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1099 #设置端口
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-jar /root/app/data-test-0.0.1-SNAPSHOT.jar > nohup.file 2>&1 &
需要注意的是hostname对应远程服务器的ip地址,同时在/etc/hosts文件中加入一条
#本机ipAddress #hostName
由于启动参数过长,我们可以定义系统环境变量来表示
export JVM = '-Djava.rmi.server.hostname=#ipAddress -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false'
然后 source文件生效。
启动时我们就可以用如下的命令
nohup java $JVM -jar demo.jar > nohup.file 2>&1 &
然后打开jconsole或者jvisualvm远程连接即可。
2. 通过jstatd连接(不支持CPU监控)
有些文章会在$JAVA_HOME/jre/lib/security/java.policy直接修改,本人我是不推荐的,能不动到原来的配置文件进来就不要碰到,而且在java.policy直接修改,赋予的权限太高,也不安全。
cd $JAVA_HOME/bin
# 新建安全策略文件
vim jstatd.all.policy
# 若没有配置 JDK 环境变量,file 后面添加 tool.jar 的绝对路径
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
启动jstatd
cd $JAVA_HOME/bin
# 启动命令:(启动成功后,没有报错且有日志输出就是正常的)
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=66.22.33.44 -J-Djava.rmi.server.logCalls=true
## 解释:
# -J-Djava.rmi.server.hostname=66.22.33.44 这里要填的是公网IP
# -J-Djava.rmi.server.logCalls=true 是否开启日志,第一次配置最好开启,可以确定是否启动成功,如果是已经配置很多次了,能确保成功的,建议就把该日志关掉,因为该日志的产生量不小,容易撑爆硬盘
## 在生产环境的配置如下(去掉日志打印,加入后台运行):
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=66.22.33.44 &
#端口默认1099
nohup ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=66.22.33.44 -p port > nohup.file 2>&1 &
参考:
https://blog.csdn.net/luosai19910103/article/details/75574725
https://blog.csdn.net/u010004317/article/details/82948040#commentBox