公司采用的B/S架构开发的系统林林总总,有时候系统不稳定,分析起来很头疼。除了看日志,还很希望能知道系统虚拟机的运行情况。
java 虚拟机从1.5开始,有类似的工具 jconsole,1.6开始不但有jconsole ,还有升级版,jvisualvm。
下面简单介绍一下如何使用这两个工具。
一、 目标
1、使用jconsole监控远程服务器上的java虚拟机
2、使用jvisualvm监控远程服务器上的java虚拟机
二、环境
本地: windows系统 192.168.136.1
远程服务器: linux 192.168.136.134 上面部署了jboss 和tomcat 两套系统容器
三、配置
1、 远程服务器配置:
(1) jboss配置
jboss: 找到部署目录,进入jboss-4.2.2.GA/bin 目录,找到run.conf 文件,修改启动参数,打开jmx开关
在红框处增加启动参数,增加的内容为:
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=60001 -Djava.rmi.server.hostname=192.168.136.134";
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false";
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false";
其中端口60001,可以自己指定, ip地址,是远程服务端主机的ip(jboss运行的机器), authenticate为false,不用输入密码,如果为true,需要配置密码文件。
(2)下面说下tomcat配置,tomcat配置类似,需要找到配置文件 tomcat部署目录/bin/catalina.sh
修改图中红框处,修改内容同上:
2、本地打开jconsole监控
找到本地windows下的jdk安装目录,在bin 文件夹下,执行jconsole
打开如下界面,进行配置
输入ip和端口(就是上面的 192.168.136.134:60001)后,即可打开监控界面。
(2)jvisualvm 打开监控
同样,在本地jdk的bin目录下,找到jvisualvm,双击运行并打开
在远程这里进行同样配置。
jvisualvm里,有线程dump的生成很好:
生成的dump文件,可以供运维人员分析
关于java自带工具,有一篇blog很好:http://blog.csdn.net/feihong247/article/details/7874063