您当前的位置:首页 > 互联网教程

如何利用 JConsole观察分析Java程序的运行

发布时间:2025-05-22 02:55:26    发布人:远客网络

如何利用 JConsole观察分析Java程序的运行

一、如何利用 JConsole观察分析Java程序的运行

一、JConsole是什么从Java 5开始引入了 JConsole。JConsole是一个内置 Java性能分析器,可以从命令行或在 GUI shell中运行。您可以轻松地使用 JConsole(或者,它更高端的“近亲” VisualVM)来监控 Java应用程序性能和跟踪 Java中的代码。二、如何启动JConsole如果是从命令行启动,使 JDK在 PATH上,运行 jconsole即可。如果从 GUI shell启动,找到 JDK安装路径,打开 bin文件夹,双击 jconsole。当分析工具弹出时(取决于正在运行的 Java版本以及正在运行的 Java程序数量),可能会出现一个对话框,要求输入一个进程的 URL来连接,也可能列出许多不同的本地 Java进程(有时包含 JConsole进程本身)来连接。如图所示:想分析那个程序就双击那个进程。三、如何设置JAVA程序运行时可以被JConsolse连接分析本地程序(相对于开启JConsole的计算机),无需设置任何参数就可以被本地开启的JConsole连接(Java SE 6开始无需设置,之前还是需要设置运行时参数-Dcom.sun.management.jmxremote)无认证连接(下面的设置表示:连接的端口为8999、无需认证就可以被连接) Java代码-Dcom.sun.management.jmxremote.port=8999\-Dcom.sun.management.jmxremote.authenticate=false\-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.port=8999\-Dcom.sun.management.jmxremote.authenticate=false\-Dcom.sun.management.jmxremote.ssl=false

二、jconsole 为什么远程连接连接失败

根据oracle网站上的文档,本地使用jconsole没有问题。但当我从windows连接到linux时(centos5.4)时,老是连接不上)。原因是Linux上JVM给jconsole的RMI配置文件不对,

jvm使用了hostname-i的IP地址,我的/etc/hosts上127.0.0.1,所以远程老是连接不上。

只要在java启动参数中加入-Djava.rmi.server.hostname=192.168.0.10显示说明JVM返回给jconsole的IP地址即可。

挡在java启动参数中加入-Dcom.sun.management.jmxremote.port=6666时,jvm回去读取 JRE_HOME/lib/management/jmxremote.password和 JRE_HOME/lib/management/jmxremote.access文件。其中jmxremote.password说明远程访问的用户名和密码, jmxremote.access说明用户的访问权限,有readonly和readwrite选项。 jmxremote.password可以有jmxremote.password.template生成,同时要注意修改jmxremote.password的访问权限为用户只读,组和others无权限, chmod 0400./jmxremote.password。

否则会出现Error: Password file read access must be restricted:/root/jdk1.6.0_26/jre/lib/management/jmxremote.password

一下两个选项分别禁止ssl验证和无用户名密码访问

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false

三、如何使用jconsole监控tomcat

JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM。可以监控本地和远程的java程序。

Jconsole可以监视本地Tomcat和远程服务器上的Tomcat

1、如果要监视远程Java进程,需要在远程服务器上做相应的设置

1)windows系统下,需要修改 tomcat主目录\bin\ catalina.bat文件

set JAVA_OPTS=%JAVA_OPTS%-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"

set JAVA_OPTS=%JAVA_OPTS%-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"

-Dcom.sun.management.jmxremote

-Dcom.sun.management.jmxremote.port="8080"

-Dcom.sun.management.jmxremote.authenticate="false"

-Dcom.sun.management.jmxremote.ssl="false"

2)Linux系统下,需要修改 tomcat主目录\bin\ catalina.sh文件

CATALINA_OPTS="$JAVA_OPTS-Djava.rmi.server.hostname=218.28.198.188-Dcom.sun.management.jmxremote.port=9527-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false"即可

然后使用JConsole就可以监控Tomcat啦。

点击%JAVA_HOME%\bin下的jconsole.exe即可