JConsole&VisualVM监控总结

简介
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>"
1
2
3
4
5
注意:-Djava.rmi.server.hostname参数也可不添加,但要确保hostname -i得到的是本机的真实ip,而不是127.0.0.1。

启动相应的JAVA程序

java-app start
1
也可以直接将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
1
2
3
4
5
使用jconsole或jvisualvm监控(这里使用jconsole)

创建连接

整体查看
在下图中可以看到整个进程进行中,内存等的占用情况。

查看线程

查看MBeans
这块比较重要,通过观察下图中channel的各属性值,为flume的各项数据传输参数设置提供依据。比如若ChannelFillPercentage一直接近100%,则此时应将ChannelCapacity调大一些。

jconsole 用户名和密码设置

JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k 

-Djava.rmi.server.hostname=172.20.30.15 

-Dcom.sun.management.jmxremote 

-Dcom.sun.management.jmxremote.port=9999 

-Dcom.sun.management.jmxremote.ssl=false 

-Dcom.sun.management.jmxremote.authenticate=true 

-Dcom.sun.management.jmxremote.pwd.file=/usr/local/java/jdk1.7.0_79/jre/lib/management/jmxremote.password 

-Dcom.sun.management.jmxremote.access.file=/usr/local/java/jdk1.7.0_79/jre/lib/management/jmxremote.access"

 

亲测可用命令:

 

java -Dfile.encoding=UTF-8

-Djava.rmi.server.hostname=192.168.1.51

-Dcom.sun.management.jmxremote.pwd.file=jmxremote.password

-Dcom.sun.management.jmxremote.access.file=jmxremote.access

-Dcom.sun.management.jmxremote.authenticate=false

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.port=7200

-Xms1024M -Xmx1024M

-Xbootclasspath/a:deploy -jar deploy/codex-game.jar

 

jmxremote.password文件:

user user

admin admin

 

jmxremote.access文件:

user readonly

admin readwrite

create javax.management.monitor.*,javax.management.timer.*

unregister

原文地址:https://www.cnblogs.com/xingchong/p/9775243.html