远程监控JVM之二、 八、jdk工具之JvisualVM之三--可视化监控及LINUX服务器与客户端配置方法)、 远程监控Tomcat、Jstatd

如何配置visualvm监控

我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具,相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具。这个工具就在JAVA_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面

从上图中的左边Applications树中可以知道,不光可以监控本地JVM运行情况, 还可以监控远程机器上的JVM运行情况。
本地监控:只要打开某个JAVA程序就会自动的加入到本地监控中。
要进行远程监控, 本机的VisualVM就必须和远程的JVM要进行通信, visualVM目前支持两种remote connection方式,分别是jstatd和JMX方式:

 

一、通过JMX连接远程机器, 需要经过下面的配置:

1. 修改远程机器JDK配置文件 (我这里远程机器是linux).
a.进入JAVA_HOME\jre\lib\management\目录
b.拷贝jmxremote.password.template这个文件到当前目录, 并改名为jmxremote.password
c.打开jmxremote.password文件,去掉 # monitorRole QED 和 # controlRole R&D 这两行前面的注释符号
2. 修改远程机器上需要被监控的程序的配置文件 (我这里是监控Tomcat容器内部署的应用).
a.进入TOMCAT_HOME\bin目录
b.打开catalina.sh文件,加入如下信息:
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=10.202.37.75
-Dcom.sun.management.jmxremote.port=18999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
c.重启Tomcat服务.
3. 客户端VisualVM配置 (我客户端用的是WinXP).
a.直接右击Remote,选择Add Remote Host...


b.在弹出的界面中输入远程机器的IP地址(10.202.37.75),这个IP地址会加入到Remote节点下.

c.反键点击这个IP地址,选择Add JMX Connection, 在弹出的界面中输入刚配置的端口号(18999), 这个连接会加入到该IP节点下.



d.反键点击这个连接,选择Open.
此时就可以看到监控的界面, 从界面上我们可以看到CPU信息, 内存信息, 统计加载类数量,线程信息.

二、通过jstatd连接

远程机器需要启动一个daemon:jstatd

1、远程机器启动jstatd

      1.1、首先需要准备一个java.policy文件,保存到如/home/admin/jstatd.java.policy

grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.security.AllPermission;
};

 

1.2、启动jstatd(通过如下命令行启动)

jstatd -J-Djava.security.policy=/home/admin/jstatd.java.policy -J-Djava.rmi.server.logCalls=true

1.3、 同时需要执行一个命令看看(linux需要)     

Hostname –i
如果显示是127.0.0.1,则需要修改/etc/hosts文件,去掉对本机名的配置,让本机名解析到它的IP地址,如10.20.131.214

 2、连接远程机器

3、点击OK,看到会连接到远程机器,并显示出它下面的java进程。

 

linux服务器上启动的java程序的pid为:

      到 这个时候的操作,就和上面Local的描述操作一样了。

 

最后,要注意的地方:

最好使用jdk1.6以上版本,不然visualVM很多功能不能用。

你自己也可以写一个VisualVM插件(基于NetBeans的插件体系),完成特殊的任务。

posted on 2012-10-26 09:19  duanxz  阅读(5504)  评论(0编辑  收藏  举报