JMX(JAVA 管理拓展)配合Jconsole来使用是用来分析JVM状态的必要途径。所以正确配置JMX很重要。配置主要包含以下几个步骤
1、修改tomcat的实际启动脚本catalina.sh(startup.sh 里面其实是引用了这个脚本,虽然正常启动时用./startup.sh)
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=139.224.238.63
-Dcom.sun.management.jmxremote.port=3838
-Dcom.sun.management.jmxremote.rmi.port=3838
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
Note:
CATALINA_OPTS这个变量修改是在‘# ----- Execute The Requested Command -----------------------------------------’这句注释下,千万别搞到下面那个if 分支里面,很可能就没走进去导致始终不生效。
-Dcom.sun.management.jmxremote.rmi.port=3838 这个参数很少有人提及,在本人的(centos7+java8)的环境下,不添加这个jconsole是连接不了的。(原因:JMX is base on RMI, which open two port when it start. )
2、防火墙设置,开放端口
vi /etc/sysconfig/iptables 添加-A INPUT -m state --state NEW -m tcp -p tcp --dport 3838 -j ACCEPT (Dcom.sun.management.jmxremote.rmi.port一致)
重启使其生效 :service iptables restart
3、用户配置
执行cp /usr/java/jdk1.8.0_121/jre/lib/management/jmxremote.* /usr/tomcat/apache-tomcat-7.0.75/conf/ ,将jmxremote.access jmxremote.password 复制到tomcat_base 下的conf目录并更改权限 chmod 600 jmxremote.password chmod 600 jmxremote.access (不修改权限启动tomcat时 catalina.out日志里面会看到报错,tomcat实际没启动成功),并进入修改jmxremote.password最后两行取消注释,用户生效。
4、启动tomcat
到tomcat/bin目录下执行./startup.sh ,可成功访问网站后,尝试用jconsole链接。
jconsole连接远程服务器成功。
原文:https://blog.csdn.net/surpassno/article/details/60871396