使用Jvisualvm监控JVM

JDK版本必须为 : 1.6以上

测试成功的系统为 本机windws7 服务器:centos 6.2(服务器JDK一定要小于或等于你本机JDK版本)

首先:

# hostname -i 查看是否本机IP

如果是127.0.0.1 或其他,需要修改 /etc/hosts 文件将hostname绑定的IP设置为你的本机的IP

如:  192.168.16.116 yourhostname

yourhostname 是在 /etc/sysconfig/network  文件设置的主机名称  

如: hostname = XXXX

1 使用jstat 远程监控

在远程服务器(如ip:192.168.16.116) /home/lbe/ 目录下新建文件 jstatd.java.policy

内容:

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

保存后使用命令 jstatd -J-Djava.security.policy=/home/test/jstatd.java.policy -J-Djava.rmi.server.logCalls=true   启动jstatd

本机到JDK目录下运行 jvisualvm , 远程连接新建连接 192.168.16.116,确定后可见运行在服务器JVM实例

2使用JMX连接(可监控CPU)

远程服务器JVM参数中添加

如Tomcat 在 catalina.sh里添加

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1100 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.16.169"

本机到JDK目录下运行 jvisualvm , 新建远程连接 192.168.16.116

安装JvisualVM 插件 ,选择自己需要的插件, 便于我们更准确分析问题

如 : 点击 工具(Tools)  --->  插件(Plugins) --->新窗口中选择 可用插件 --->勾选 Visual GC ,  点击 安装

(重新开启JvisualVM,验证安装)

ok , 下面来通过JvisualVM 监控我们的程序

图片1:查看JVM配置

图片2 CPU 堆 ,类 以及线程(可以再此处 dump heap ):


图片3 PerGen:


图片4 CPU抽样, 此处可以看方法CPU占用情况


图片 5  内存profile


图片 6 安装插件Visual GC 图表


出现OOM时 , 通过在JVM中设置参数 :

猜你喜欢

转载自boendev.iteye.com/blog/1628468