jconsole远程linux中的tomcat

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013028876/article/details/78815930

      为了监控服务器上tomcat的内存使用情况,用本地jconsole远程连接linux中的tomat。有不需要输入用户名密码 和 需要输入用户名密码 两种配置。

一、不需要输入用户名密码

1、在tomcat安装目录下的/bin/catalina.sh中添加JAVA_OPTS参数设置:

JAVA_OPTS="-server -Xms1024m -Xmx1024m -Xss256k -XX:+UseConcMarkSweepGC"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.21.55"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

        第一行的JAVA_OPTS是配置jvm参数用的。与jconsole远程无关。但是因为配了这个参数,遇到一点问题,参看 注意1。

        第二行的JAVA_OPTS是配置远程hostname。

      第三行的JAVA_OPTS配置远程的端口号和是否开启认证以及是否开启ssl验证。不需要要输入用户名密码的配置是把 authenticate 配置为false。

二、需要输入用户名密码

1、在tomcat安装目录下的/bin/catalina.sh中添加JAVA_OPTS参数设置:

JAVA_OPTS="-server -Xms1024m -Xmx1024m -Xss256k -XX:+UseConcMarkSweepGC"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.21.55"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.access.file=/usr/local/java/jdk1.8.0_151/jre/lib/management/jmxremote.access -Dcom.sun.management.jmxremote.pwd.file=/usr/local/java/jdk1.8.0_151/jre/lib/management/jmxremote.password"

      第三行的JAVA_OPTS中配置 -Dcom.sun.management.jmxremote.authenticate=true。

      第四行的JAVA_OPTS配置了认证的权限和用户名密码。两个参数指定的路径需要配对。jconsole远程登录的时候,输入ip:端口号即可,不用输入用户名密码。

2、进入jdk安装目录下的/jre/lib/management。

        (1)编辑jmxremote.access文件,页面最后的几行解开注释。

   (2)编辑jmxremote.password文件,页面最后两行解开注释。它们是两套用户名密码。当-Dcom.sun.management.jmxremote.authenticate=true的时候,可以用这两套来登录。 这两套用户名的权限不一样。monitorRole只能读,controlRole能读写。

      若此目录下没有jmxremote.password,而有jmxremote.password.template。它们是一样的。上一步第四行配置指向它也可以。

(3)设置jmxremote.access和jmxremote.password两个文件的权限为600。命令为:

chmod 600 jmxremote.access jmxremote.password
三、 配置结束,启动tomcat,用本地jconsole远程连接:

      运行窗口中输入jconsole,界面中选远程连接。输入ip:端口号。ip为linux的ip,端口号为第一步中第三行JAVA_OPTS中配置的端口号,这里是9004。这是使用用户名密码连接的方式。还可不使用用户名密码登录。

      登录界面:

        

      两种方式连接成功图:

        


注意1:

        若你的jdk是1.8及以上版本,配置jvm参数时,不能使用-XX:PermSize=64M -XX:MaxPermSize=256m,因为从jdk1.8起,永久区Perm已经被元空间Metaspace取代。设置参数改为了:MaxMetaspaceSize。详细了解:( http://caoyaojun1988-163-com.iteye.com/blog/1969853 )

注意2:

        -Djava.rmi.server.hostname=192.168.21.55,这个hostname要配置为tomcat所在机器的ip地址。

总结:

        在趟坑,解决问题的过程中。最重要的收获就是,想知道问题出在哪儿的时候,就去看日志。

        看日志,看日志,看日志,重要的事情说三遍。

/*************************************问题系列**********************************************/

问题系列:

        在解决的过程中遇到的问题以及使用的命令,顺带记录下来吧。若你我某天又遇到这个问题想不起来的时候还可以参考参考。

        在修改配置后,启动tomcat的阶段,就因为对linux不熟,而出现了一系列问题。

        在成功的前一刻才翻到一个同样趟了很多坑的道友的文章,传送门在此:(http://www.linuxidc.com/Linux/2015-02/113420.htm)

        有一篇比较简洁的介绍jmxRemote与jconsole通过jmxremote连接tomcat的文章:  (https://geekflare.com/enable-jmx-tomcat-to-monitor-administer/)

启动不了1:

        查看日志:转到/usr/local/tomcat/logs目录下,用tail -f catalina.out命令。

         检查到端口占用,原来两个tomcat端口配重了。

        编辑/usr/local/tomcat/conf/server.xml,修改端口,重新启动。

启动不了2:

        查看日志:看到新增的配置有几个问号。比如,第一行端口号9004后边有'?',删掉它,再启动。

        

启动不了3:

        出现ignoring option MaxPermSize=256m;support was removed in 8.0等

        

        这就是文章上面提到的注意1 中的内容。去掉maxPermSize和PermSize两个参数设置,继续启动。

启动不了4:

        还有问题:Unrecongnized option: -

        

        检查catalina.sh,有参数配置不小心 -Dcom.sun.management.jmxremote.authenticate=false 的 -和后边的字母之间多了一个空格,致使参数不完整了。删掉空格,重新启动。

启动不了5:

        Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: nodename.domainname: nodename.domainname: Name or service not known
无法识别的主机名:nodename.domainname:

         

        这个主机名是我在/etc/hostname文件中配置的,经查询,/etc/hostname和/etc/hosts两个文件的作用一致。linux是CentOS7.0,默认的有/etc/hosts文件。因此我又把/etc/hostname文件给删掉了。在/etc/hosts和/etc/sysconfig/network中配置了主机名。关于主机名的配置请参照(https://jingyan.baidu.com/article/574c52192a1d8d6c8d9dc1ce.html ) 想了解/etc/hosts的作用,请进传送门( http://os.51cto.com/art/200803/68170.htm )

        配置好hostname之后,再启动tomcat。终于启动成功了。



        

猜你喜欢

转载自blog.csdn.net/u013028876/article/details/78815930
今日推荐