系统应用一般我们要做性能监控,不用其他的开源工具,其实JDK本身就自带了一个非常好用的东东。
jconsole是JDK5开始自带的基于GUI的JVM监控工具,可以监控内存、线程、jvm堆栈、执行GC等,不仅可以对本机JVM进行监控,也可用于远程主机的JVM。
废话少说,步入正题,下面就来说一下在JBOSS运行环境下如何使用jconsole进行监控。
首先,配置jboss启动参数,jboss4.2x中,可以打开run.bat文件。
-Djava.rmi.server.hostname=10.5.35.151 设置访问的主机地址
-Dcom.sun.management.jmxremote.port=8950 设置端口
-Dcom.sun.management.jmxremote.authenticate=false 不需要认证
-Dcom.sun.management.jmxremote.ssl=false 不需要SSL
如果需要设置用户名和密码,
则 -Dcom.sun.management.jmxremote.authenticate=true
同时还要设置密码文件
-Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/jre/lib/management/jmxremote.password
在jmxremote.password文件中增加用户名密码即可。
然后双击run.bat , 启动jboss.
在客户端机器上:
cmd-> jconsole 10.5.35.151:8950
之后就会出现监控控制台,如下图:
这里有六个tab页,分别对内存、线程、类等都有监控,非常方便。
一般情况下,我们会使用这种方式观察内存使用情况,线程是否有死锁等等。
如果觉得这个功能还不够强大,那么给大家推荐另外一款非常出名的软件:Jprofiler. 它是一款java的性能检测工具,可以查看当前应用的对象、对象引用、内存、CPU使用情况、线程、线程运行情况(阻塞、等待等),同时可以查找应用内存使用得热点,即:哪个对象占用的内存比较多。