使用jvisualvm通过JMX的方式远程监控JVM的运行情况,步骤如下
在启动java程序时加上如下几个参数
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=22222
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=22222 -jar test.jar程序就在22222端口上打开了jmx,客户端可以通过jvisualvm来进行连接,下面来说一个客户端的配置。
如果遇到启动不起来,并抛出类似一下异常
[root@badboy test]# Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: test: test: Name or service not known
则需要在/etc/hosts 添加 主机名字映射到IP地址的方法
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 test
客户端的配置
在文件菜单下打开“添加远程主机”
然后再在主机下右键“添加JMX连接”
在红框内输入设置的端口:22222
在连接一栏中填入主机和端口信息
这里的主机是要程序运行的机器,这里我们要监控192.168.1.4上的程序
端口是上面启动时-Dcom.sun.management.jmxremote.port参数指定的端口
由于我们将-Dcom.sun.management.jmxremote.authenticate设置为了false,所以无需用户名和密码
点击确定
然后双击查看信息。