1、JMX:

JMX(Java Management Extensions)Java管理扩展,是一个为应用程序植入管理功能的框架,是一套标准的代理跟服务。总而言之,它可以使得基于java语言开发的程序能被管理,并且是可扩展的。现在,IBM、jboss、hibernate、tomcat等各种应用都号称实现了JMX规范。

 

1)应用场景:

  • 用来管理应用程序的配置项,可以在运行期动态改变配置项的值,而不用妨碍程序的运行,这对与许多可靠性要求较高的应用来说非常方便;
  • 可以通过jconsole等JMX客户端工具动态改变配置项的值;
  • 用来对应用程序的运行状态进行监控,比如对一个大型交易处理程序,我们要监控当前有多少交易在排队中,每笔交易的处理时间是多少,平均每处理一笔交易要花多少时间等等;

 

2、JConsole:

JConsole是从Java5中开始引入的一个用于对JVM性能和资源消耗进行监控的图形化工具。 JConsole可以连接本地的Java程序,也可以连接远程的Java程序。

 

1)可以使用jconsole监视本地应用程序和远程应用程序:

如下图,直接输入jconsole命令后,会弹出如下对话框。

linux下使用JMX监控tomcat_JMX



  • 如果监控本地程序,可以输入jconsole pid,其中pid是线程id;
  • 如果监控远程程序,需要输入远程应用的ip和port,其中port是在启动应用是,使用java启动参数:-Dcom.sun.management.jmxremote.port=12345 指定的端口号。

 

2)远程连接时的认证:

  • 可以使用下面的java启动参数指定远程服务器的用户认证:

-Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/jconsole/jmxremote.password  

  • 如果不需要认证,那么使用下面的java启动参数:

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

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

 

3、使用JConsole监控tomcat:

1)修改bin/catalina.sh文件,在# -----Execute The Requested Command ------上面,加上如下内容:

CATALINA_OPTS="-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=9004

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

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

2)重启tomcat;

3)打开Jconsole,选择远程进程,然后输入远程tomcat 的ip和上面设置的端口(9004);

4)由于没有使用认证,所以会不安全下提示;