文章目录
- 一、服务停止调研
- 1. jvm排查
- 2. 日志排查
- 3. 推测与ssh会话有关
- 二、ssh会话强制退出验证
- 2.1. 手动强制关闭进程1
- 2.2. 手动强制关闭进程2
- 2.3. 总结归纳与解决方案
一、服务停止调研
1. jvm排查
有可能是jvm配置参数导致的,然后在/var/log和/app/apache-tomcat-7.0.109/logs
并没有找到jvm致命错误日志(hs_err_pid.log)
接着查看/app/apache-tomcat-7.0.109/bin/catalina.sh
中的jvm配置的参数
JAVA_OPTS="-Xms4096m -Xmx4096m -Xss1024K -Xmn1536m -XX:PermSize=64m -XX:MaxPermSize=256m"
服务器参数
服务器型号 | CPU | 内存 | 硬盘 |
---|---|---|---|
redhat7.6 | 4c | 8G | 100G |
jvm配置参数也合理
又排除了GC情况,使用 jstat -gc pid 5000
查看也没发现问题
2. 日志排查
原因:日志中存在不明进程销毁日志,如下:
十二月 19, 2022 11:52:08 上午 org.apache.coyote.AbstractProtocol pause
信息: 暂停ProtocolHandler[“http-bio-8080”]
{“@timestamp”:“2022-12-19T11:52:08.596Z”,“LogId”:“”,“level”:“INFO “,“threadID”:“19”,“threadName”:“DubboShutdownHook”,“ip”:“192.168.105.6”,“class”:”?”,“method”:“”,“Line”:“”,“applicationName”:“pis-business”,“type”:“pis”,“message”:" [DUBBO] Unregister: dubbo://192.168.105.6:20088/com.gblfy.fis.PisInsureDubboService?anyhost=true&application=dubbo&default.timeout=300000&dubbo=2.0.1&generic=false&interface=com.gblfy.fis.PisInsureDubboService&methods=getError,service,getResult&owner=lis&pid=18558&revision=1.0-SNAPSHOT&side=provider×tamp=1671421921242, dubbo version: 2.0.1, current host: 192.168.105.6"}
十二月 19, 2022 11:52:08 上午 org.apache.catalina.core.StandardService stopInternal
信息: 正在停止服务[Catalina] EncodeingKafka is close
十二月 19, 2022 11:52:08 上午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
严重: The web application [/pis-business-gblfy-1.0-SNAPSHOT] appears to have started a thread named [DubboRegistryFailedRetryTimer-thread-1] but has failed to stop it. This is very likely to create a memory leak.
十二月 19, 2022 11:52:08 上午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
严重: The web application [/pis-business-gblfy-1.0-SNAPSHOT] appears to have started a thread named [DubboZkclientConnector-SendThread(192.168.105.201:2181)] but has failed to stop it. This is very likely to create a memory leak.
严重: The web application [/pis-business-gblfy-1.0-SNAPSHOT] appears to have started a thread named [Log4j2-TF-3-AsyncLoggerConfig-4] but has failed to stop it. This is very likely to create a memory leak.
十二月 19, 2022 11:52:08 上午 org.apache.coyote.AbstractProtocol stop
信息: 正在停止ProtocolHandler [“http-bio-8080”]
十二月 19, 2022 11:52:08 上午 org.apache.coyote.AbstractProtocol destroy
信息: 正在摧毁协议处理器 ["http-bio-8080"]
3. 推测与ssh会话有关
怀疑与ssh会话有关,我用的是windows+SecureCRT/xshell
二、ssh会话强制退出验证
2.1. 手动强制关闭进程1
启动 tomcat服务
cd /app/apache-tomcat-7.0.109/
sh bin/startup.sh
手动在任务管理中强制关闭SecureCRT/xshell的进程,再登录SecureCRT/xshell,使用grep查看运行的tomcat,发现tomcat依然运行。
ps -ef|grep java
root 18895 1 1 11:52 ? 00:00:39 /app/jdk1.8.0_301/bin/java -Djava.util.logging.config.file=/app/apache-tomcat-7.0.109/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms4096m -Xmx4096m -Xss1024K -Xmn1536m -XX:PermSize=64m -XX:MaxPermSize=256m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8851 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.105.6 -Dignore.endorsed.dirs= -classpath /app/apache-tomcat-7.0.109/bin/bootstrap.jar:/app/apache-tomcat-7.0.109/bin/tomcat-juli.jar -Dcatalina.base=/app/apache-tomcat-7.0.109 -Dcatalina.home=/app/apache-tomcat-7.0.109 -Djava.io.tmpdir=/app/apache-tomcat-7.0.109/temp org.apache.catalina.startup.Bootstrap start
2.2. 手动强制关闭进程2
启动 tomcat服务并查看日志
cd /app/apache-tomcat-7.0.109/
sh bin/startup.sh & tail -f logs/catalina.out
- 1直接关闭tomcat启动窗口,重新登陆,tomcat服务进程已关闭。
- 2直接通过任管理窗口强制关闭SecureCRT/xshell的进程,再登录SecureCRT/xshell,使用grep查看运行的tomcat,发现tomcat服务已经停止运行。
- 3脚本启动
Tomcat 一键启停脚本 linux
直接通过任管理窗口强制关闭SecureCRT/xshell的进程,再登录SecureCRT/xshell,使用grep查看运行的tomcat,发现tomcat服务已经停止运行。
2.3. 总结归纳与解决方案
启动tomcat服务时,如果通过多条shell脚本执行多条命令的话,关闭当前启动窗口或者强制关闭SecureCRT/xshell的进程,再登录SecureCRT/xshell,使用grep查看运行的tomcat,就会发现tomcat服务已经停止运行。
- 解决方案
第一种:启动tomcat 直接使用sh bin/startup.sh
启动tomcat服务
第二种:脚本启动单条命令执行tomcat启动