jvisualvm 远程监控Linux下的tomcat(后附resin的配置)

 前一段测试系统崩溃过一回,所以想远程监控一下jvm的运行情况,我在网上也找了不少文章和办法,试了好几次都没成功,今天算试成功了,但是不太完美,因为需要将Linux的防火墙关掉才可以连接,我尝试将连接的端口号加到iptables中,重启防火墙,也不行。所以先记录下来,以后再看看是什么问题。

        1.linux下tomcat安装目录下的bin文件夹中的catalina.sh

         端口号:1099,Linux主机IP:192.168.193.129

         检查host是否是127.0.0.1 , 执行命令 hostname -i 如果是127.0.0.1 。

         在etc/hosts 文件中将127.0.0.1改为主机IP(此处为192.168.193.129),如果不能保存,改权限

         chmod +x hosts

         在catalina.sh文件中添加如下:

        CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.193.129"

要用CATALINA_OPTS,不要用JAVA_OPTS。下面截图配置的是JAVA_OPTS,这样会存在一个问题,因为JAVA_OPTS在tomcat启动和关闭时都会执行,所以在关闭tomcat的时候也会试图启动jmx,报端口被占用异常。

Using CATALINA_BASE:   /zyj/apache-tomcat-7.0.65
Using CATALINA_HOME:   /zyj/apache-tomcat-7.0.65
Using CATALINA_TMPDIR: /zyj/apache-tomcat-7.0.65/temp
Using JRE_HOME:        /zyj/jdk1.7.0_79
Using CLASSPATH:       /zyj/apache-tomcat-7.0.65/bin/bootstrap.jar:/zyj/apache-tomcat-7.0.65/bin/tomcat-juli.jar
Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 1099; nested exception is: 
        java.net.BindException: Address already in use

因为CATALINA_OPTS只在tomcat启动时执行,所以就没这个问题。

        位置:


 

          这是不加认证的。以上配置是需要关闭防火墙,如果想不关闭防火墙来访问。需要在iptables里把1099端口给公布出去。

     关闭防火墙命令:service iptables stop

         

Python代码  收藏代码
  1. [root@localhost sysconfig]# service iptables stop  
  2. Flushing firewall rules:                                   [  OK  ]  
  3. Setting chains to policy ACCEPT: filter                    [  OK  ]  
  4. Unloading iptables modules:                                [  OK  ]  

       在etc/sysconfig/iptables中加入:

     -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1099-j ACCEPT

或者

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1099-j ACCEPT

 

重启防火墙命令:service iptables restart

 

补充:

1) Linux操作系统中永久性生效,重启后不会复原

开启: chkconfig iptables on

关闭: chkconfig iptables off

2) 即时生效,重启后复原

开启: service iptables start

关闭: service iptables stop

需要说明的是对于Linux操作系统中的其它服务都可以用以上命令执行开启和关闭操作。

在开启了防火墙时,做如下设置,开启相关端口,

修改/etc/sysconfig/iptables 文件,添加以下内容:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

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

 

以下连接成功是Linux下关闭了防火墙:

 

    1.打开java安装目录bin目录下的jvisualvm.exe

C:\Program Files\Java\jdk1.7.0_45\bin

 

     2.在远程上右键,添加远程主机



 

3.在添加的远程主机上右键,添加Jmx

 

此处不需要密码,点击确定即可。

 

           

 

4.双击连接查看Jvm运行情况



 

 


如果服务器是resin,则进行如下配置:


以下配置在Windows和Linux下同时适用,打开conf/resin.conf 中的JMX配置信息如下:(resin4.0以上resin.conf被resin.xml替换

  • 无限制访问
<jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.port=9009</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.ssl=false</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.authenticate=false</jvm-arg>

  • 需要用户名和密码访问
<jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.port=9009</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.ssl=false</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.authenticate=true</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.access.file=D:/temp/jmxremote.access</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.password.file=D:/temp/jmxremote.password</jvm-arg>

 

没有更多推荐了,返回首页