jconsole远程linux中的tomcat

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: jconsole远程linux中的tomcat

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

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

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

1. JAVA_OPTS="-server -Xms1024m -Xmx1024m -Xss256k -XX:+UseConcMarkSweepGC"
2. JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.21.55"
3. 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参数设置:

1. JAVA_OPTS="-server -Xms1024m -Xmx1024m -Xss256k -XX:+UseConcMarkSweepGC"
2. JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.21.55"
3. JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false"
4. 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。终于启动成功了。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
Java 关系型数据库 应用服务中间件
阿里云RDS购买Linux完整过程——安装java环境并跑起来tomcat
阿里云RDS购买Linux完整过程——安装java环境并跑起来tomcat
95 0
|
3月前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
|
3月前
|
网络协议 安全 应用服务中间件
在Linux中,Tomcat8005、8009、8080三个端口的含义?
在Linux中,Tomcat8005、8009、8080三个端口的含义?
|
3月前
|
缓存 Java 应用服务中间件
在Linux中,Tomcat和Resin有什么区别,工作中怎么选择?
在Linux中,Tomcat和Resin有什么区别,工作中怎么选择?
|
3月前
|
关系型数据库 Java MySQL
Linux安装JDK1.8 & tomcat & MariaDB(MySQL删减版)
本教程提供了在Linux环境下安装JDK1.8、Tomcat和MariaDB的详细步骤。这三个组件的组合为Java Web开发和部署提供了一个强大的基础。通过遵循这些简单的指导步骤,您可以轻松建立起一个稳定、高效的开发和部署环境。希望这个指导对您的开发工作有所帮助。
205 8
|
3月前
|
前端开发 Java 应用服务中间件
在Linux中,tomcat和nginx的区别是什么?
在Linux中,tomcat和nginx的区别是什么?
|
4月前
|
应用服务中间件 Linux 网络安全
|
5月前
|
Ubuntu Linux 应用服务中间件
MAC在Linux上上传本地文件压缩包(tomcat)解决方法(炒鸡详细)
MAC在Linux上上传本地文件压缩包(tomcat)解决方法(炒鸡详细)
|
5月前
|
前端开发 Java 应用服务中间件
linux本地检测如何tomcat是否启动成功tomcat端口检测
linux本地检测如何tomcat是否启动成功tomcat端口检测
52 0
|
6月前
|
关系型数据库 MySQL Java
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
647 2
下一篇
无影云桌面