首先jvisualVM是JDK自带的,位置:jdk的bin包下
以我的示例:
双击打开
在本地那一栏中会显示本机的所有java程序。
接下来说下,怎么远程监控java程序呢?
首先修改启动jar包的参数:
原始:nohup java -jar weiwen-provider-uac.jar &
修改如下:(注释可省略)
nohup java
-Djava.rmi.server.hostname=192.168.0.10 #ip地址
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8066 #设置端口
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-jar weiwen-provider-uac.jar
参数介绍
指定了服务器主机名
Djava.rmi.server.hostname=192.168.0.10
指定了JMX启动的代理端口,这个端口就是visualvm要连接的端口(8066端口不能被别的程序使用netstat -anp | gerp 8066)
Dcom.sun.management.jmxremote.port=8066
指定了JMX是否启用ssl
Dcom.sun.management.jmxremote.ssl=false
指定了JMX是否启用鉴权(需要用户名,密码鉴权)
Dcom.sun.management.jmxremote.authenticate=false
修改完启动参数,将java程序启动,如下:
启动成功后,咱们用jvisualVM来监控java程序
右键点击远程,添加远程主机
把刚才的配置的ip,输入进去
然后,右键点击刚才配置的远程主机,点击添加JMX链接
点击确定即可
在此监控java程序的内存,cpu等情况
异常处理:
以下是在远程监控服务器上jvm(java程序)时报的错:
解决方案:
在启动参数中加入一行参数即可:如下
同时指定为本地jmx client提供服务的端口与远程服务端口相同
-Dcom.sun.management.jmxremote.rmi.port=8066
完整配置如下:
nohup java
-Djava.rmi.server.hostname=192.168.0.10 #ip地址
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8066 #设置端口
-Dcom.sun.management.jmxremote.rmi.port=8066
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-jar weiwen-provider-uac.jar
重新启动即可