1、Mac下安装JVisualVM:
http://visualvm.java.net/download.html下载安装文件进行安装
2、启动JVisualVM,界面如下:
3、启动后的JVisualVM会自动检测本地的java应用
4、远程监控linux服务器
1)创建一个文本文件,内容如下:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
2)将文本文件重命名为jstatd.all.policy,并root登陆,上传到linux服务器jdk/bin目录下(如: /opt/jdk1.6.0_24/bin/)
3)要使Java VisualVM成功连接到远程服务器上,服务器端应该在/etc/hosts文件中把本机地址设为本机的IP地址。使用hostname -i命令查看,如果显示的是127.0.0.1或者与本机实际IP不一致的话,需要把/etc/hosts文件中相应的地址改为本机实际IP,如下:
172.17.253.182 DevOpsVM31.localdomain DevOpsVM31 localhost wx-test
172.17.253.182 DevOpsVM31.localdomain DevOpsVM31 localhost ipv6-localhost ipv6-loopback
4)启动jstatd服务(jvm监控服务),默认端口为1099,也可以自定义一个接口,如1103
[root@DevOpsVM07 bin]#cd /opt/jdk1.6.0_24/bin/
[root@DevOpsVM07 bin]# rmiregistry 1103&
[root@DevOpsVM07 bin]# jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=true -p 1103
jstatd开始运行后,使用 CTRL+A+D 断开 screen 界面,回到 shell 界面。如果想切换回 jstatd 运行界面的话,使用 screen -r -d 命令即可。
5)ps -ef|grep java后可以看到jstatd的进程
root 6183 3663 8 17:44 pts/1 00:00:00 jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=true -p 1103 &
6)打开JVisualVM,添加需要监控的远程服务器ip地址,并设置监听的端口为被检测机器启动jstatd的端口,如下
7)连接成功后应该会显示Jstatd及其PID,如下:
8)发现在监控远程服务器时,没有监控到cpu数据,这时需要在服务器端建立 JMX ,建立 JMX 提示要求端口号。( JMX: Java Management Extensions ,即 Java 管理扩展 , 是一个为应用程序、设备、系统等植入管理功能的框架。 JMX 可以跨越一系列异构操作系统平台、系统体系结构和 网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用 。而 Visual VM是通过 JMX 来和远程 Java 应用联系的 )。修改远程服务器tomcat的catalina.sh的参数,如下:
JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxNewSize=512m -XX:MaxPermSize=512m -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
9)重启被检测远程机器的tomcat,并打开mac上的JVisualVM,添加JMX,如下:
其他的详尽使用说明见JVisualVM帮助
参考博客:http://ihuangweiwei.iteye.com/blog/1219302