最近遇到了一個(gè)問(wèn)題,由于我們的服務(wù)采用dubbo框架,卻近幾次服務(wù)升級(jí),總出現(xiàn)dubbo宕機(jī)的情況,經(jīng)過(guò)一番排查,和研發(fā)同事的協(xié)助,終于在日志中找到線索:
報(bào)錯(cuò)日志:
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
經(jīng)過(guò)網(wǎng)上搜索,原來(lái)是由于不規(guī)范操作,導(dǎo)致,具體情況如下:
$ cat test.sh
#!/bin/bash
cd /data/server/tomcat/bin/
./catalina.sh start
tail -f /data/server/tomcat/logs/catalina.out
tomcat啟動(dòng)為后,當(dāng)前shell進(jìn)程并沒(méi)有退出,而是掛住在tail進(jìn)程,往終端輸出日志內(nèi)容。這種情況下,如果用戶直接關(guān)閉ssh終端的窗口(用鼠標(biāo)或快捷鍵),則java進(jìn)程也會(huì)退出。而如果先ctrl-c終止test.sh進(jìn)程,然后再關(guān)閉ssh終端的話,則java進(jìn)程不會(huì)退出。
經(jīng)詢問(wèn)相關(guān)負(fù)責(zé)升級(jí)的同事,確實(shí)操作存在如上現(xiàn)象,問(wèn)題得以解決。