启动方式与注意事项:
启动方式:
前台启动不打印日志:
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=服务器IP
前台启动并打印日志:
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=服务器IP -J-Djava.rmi.server.logCalls=true
日志输出效果:
后台启动并且不打印日志:
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=服务器IP &
后台启动并且不打印日志并指定端口:
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=服务器IP -p 端口 -J-Djava.rmi.server.logCalls=true
后台启动且打印日志并指定端口:
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=服务器IP -p 端口 -J-Djava.rmi.server.logCalls=true &
日志输出效果:
注意事项:
如果你使用了指定端口的方法启动,jstatd启动后不只使用了你指定的那个端口,还会启动一个随机端口,所以实际上需要开放两个端口。
[root@xxx bin]# netstat -antup|grep jstatd
tcp 0 0 0.0.0.0:1099 0.0.0.0:* LISTEN 18490/./jstatd
tcp 0 0 0.0.0.0:34476 0.0.0.0:* LISTEN 18490/./jstatd
我们看到,jstatd启动后使用了1099和34476端口,所以这两个端口都需要开放。端口开放有两个地方需要检查,一是机器本身的防火墙端口开放,二是云服务器(如果有)的安全组策略。
关闭方式:
使用一下语句找到jstatd的pid
ps -ef | grep jstatd
找到对应的pid(第一个数字是pid,后面的不是)后利用一下语句杀手对应的进程:
sudo kill -9 35189
再利用第一个语句查看对应进程又没被杀死,没有对应pid显示即表示成功。
参考文章地址:
本地jvisualvm通过jstatd远程监控GC
使用jvisualvm远程监控服务器上的jvm_jvisualvm远程监控jvm_行云墨客的博客-CSDN博客