使用JConsole远程监控JVM_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 使用JConsole远程监控JVM

使用JConsole远程监控JVM

 2013/9/12 18:52:35  vipshichg  程序员俱乐部  我要评论(0)
  • 摘要:JConsole是从Java5中开始引入的一个用于对JVM性能和资源消耗进行监控的图形化工具。JConsole可以连接本地的Java程序,也可以连接远程的Java程序。由于是GUI的方式使用,所以就不细说那些基本的使用方法了,这里只是记录一下试用过程中遇到的几个小问题及其解决方案。这里使用的是SPECjbb2005这个benchmark中的Java来做了一下试验,因为它也是一个JavaApplication的benchmark,可以在run
  • 标签:使用 JVM 远程

JConsole是从Java 5中开始引入的一个用于对JVM性能和资源消耗进行监控的图形化工具。
JConsole可以连接本地的Java程序,也可以连接远程的Java程序。由于是GUI的方式使用,所以就不细说那些基本的使用方法了,这里只是记录一下试用过程中遇到的几个小问题及其解决方案。
这里使用的是SPECjbb2005这个benchmark中的Java来做了一下试验,因为它也是一个Java Application的benchmark,可以在run.sh脚本中对“JAVA_OPTIONS=”这一行进行相应的定制。

1. 要实现让JConsole可以远程连接到某个Java程序,则需要在Java程序启动的JAVA_OPTION中添加选项“com.sun.management.jmxremote.port=8888”来指定远程管理的端口。

2. 启动Java程序时,遇到如下报错:

class="left" style="margin-top: 0px; margin-bottom: 0px; margin-left: 5px; padding: 2px 5px 2px 20px; font-family: tahoma, arial, verdana; font-size: 14px; line-height: 18px; margin-right: 10px !important; background-position: 0% 50%;">?BASH ?
1
2
3
4
5
6
7
[root@localhost SPECjbb2005]# ./run.sh
Thu Jul 25 23:00:50 CST 2013
?
./jbb.jar:./check.jar:
java full version "1.6.0_24-b24"
Error: Password file not found: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/management/jmxremote.password
Thu Jul 25 23:00:50 CST 2013


这是由于开启Java JMX 远程管理时,默认会有用户名密码的验证,所以需要相应的密码文件。

?BASH ?
1
2
[root@localhost SPECjbb2005]# ls /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/management/
jmxremote.access  jmxremote.password.template  management.properties  snmp.acl.template

需要先在jmxremote.access中定义用户权限,然后在jmxremote.password文件中定义用户名和对应的密码,jmxremote.password文件可以复制jmxremote.password.template模板文件来进行修改。
当然,在内网中仅仅用于调试,我们一般可以不设置密码验证和SSL连接方式,Java选项如下:
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

3. 在进行了端口和认证信息的配置后,发现在JConsole中通过IP远程连接JVM依然不成功。
错误信息为:Connection Failed: Retry? The connection to 192.168.52.11:8888 did not succeed. Would you like to try again?
在启动Java时,需要设置RMI远程调用的主机名,一般设置为主机的IP地址即可,如下:
-Djava.rmi.server.hostname=192.168.52.11
(当然,也有可能是由于前面第2点中提到的SSL的设置问题,依然需要检查一下)

关于JConsole,还是得执行看看Oracle的这篇Java SE 6 中的JConsole的描述:

http://docs.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html

(特别是上面文档中对监控数据、图形代表的意义是需要认真理解的)

发表评论
用户名: 匿名