JMX监控Manager的Tomcat进程
FusionInsight Manager的WEB UI运行在Tomcat上,Manager作为MRS的集群管理界面,其重要性不言而喻,一旦Tomcat出现故障,管理界面将不可用。虽然Manager自身有恢复机制,当Tomcat进程异常挂掉后,OMS会尝试将其再次拉起;当尝试多次后,若Tomcat仍处于异常状态则会触发OMS主备倒换,备OMS升为主,此时将启动备OMS节点上的Tomcat进程。
Manager自身的恢复机制可以确保Tomcat异常后快速恢复,但在实际现网使用过程中遇到过调用Manager REST API过多使Tomcat进程一直处于异常状态。该问题根本原因在于调用REST API时未使用Cookie,每个REST请求都会创建一个新的Session,最终导致Tomcat堆内存中存在大量Session对象不能及时释放,堆内存溢出。此场景中,虽然Manager能够重新拉起Tomcat进程,但很快大量的REST请求又再次将Tomcat堆内存占满,导致Manager管理界面长时间不可用。该问题解决方法是调整Manager REST API的调用方法及频次,同时将Tomcat堆内存增大。
因此,监控Tomcat的JVM进程是有必要的,当再次出现类似的Tomcat异常情况时可以提前预知。Manager作为MRS集群的监控,自身的进程并没有可视化的监控界面。下面介绍一种通过JMX方式监控Tomcat进程的方法。
一、登录主OMS节点,修改Manager的Tomcat启动脚本,添加JMX参数。
su - omm
cd $OM_TOMCAT_HOME/bin
vim catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=xx.xx.x.xx -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=$OM_TOMCAT_HOME/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=$OM_TOMCAT_HOME/conf/jmxremote.access"
-Djava.rmi.server.hostname:监控Tomcat所在服务器的IP地址(即该脚本所在节点的管理平面IP地址)
-Dcom.sun.management.jmxremote.port:要开启的JMX监控端口号(选择一个未被占用且JMX监控应用可通的端口)
-Dcom.sun.management.jmxremote.ssl:是否要开启ssl连接
-Dcom.sun.management.jmxremote.authenticate:是否开启用户密码认证
-Dcom.sun.management.jmxremote.password.file:权限文件路径(jmxremote.authenticate为false时不需要配置该参数)
-Dcom.sun.management.jmxremote.access.file:密码文件路径(jmxremote.authenticate为false时不需要配置该参数)
二、拷贝Java目录下的access文件及jmxremote.password.template文件至Tomcat的conf目录, jmxremote.password.template重命名为jmxremote.password,修改文件权限为600。
cd $JAVA_HOME/jre/lib/management
cp jmxremote.access jmxremote.password.template $OM_TOMCAT_HOME/conf
cd $OM_TOMCAT_HOME/conf
chmod 600 jmxremote.access
chmod 600 jmxremote.password.template
mv jmxremote.password.template jmxremote.password
三、编辑jmxremote.access文件、jmxremote.password文件。
vim jmxremote.access
jmxremote.access文件内容如下, monitorRole为只读角色,controllRole为高级角色,具有读写权限。
vim jmxremote. password
jmxremote.password文件内容如下,monitorRole的密码设置为Admin12!。
四、重启Tomcat进程。
cd $OM_TOMCAT_HOME/bin
./shutdown.sh
./startup.sh
查看Tomcat进程已重新启动,且JMX参数已添加。
ps -ef | grep tomcat
五、登录备OMS节点,重复步骤一到三。
六、使用JMX监控工具监控Tomcat的JVM进程,如JDK自带的jconsole工具(在JAVA_HOME的bin目录下)。
建立远程JMX连接,输入Tomcat进程的IP地址及配置的JMX端口,输入用户名及密码。
创建JMX连接成功,可以监控到Tomcat的JVM进程了。
- 点赞
- 收藏
- 关注作者
评论(0)