java VisualVM 远程连接linux的tomcat

       白天看了看如何VisualVM如何远程连接到linux的tomcat上,进行一般的jvm的监控,真不容易啊,白天搞了好大一阵子都没有搞定,晚上一小会就搞定了,总结原因还是因为之前找的那个的如何连接的文章写的不好,真是误导大众啊。其中VisualVM支持两种一种是jmx,一种是jstatd,我们先做jmx的方式

     在这里把如何连接记录一下,方便下次进行连接:首先把java_home下的jre/lib/management目录下的jmxremote.password.template拷贝一份,并且把他重命名为jmxremote.password,打开jmxremote.password 去除# monitorRole  QED 和 # controlRole  R&D前的注释,然后在tomcat的bin中的catalina.sh 中在JAVA_OPTS环境变量的赋值下面加入

       JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.137.102
                                                     -Dcom.sun.management.jmxremote=true
                                                     -Dcom.sun.management.jmxremote.port=18999

                                                     -Dcom.sun.management.jmxremote.ssl=false 

                                                     -Dcom.sun.management.jmxremote.authenticate=false"

其中-Djava.rmi.server.hostname=192.168.137.102,后面是服务器tomcat所在的ip,Dcom.sun.management.jmxremote.port=18999是jmx远程调用开放的端口,-Dcom.sun.management.jmxremote=true表示支撑远程调用,-Dcom.sun.management.jmxremote.ssl=false 表示不需要开启ssl, -Dcom.sun.management.jmxremote.authenticate=false表示不需要开启用户名密码验证,记得把那个远程调用开放的端口通过防火墙,用完,记得及时把它关了,然后我们在VisualVM中选择远程->添加远程主机->输入远程的那台机器的ip也就是-Djava.rmi.server.hostname=后面配置的ip,然后在对应的ip那里选择添加jmx,输入-Djava.rmi.server.hostname=配置的ip与-Dcom.sun.management.jmxremote.port=配置的端口,这样确定就好了。挺简单的。但是这样安装我们没法看visual gc插件中的信息或者出现不受此jvm支持,我们如何解决这个问题?我们就只能采用第二种方式也就是添加jstatd的方式就可以解决了。

     如何添加jstatd?首先在JAVA_HOME的bin下,创建jstatd.all.policy文件,把如下内容放到里面  

  grant codebase "file:${java.home}/../lib/tools.jar" {       

  permission java.security.AllPermission;     

};

然后在bin目录下,执行:

./jstatd -J-Djava.rmi.server.hostname=192.168.137.102 -J-Djava.security.policy=jstatd.all.policy -p 9999

其中-J-Djava.rmi.server.hostname=后面是服务器的地址,-p 9999表示调用的端口是9999,这样就可以避免端口冲突。然后再远程的机器添加jstatd

连接,这样就添加好了,搞定了,也很简单。

你可能感兴趣的:(java面试)