JVM图形化监控
1. 远程机器
需要简单配置并启动jstatd。方法比较简单,共两步:
- 在JAVA_HOME的bin目录下新建一个jstatd.all.policy的文件,文件内容为:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
附件下载: jstatd.all.policy
- 进入JDK bin目录,执行:
nohup ./jstatd -J-Djava.security.policy=./jstatd.all.policy > /home/jstatd.log 2>&1 &
2. 本地主机
使用jvisualvm监控本地无需配置
3. 启动监控
windows 下 win+R 输入: jvisualvm
jstat 默认的端口是1099
jvisualvm里面可以添加插件,下载Visual GC插件等插件可以进行更丰富的监控。
完整插件查看地址: http://visualvm.java.net/pluginscenters.html
jstat监控无法查看更丰富的信息,如cpu占用率等指标,此时就需要启动jmx来实现。
4. jmx监控
使用java -jar
或 java -cp
启动java程序时,添加如下参数可以开启jmx远程访问:
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
此时我们在windows下 win+R 输入: jconsole
打开后选择 远程连接
选项,输入IP和端口号: ip:9000
连接即可。
5. jstatd启用jmx
开启jstatd同时我们可以开启jmx,修改第一步中的启动命令为:
nohup ./jstatd -J-Dcom.sun.management.jmxremote -J-Dcom.sun.management.jmxremote.port=1100 -J-Dcom.sun.management.jmxremote.ssl=false -J-Dcom.sun.management.jmxremote.authenticate=false -J-Djava.security.policy=./jstatd.all.policy > /home/jstatd.log 2>&1 &
此时连接jvisualvm便可以看到Jstatd 程序自身的CPU占用率等jmx指标;同时如果服务器的其他程序使用第4步的方案的开启了jmx,此时在jvisualvm也可以查看其jvm的jmx指标。