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。终于启动成功了。


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
4月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
295 41
|
4月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
388 17
|
4月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
115 18
|
4月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
335 11
|
4月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
130 10
|
应用服务中间件 Linux 网络安全
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
139 5
|
关系型数据库 Java MySQL
Linux安装JDK1.8 & tomcat & MariaDB(MySQL删减版)
本教程提供了在Linux环境下安装JDK1.8、Tomcat和MariaDB的详细步骤。这三个组件的组合为Java Web开发和部署提供了一个强大的基础。通过遵循这些简单的指导步骤,您可以轻松建立起一个稳定、高效的开发和部署环境。希望这个指导对您的开发工作有所帮助。
404 8
|
网络协议 安全 应用服务中间件
在Linux中,Tomcat8005、8009、8080三个端口的含义?
在Linux中,Tomcat8005、8009、8080三个端口的含义?
|
缓存 Java 应用服务中间件
在Linux中,Tomcat和Resin有什么区别,工作中怎么选择?
在Linux中,Tomcat和Resin有什么区别,工作中怎么选择?

热门文章

最新文章