jconsole 使用过程中的问题及解决办法

作者:小强

MSN:blood1949@msn.com

本人为作者原创,若转贴,请保留作者署名,谢谢!


1. 必须限制口令文件读取访问 错误.

A. 错误描述: 在配置好JVM启动参数后, 启动RESIN, 过程中发生错误,无法正常启动.

1)错误信息如下:

查看更多精彩图片

错误: 必须限制口令文件读取访问: E:\Program Files\Java\jdk1.5.0_15\jre\lib\manage
ent\jmxremote.password

2) 在resin.conf 中的JMX配置信息如下:

      <jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>
      <jvm-arg>-Dcom.sun.management.jmxremote.port=1090</jvm-arg>
      <jvm-arg>-Dcom.sun.management.jmxremote.ssl=false</jvm-arg>
        <jvm-arg>-Dcom.sun.management.jmxremote.access.file=E:\Program Files\Java\jdk1.5.0_15\jre\lib\management\jmxremote.access</jvm-arg>
      <jvm-arg>-Dcom.sun.management.jmxremote.authenticate=true</jvm-arg>

 

 

 这里没有添加[com.sun.management.jmxremote.password.file=pwFilePath] 参数,因为

 pwFilePath系统默认的是JAVA_HOME/jre/lib/management/jmxremote.password , 这个例子中密码文件正是默认的文件.

3)运行环境.

   app_server:  resin3.1.5

   op : windows xp

   jdk : jdk1.5.0.15

   apache : apache  2.2.8

B.错误原因分析:

由于密码文件所属用户权限没有进行设置,应该设置为只有owner才可读,当然这个用户也必须是启动应用服务器(RESIN, 或其他)的用户。 

C.错误解决办法:

设置文件读改权限所属用户, 就是文件的拥有者. 在WINDOWS操作系统中,需要文件所在的硬盘分区是NTFS,才能进行安全设置,分配读取用户.

 查看更多精彩图片

修改提示信息:
       “安全”选项卡是NTFS分区上特有的,Windows通过“安全”选项卡中设定的ACL(访问控制列表)来进行详细的文件访问权限控制。对于Windows XP系统,为了适应家庭用户娱乐的需要,Microsoft推出了一种新的文件共享方式,即“简单文件共享”(参见http://navicy.cnblogs.com/archive/2005/10/17/256765.html)。对于开启了“简单文件共享”的机器,其文件或文件夹的“属性”窗口中是没有“安全”选项卡的,而Windows XP安装好后默认“简单文件共享”功能是开启的。
        要关闭“简单文件共享”功能,可使用以下方法:打开“控制面板”—“文件夹选项”,找到“查看”选项卡,在下面取消选择“使用简单文件共享(推荐)”后即可开启“安全”选项功能。 )

 

D.验证是否成功

1)输入错误的用户名和密码,如果成功出现以下提示,证明你已经成功设置好JCONSLE的安全登陆属性.

查看更多精彩图片



2)输入正确的用户名密码,可以正确连接Jconsole .

查看更多精彩图片

-----------------------------------------------------------------------------------------------------

2. JCONSOLE无法连接远程服务器

A. 错误描述: 用Jconsole 连接远程服务器时, IP地址和port都输入正确的情况下,仍然是连接失败.

 1)  在服务器端用tcpflow 截获网络传输包,内容如下:

查看更多精彩图片



查看更多精彩图片

2)resin 的jvm参数配置:

      <jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>
      <jvm-arg>-Dcom.sun.management.jmxremote.port=9889</jvm-arg>
      <jvm-arg>-Dcom.sun.management.jmxremote.authenticate=false</jvm-arg>
      <jvm-arg>-Dcom.sun.management.jmxremote.ssl=false</jvm-arg>

 

3)运行环境:

    op_system: Linux version 2.6.9-5

    JDK: jdk1.5.0.15

    app_server : apache 2.2.8 , resin3.1.5

B.错误原因分析:

通过tcpflow 截获网络数据包,查找原因,由于内容是二进制,不能正常查看错误信息, 但内容中包含了127.0.0.1的信息, 在网上搜了一下找到了一篇有关文章谈到这个问题,是服务器端解释机器名的问题,如果服务器端hostname -i被定向到127.0.0.1则会出现连接失败的问题。

查看更多精彩图片

JCONSOLE连接上监控的进程,从监控进程下载了RMI远程调用的RemoteStub,访问服务器的进程,服务器端的地址可能是通过hostname -i 命令或者读取/etc/hosts 文件来获得的.

这篇文章链接如下:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6209663

 

C.错误解决办法:

修改/etc/hosts文件,使hostname -i 指向正确的IP.

[root@localhost tmp] # vi /etc/hosts

把文件内容修改为:

# Do not remove the following line, or various programs
# that require network functionality will fail.
#127.0.0.1              localhost localhost.localdomain localhost
202.33.86.27(服务器真实IP)           localhost localhost.localdomain localhost

注意:修改后,必须重启应用服务器才能生效!

D.验证是否成功

1)输入正确的IP地址和端口号,如果成功出现以下提示,表明你已经成功用jconsole 监控服务器的JVM运行情况了.
 查看更多精彩图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值