java visualvm远程监控_远程JVM监控方法
环境说明:
jdk启动的jar所在系统的版本:CentOS Linux release 7.6.1810 (Core)
jdk版本:jdk-8u261-linux-x64
客户端win10,和服务端使用同一个jdk版本
Centos7.6替换自带的jre安装jdk
先确保安装了jdk。由于我本身安装的是jre,所以先卸载,然后安装jdk。
操作方法如下:
查询已安装的java程序
# rpm -qa | grep java-1.8java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64java-1.8.0-openjdk-headless-1.8.0.232.b09-0.el7_7.x86_64
卸载jre
# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.232.b09-0.el7_7.x86_64
参考:https://www.cnblogs.com/cannel/p/11104178.html
jvisualvm 添加 jstatd 连接,远程监控Jvm
在java安装目录:/usr/java/default/lib 新建文件all.policy
# cd /usr/java/default/lib# vi all.policy
给all.policy
添加如下内容:
grant codebase "file:/usr/java/default/lib/tools.jar" { permission java.security.AllPermission;};
通过jstatd启动RMI服务,执行:
$ rmiregistry -J-Djava.rmi.server.codebase=file:/usr/java/default/lib/tools.jar 1099 &$ jstatd -J-Djava.security.policy=/usr/java/default/lib/all.policy -p 1099 -J-Djava.rmi.server.hostname=47.xxx.xxx.xx2 &
hostname注意需要配置为公网ip
开启JVM的JMX监控
示例:
java -Dcom.sun.management.jmxremote.port=7199 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=47.xxx.xxx.xx2 -Xms512m -Xmx512m -jar k12platform-admin-8087.jar &
在防火墙中配置放行7199端口。如果为云主机,在安全组中配置放开上面的端口。
在防火墙中配置打开服务监听的端口
执行netstat -nltp命令可以查看JVM进程监听的端口,本示例中启动的java进程的PID为18962,通过下面的查询可知需要额外放行的两个端口为33407和33889。
# netstat -nltp## 其中:-n表示表示输出中不显示主机,端口和用户名,-l表示只显示监听listening端口,-t表示只显示tcp协议的端口,-p表示显示进程的PID和进程名称。Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name...tcp 0 0 0.0.0.0:33889 0.0.0.0:* LISTEN 19209/javatcp 0 0 0.0.0.0:33407 0.0.0.0:* LISTEN 18962/jstatd
如果为云主机,在安全组中配置放开上面的端口。
给Java VisualVM安装插件
插件下载:
https://visualvm.github.io/pluginscenters.html
https://visualvm.github.io/uc/8u131/updates.html
也可以在线安装,安装如下几个插件:
一些监控界面示例
jconsole效果
启动C:\Program Files\Java\jdk1.8.0_73\bin\jconsole.exe
VM概要
CPU、内存使用等
Java VisualVM效果
启动C:\Program Files\Java\jdk1.8.0_73\bin\jvisualvm.exe