Jconsole支持对本地和远程Java进程的监控。
1. 监控本地Java进程
对于本地的Java进程很简单,只需要在启动需要监控的Java程序后,启动Jconsole,在本地进程列表中选择该进程点击“连接”按钮即可。例如,我们先启动JDK自带的另一个监控工具JVisualVM,然后启动JConsole:
在JConsole的本地进程列表中可以看到JVisualVM进程,选择并连接之。
2. 监控远程Java进程
2.1 设置远程监控相关选项
对于远程Java进程的连接,会要麻烦些,首先需要在需监控的远程Java程序启动脚本中加入与JVM远程监控相关的选项:
1) 开启JVM远程监控
-Dcom.sun.management.jmxremote=true
2) 监控的IP地址
-Djava.rmi.server.hostname=192.168.91.166,远程进程所在主机的IP。
3) 监控的端口
-Dcom.sun.management.jmxremote.port=50013,这个端口值可以任意设置,但在之后用Jconsole连接这个远程进程的时候,远程进程中的port一定要和此处的设置一致,并且一定不要和远程进程的服务端口区分开。
4) 是否禁用ssl验证
-Dcom.sun.management.jmxremote.ssl,false为禁用,true为启用。
5) 是否需要用户密码验证
-Dcom.sun.management.jmxremote.authenticate,false为不需要验证,true为需要验证。但我在Win7(32位、64位)中tomcat5.5.23下试着将该选项设置为true,tomcat无法启动,命令行窗口一闪而过。
有试过象参考文献中所说的,修改jdk\jre及jre下的jmxremote.password和jmxremote.access,又有尝试象参考文献4中所说的,修改jdk\jre及jre下结果也是一样的。结果也是一样的management.properties,结果均一样的。
有哪位遇到过,并解决了这个问题,如果看到这儿的,希望可以帮忙解答一下,先谢过了!!
2.2 连接远程Java进程
有两种连接远程Java进程的方法,效果是一样的。
1) 命令行中连接远程Java进程
直接在命令行中启动JConsole的时候,带远程进程参数:
2) JConsole图形界面上连接远程Java进程
先在命令行中不带远程进程参数启动JConsole,然后在JConsole新建连接对话框中选择远程进程,填入远程进程参数:,最后点击“连接”按钮。
参考文献
1. http://space.itpub.net/23071790/viewspace-701205
2. http://docs.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html
3. http://blog.csdn.net/lijiecong/article/details/6882267
4. http://www.iteye.com/problems/34420