列宿乃施于上荣兮 日月才经于柍桭

………… 白驹过隙 岁月如斯 梦萦回绕 心灵之声
posts - 57, comments - 8, trackbacks - 0, articles - 41
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

一次小小的jconsole远程监控故障排查

Posted on 2010-10-10 14:59 默认为零 阅读(923) 评论(0)  编辑  收藏 所属分类: 技术生活
压力测试环境上jboss应用服务器的jconsole远程监控挺好用的,开发环境也来试试。于是拷贝JVM参数如下:
#服务器IP,因为是远程监控,所以需要配置
-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
#远程监控端口
-Dcom.sun.management.jmxremote.port=9999
#匿名登录,设置false
-Dcom.sun.management.jmxremote.authenticate=false
#不使用SSL
-Dcom.sun.management.jmxremote.ssl=false

看看与压力测试环境上的参数配置相同了,心满意足,重启jboss。哪想2秒抛出一片错误信息,启动失败,错误日志如下:

19:01:21,271 INFO  [Server] Starting JBoss (MX MicroKernel)...
19:01:21,273 INFO  [Server] Release ID: JBoss [Zion] 4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)
19:01:21,274 INFO  [Server] Home Dir: /usr/alibaba/install/jboss-4.0.5.GA
19:01:21,275 INFO  [Server] Home URL: file:/usr/alibaba/install/jboss-4.0.5.GA/
19:01:21,275 INFO  [Server] Patch URL: null
19:01:21,276 INFO  [Server] Server Name: default
19:01:21,276 INFO  [Server] Server Home Dir: /home/admin/project/.default
19:01:21,276 INFO  [Server] Server Home URL: file:/home/admin/project/.default/
19:01:21,276 INFO  [Server] Server Log Dir: /home/admin/project/.default/log
19:01:21,276 INFO  [Server] Server Temp Dir: /home/admin/project/.default/tmp
19:01:21,277 INFO  [Server] Root Deployment Filename: jboss-service.xml
Failed to boot JBoss:
javax.management.InstanceNotFoundException: JMImplementation:service=LoaderRepository,name=Default
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1094)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:833)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
        at org.jboss.system.server.ServerImpl.initBootLibraries(ServerImpl.java:628)
        at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:429)
        at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
        at org.jboss.Main.boot(Main.java:200)
        at org.jboss.Main$1.run(Main.java:490)
        at java.lang.Thread.run(Thread.java:619)
看了半天没有头绪,顿时心情低落。

饭是要吃的,问题始终是要解决的。于是继续找问题原因,从日志上分析来看,是“JMImplementation:service=LoaderRepository,name=Default” 这个jmx mbean实例找不到,那是不是说明jboss mbean server配置不对,或者被意外的配置影响到了?

想到这,立马再翻出jboss启动脚本,果然发现一条配置:
JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver"
这又是什么意思?
原来,配置了这个参数后,jboss会把应用的mbean注入自己的mbean server,统一管理起来,在jmx-console/web-console都可以看到。但问题恰恰是,jboss4.0.x并不支持jconsole的jmxremote相关配置,造成jboss服务无法启动。
我想,造成问题的最根本原因,还是因为jboss4是早期版本,而jconsole是jdk1.5以后出的产品。

既然问题找到了,相应的解决办法也就有了!
方法一:解决jmxremote相关配置与jboss mbean server的冲突,删除JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver"。
方法二:兼容jmxremote相关配置和jboss mbean server,补充配置:
#让jboss mbean server 兼容jconsole的相关jmxremote配置
JAVA_OPTS="$JAVA_OPTS -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl"

问题解决,启动jboss,一切OK!





只有注册用户登录后才能发表评论。


网站导航: