简介
JConsole(以下写作jconsole),VisualVM(以下写作jvisualvm )
都是比较好的JVM调优工具,且都为JDK自带,可在命令行直接启动。
监控示例
Server端(需要监控的主机)配置
设置临时JAVA参数
export JAVA_OPTS="\ -Dcom.sun.management.jmxremote.port=<port> \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -Djava.rmi.server.hostname=<server-ip>"
注意:
-Djava.rmi.server.hostname
参数也可不添加,但要确保hostname -i
得到的是本机的真实ip,而不是127.0.0.1
。启动相应的JAVA程序
java-app start
也可以直接将JAVA配置附加到java程序启动命令
的后面,即java-app start -Dcom.sun.management.jmxremote.port=<port> -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<server-ip>
。
Client端(监控主机)配置
在Client端启动jconsole或jvisualvm,并添加连接参数”server-ip:port”即可开始监控,这两个参数值请保持与上面的配置值一致。
适用场景
监控JAVA程序
若使用jconsole,则官方文档见Java SE Monitoring and Management Guide,其余文章见参考1-4。
若使用jvisualvm,则见参考博文5-8。
监控TomCat
若使用jconsole,请见参考文章3,9,10。使用jvisualvm,请见参考博文11。
监控Flume
Flume传输数据时,需要配置合理的Java参数值和数据传输参数值,否则很容易出现错误,见Flume使用笔记 。此时对Flume程序进行监控显得尤为重要。
启动flume程序并开启监控
bin/flume-ng agent -n flumedn -f collect_data_flume.conf \ -Dcom.sun.management.jmxremote.pt=8999 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -Djava.rmi.server.hostname=datanode5
使用jconsole或jvisualvm监控(这里使用jconsole)
- 创建连接
- 整体查看
在下图中可以看到整个进程进行中,内存等的占用情况。
- 查看线程
- 查看MBeans
这块比较重要,通过观察下图中channel的各属性值,为flume的各项数据传输参数设置提供依据。比如若ChannelFillPercentage
一直接近100%,则此时应将ChannelCapacity
调大一些。
- 创建连接
监控Hadoop集群
见参考博文12。
更多
见Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试,基本上常见的Java监控工具都囊括了。
参考文章
【1】Jconsole监控本地及远程Java进程
【2】JConsole 使用总结
【3】jconsole工具使用
【4】如何利用 JConsole观察分析Java程序的运行,进行排错调优
【5】如何使用JVisualVM进行性能分析
【6】visualvm的安装笔记
【7】使用 VisualVM 进行性能分析及调优
【8】JVM学习总结五(番外)——VisualVM
【9】JConsole监控远程Tomcat服务器
【10】监视和管理控制台 jconsole 的使用
【11】jvisualvm远程监控Tomcat
【12】Hadoop2.0:Jvisualvm监控MapReduce和spark作业