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 监控我们的程序
图片2 CPU 堆 ,类 以及线程(可以再此处 dump heap ):
图片3 PerGen:
图片4 CPU抽样, 此处可以看方法CPU占用情况
图片 5 内存profile
图片 6 安装插件Visual GC 图表
出现OOM时 , 通过在JVM中设置参数 :