tomcat突然宕机问题解决方案

2022-09-17 12:14:35 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

一.tomcat突然宕机时间

2019年10月19号8点30分51秒,xxxx系统生产环境的92机器出现tomcat突然宕机问题。

二.问题定位

1.排查tomcat的启停日志。在文件tomcat/logs/localhost.xxxx.log,排查tomcat的启停日志正常。在宕机时刻,有关闭日志输出。

2.使用history命令,查看系统的操作命令。发现使用‘./bin/startup.sh & tail –f logs/catalina.out’的启动命令,并没有任何kill命令和shutdown命令。

3.排查tomcat的运行日志。在文件tomcat/logs/catalina.out中,找到tomcat宕机的时间点的日志,发现没有收到shutdown port的日志。而正常收到shutdown port 命令的会输出日志“org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.”。

4.排查项目的异步日志文件输出,在宕机时间点,所有接口请求正常,响应正常,有接口请求日志输出,有响应日志输出。

5.经过在网上搜索资料发现。使用‘&’字符命令方式。如果此时,未关闭日志输出,而直接关闭ssh终端,会杀掉最后一行命令‘./bin/startup.sh & tail –f logs/catalina.out’所影响的两个进程,即tomcat的进程和查看日志进程。此时导致了tomcat关闭,出现了突然宕机。

三.场景复现步骤

1.正常关闭tomcat应用,在tomcat运行日志中输出“org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.”。

2.使用“‘./bin/startup.sh & tail –f logs/catalina.out’”命令启动tomcat,项目正常启动,并打开了日志输出。

3.直接关闭ssh终端。

4.打开ssh终端,并查看tomcat的启停日志文件,发现在关闭ssh终端的同时,tomcat应用被关闭。

5.查看tomcat的运行日志,发现在关闭时刻,没有输出“shutdown port”的日志。

6.使用‘./bin/startup.sh’启动tomcat。此时关闭终端。

7.打开ssh终端,tomcat正常提供服务。

经上述步骤验证。在使用“&”字符并列命令是,会开启多个进程。此时直接关闭ssh终端,则会关闭上述的多个进程。

如下图。正常使用“shutdown”命令关闭tomcat的日志输出。

四.解决方案

1.tomcat启动时,尽量不使用“&”字符并列命令。如果使用了,必须先退出当前终端窗口后,再关闭SSH终端。

2.tomcat启动使用单命令“startup.sh”。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159394.html原文链接:https://javaforall.cn

0 人点赞