JDK里面自己就带了不少的监控工具,如JConsole等。咱们今天要讲的这款工具visualvm,就是其中的一款。可是这款工具是在JDK1.6.07及以上才有的。它可以对JAVA程序的JVM堆、线程、类加载状况、JVM GC状况进行监控,是一个很好的免费的监控工具。java
监控范围:JDK1.4及以上版本的程序都可以监控。linux
它在JDK里面叫作: jvisualvm,固然咱们能够到它的官方网站上去下载它的最新版本,当前最新版本是:工具
1.3.2,以下所示:网站
在图中已经列出了它的官方网站地址:spa
首先,打开visualvm,它会自动检索到本地机器上java应用程序,以下图:
双击它就可对它开始进行各项数据的监控了。线程
=======================jstatd============code
可是监控远程机器上的Java应用程序就没有这么简单了,须要进行相应的配置,首先咱们来看下visualvm监控远程机器上Java应用程序的原理:server
由上图可知,visualvm必须经过jstatd服务来取得远程机器上Java应用程序的运行数据。blog
因此咱们得先在要监控的机器上启动jstatd服务(这个服务是在远程机器上启动的)
一、 首先在远程机器上配置好Java环境:
JAVA_HOME,CLASSPATH,PATH
配置完以后,在cmd里面经过:java -version和javac -version,肯定Java环境配置完成
二、 建立一个文件:jstatd.all.policy(名字能够变,扩展名不能够变),内容以下:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
这个文件的做用是让jstatd服务可以读取机器上的java应用程序的运行数据
三、 把这个文件放到:%JAVA_HOME%\bin目录下。
四、 打开cmd,把目录切到:%JAVA_HOME%\bin目录下,而后执行以下命令:
jstatd -J-Djava.security.policy=jstatd.all.policy
这个时候,若是cmd是以下所示的状态,则说明jstatd服务启动成功
注:上面启动的jstatd服务,默认端口是1099,也能够在上面命令中指定端口号
按照上面的原理图,在远程机子上启动jstatd服务以后,visualvm就能够监控到远程机器上的JAVA应用程序了,按下面操做便可:
一、 在本地visualvm界面上添加远程主机:
在左边“应用程序”中,右击“远程”,选择“添加远程主机”
而后在弹出的对话框里面输入所要监控的远程主机的IP,以下所示:
刚开始进入时,不是这个对话框,点击“高级设置”就会展开余下的部分,就是上面所示的对话框,在里面能够设置远程机器上jstatd服务所用的端口号,默认是1099,能够经过勾选“显示名称”,在里面输入本身想要的远程主机名,最后点击肯定便可。
二、 展开刚所新建的远程主机,就可看到运行在远程机器上的JAVA应用程序了,以下所示:
经过双击里面的应用程序,就能够像本地应用程序同样,对它进行监控了。
到此,visualvm远程监控部分算是完成了。
最后须要注意的一点是,jdk6上的visualvm不可以监控到jdk7上的java应用程序,即便jstatd服务成功启动也不行。
更多参考:http://ihuangweiwei.iteye.com/blog/1219302
================JMX=================
由于本地监控无需配置, 因此这里主要介绍监控远程JVM 要进行远程监控, 本机的VisualVM就必须和远程的JVM要进行通讯, Visualvm目前支持两种remote connection方式. 分别是jstatd和JMX方式: 这里我主要介绍的是经过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=192.168.0.237 -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地址(192.168.0.237),这个IP地址会加入到Remote节点下. c.反键点击这个IP地址,选择Add JMX Connection, 在弹出的界面中输入刚配置的端口号(18999), 这个链接会加入到该IP节点下. d.反键点击这个链接,选择Open. 此时就能够看到监控的界面, 从界面上咱们能够看到CPU信息, 内存信息, 统计加载类数量,线程信息.