JConsole监控Tomcat运行情况

来源:互联网 发布:mysql 主键索引作用 编辑:程序博客网 时间:2024/05/17 05:54

 Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的服务器内存很小,甚至可以说几乎不消耗,不失为一款好工具。Jconsole是基于jmx进行通信、信息发送获取的,因此需要对tomcat进行相应设置,jconsole才可监控tomcat.


Windows环境:

服务器端:Windows+jdk1.6.0+tomcat7

客户端:Windows+jdk1.6.0


Windows下,通常是我们的开发环境,设置tomcat相关参数,首先反应是修改catalina.bat等文件,我个人意见这些启动文件能不改尽量不改,没多大好处。幸运的是,我们现在java开发基本上都是基于eclipse或者myeclipse的,因此只要的eclipse或者myeclipse服务器配置中,设置tomcat服务器的启动参数即可。

如myeclipse8.5,windows—>preferencesàmyeclipseàserversàtomcat6,在其JDK optional java vm arguments设置中,输入下述内容即可:

-Xmx256m -Xms128m-Djava.rmi.server.hostname=192.168.10.101-Dcom.sun.management.jmxremote.port=8061-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false

设置完毕后,在myeclipse中启动tomcat,我们即可启动jconsole连接 192.168.0.1:8061进行tomcat的jvm内存监控。



---------------------------------------------------Windows下tomcat以系统服务启动------------------------------------------------------------------

如果是在windows下将tomcat设置为系统服务来启动的话,JConsole就连接不上了,需要设置注册表。

找到下面注册表:
x64位置
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat7\Parameters\JAVA
x32位置
HKEY_LOCAL_MACHINE/SOFTWARE/Apache Software Foundation/Procrun 2.0/×××/Parameters/Java
确保ClassPath已设置
ClassPATH:
D:\Tomcat7\bin\bootstrap.jar;D:\Tomcat7\bin\tomcat-juli.jar;%JAVA_HOME%\lib\tools.jar;
注册列表中的Options项
Options:
-Dcatalina.home=D:\Tomcat7
-Dcatalina.base=D:\Tomcat7
-Djava.endorsed.dirs=D:\Tomcat7\endorsed
-Djava.io.tmpdir=D:\Tomcat7\temp
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl="false"
-Dcom.sun.management.jmxremote.authenticate="false" 
上面红颜色为设置jmx的连接。





---------------------------------------------------------------------------------------------------------------------


CentOS环境:
服务器端: CentOS + jdk1.70 + tomcat 6
客户端: Windows + jdk1.6.0

1、centos服务器上的tomcat 的bin/catalina.sh文件,
在# OS specific support.  $var _must_ be set to either true or false. 这一行之后, 加入以下参数:

JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m" JAVA_OPTS=" -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false " 
2、 linux服务器 执行hostname -i 命令,如果显示的是127.0.0.1,则需要修改/etc/hosts文件,否则jconsole无法链接。
# vi /etc/hosts,修改如下:
原值是: 127.0.0.1 localhost localhost.localdomain localhost
修改为: 服务器的真实IP地址 localhost localhost.localdomain localhost
具体原因是服务器端解释机器名的问题,相关问题见: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6209663

  linux服务器的防火墙,也要开相应端口.

4  客户端:
           1. 运行jdk/bin/jconsole.exe
           2. 指定连接参数:
                   远程主机: 服务器的真实IP地址
                   端口: 1090

5、补充:由于配置了上述文件,在停止tomcat的时,会由于上述配置的端口被占用而无法停掉。2种方式解决:
(1)使用killall -9 java 杀掉所有的java进程。
(2)在catalina.sh中配置CATALINA_PID=pid,这样在停止tomcat的过程中,上述被占用的端口会自动被杀掉。

 


-----------------Jconsole监视远程的Windows服务器上的tomcat ------------------------- 

修改服务器tomcat的bin/catalina.bat文件, 在以下行:
rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%

加入以下参数:

set JAVA_OPTS=-Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 
重启服务器tomcat
打开jconsole,连接。

-------------------------------Linux环境下------------------------------------------------


现在,大多数生产机的tomcat应用都是部署在linux或者unix机器上,windows上很少,本文以linux为例。

还是基于我刚才的原则,不修改catalina.sh等启动文件。我们手工创建一个start文件,内容如下:

JAVA_HOME=/usr/java/jdk1.6.0_06/TOMCAT_HOME=/usr/java/apache-tomcat-6.0.16PATH=$JAVA_HOME/bin:TOMCAT_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport PATHexport CLASSPATHCATALINA_OPTS="-Xmx3072m -Xms3072m -Djava.rmi.server.hostname=192.168.1.101 -Dcom.sun.management.jmxremote.port=8061 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/jre/lib/management/jmxremote.password"export CATALINA_OPTS/usr/java/apache-tomcat-6.0.16/bin/startup.sh

将start文件存放到tomcat bin目录下,则我们只要以下指令即可启动tomcat:

at –f /usr/java/apache-tomcat-6.0.16/bin/start now

由于是生产机的设置,因此设置Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/jre/lib/management/jmxremote.password,jconsole连接192.168.1.101:8061时需要用户名和口令验证,确保安全性。

实际上会用到2个文件,jmxremote.access文件和jmxremote.password文件,前者设置用户,后者设置用户及对应的口令。这连个文件在$JAVA_HOME/jre/lib/management都有,我们只要修改其中的用户和口令即可。

这里一个需要特别注意的是jmxremote.password访问权限一定要设置好,设置成owner可读即可,否则tomcat启动失败,会报类似jmxremote.password resticted错误。




0 0
原创粉丝点击