最近遇到了一个问题,由于我们的服务采用dubbo框架,却近几次服务升级,总出现dubbo宕机的情况,经过一番排查,和研发同事的协助,终于在日志中找到线索:
报错日志:
org.apache.coyote.AbstractProtocol pause
Pausing ProtocolHandler
org.apache.catalina.core.StandardService stopInternal
Stopping service Catalina
org.apache.coyote.AbstractProtocol stop
Stopping ProtocolHandler
org.apache.coyote.AbstractProtocol destroy
Destroying ProtocolHandler
经过网上搜索,原来是由于不规范操作,导致,具体情况如下:
$ cat test.sh
#!/bin/bash
cd /data/server/tomcat/bin/
./catalina.sh start
tail -f /data/server/tomcat/logs/catalina.out
tomcat启动为后,当前shell进程并没有退出,而是挂住在tail进程,往终端输出日志内容。这种情况下,如果用户直接关闭ssh终端的窗口(用鼠标或快捷键),则java进程也会退出。而如果先ctrl-c终止test.sh进程,然后再关闭ssh终端的话,则java进程不会退出。
经询问相关负责升级的同事,确实操作存在如上现象,问题得以解决。