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命令后,会弹出如下对话框。
- 如果监控本地程序,可以输入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)由于没有使用认证,所以会不安全下提示;