VisualVM远程监控

VisualVM是集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump、Thread Dump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。

在JDK Update7之后,VisualVM作为JDK的一部分发布,但同时VisualVM也发布独立的版本。VisualVM必须运行在JDK1.6以上的VM环境下,但可以用它来监控JDK1.4以上的JVM。

 

下载地址:https://visualvm.dev.java.net/files/documents/7163/144406/visualvm_12.zip

 

一,监控本机JVM

如果要监控本机的JVM运行情况,只要打开VisualVM,JVM会自动被添加到VisualVM中进行监控

visualVM1

如上图,VisualVM本身也是一个Java应用程序,因此它自己监控自己JVM的运行情况,只要双击Local –> VisaulVM,右边就可以进行各项指标的浏览。

visualVM2

 

注:读者看到的标签可能会随着安装的插件不同而有所区别,VisualVM的插件可以通过Tools –>  Plugins 来安装

 

 

二,监控远程JVM

VisualVM监控远程JVM是通过RMI服务器来实现的,因此需要在被监控的远程服务器上启动RMI服务

1,启动RMI服务

在需要被监控的服务器上面,通过jstatd 来启动RMI服务

首先,配置java安全访问,将如下的代码存为文件 jstatd .all.policy:

Java代码 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="14" height="15" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"> <param name="flashvars" value="clipboard=grant%20codebase%20%22file%3A%24%7Bjava.home%7D%2F..%2Flib%2Ftools.jar%22%20%7B%0A%20%20%20%20permission%20java.security.AllPermission%3B%0A%20%20%7D%3B"> <param name="src" value="http://fangrn.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf"> <embed type="application/x-shockwave-flash" width="14" height="15" src="http://fangrn.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=grant%20codebase%20%22file%3A%24%7Bjava.home%7D%2F..%2Flib%2Ftools.jar%22%20%7B%0A%20%20%20%20permission%20java.security.AllPermission%3B%0A%20%20%7D%3B"></embed></object>
  1. grant codebase  "file:${java.home}/../lib/tools.jar"  {  
  2.     permission java.security.AllPermission;  
  3.   };  
grant codebase "file:${java.home}/../lib/tools.jar" {
    permission java.security.AllPermission;
  };
 然后通过如下的命令启动RMI服务:
Java代码 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="14" height="15" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"> <param name="flashvars" value="clipboard=jstatd%20-J%20-Djava.security.policy%3Djstatd.all.policy"> <param name="src" value="http://fangrn.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf"> <embed type="application/x-shockwave-flash" width="14" height="15" src="http://fangrn.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=jstatd%20-J%20-Djava.security.policy%3Djstatd.all.policy"></embed></object>
  1. jstatd -J -Djava.security.policy=jstatd.all.policy  
jstatd -J -Djava.security.policy=jstatd.all.policy

 

上面启动的RMI服务的端口是1099,如果需要以其它端口启动RMI服务,请查看官方文档:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstatd .html

 

2,启动VisualVM,添加远程主机

右键单击Remote,选择Add Remote Host,输入远程主机的地址

visualVM3

如果远程服务器启动了RMI服务,VisualVM会自动显示主机上面的JVM

visualVM4

 

关于VisualVM连接远程JVM的错误,请查看Troubleshooting connection problems in JConsole 一 文,此文总结了连接时会遇到的各种问题,我开始通过VisualVM连接虚拟机中的JVM,总是 报:java.net.ConnectException: Connection refused: connect 错误,也是通过文章中所描述的关于通过NAT访问JVM问题解决的。

你可能感兴趣的:(jvm,jdk,应用服务器,Security,Flash)