美國(guó)網(wǎng)站后綴搜索引擎優(yōu)化的方法
一.tomcat突然宕機(jī)時(shí)間
???????? 2019年10月19號(hào)8點(diǎn)30分51秒,xxxx系統(tǒng)生產(chǎn)環(huán)境的92機(jī)器出現(xiàn)tomcat突然宕機(jī)問(wèn)題。
二.問(wèn)題定位
1.排查tomcat的啟停日志。在文件tomcat/logs/localhost.xxxx.log,排查tomcat的啟停日志正常。在宕機(jī)時(shí)刻,有關(guān)閉日志輸出。
2.使用history命令,查看系統(tǒng)的操作命令。發(fā)現(xiàn)使用‘./bin/startup.sh & tail –f logs/catalina.out’的啟動(dòng)命令,并沒(méi)有任何kill命令和shutdown命令。
3.排查tomcat的運(yùn)行日志。在文件tomcat/logs/catalina.out中,找到tomcat宕機(jī)的時(shí)間點(diǎn)的日志,發(fā)現(xiàn)沒(méi)有收到shutdown port的日志。而正常收到shutdown port 命令的會(huì)輸出日志“org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.”。
4.排查項(xiàng)目的異步日志文件輸出,在宕機(jī)時(shí)間點(diǎn),所有接口請(qǐng)求正常,響應(yīng)正常,有接口請(qǐng)求日志輸出,有響應(yīng)日志輸出。
???????? 5.經(jīng)過(guò)在網(wǎng)上搜索資料發(fā)現(xiàn)。使用‘&’字符命令方式。如果此時(shí),未關(guān)閉日志輸出,而直接關(guān)閉ssh終端,會(huì)殺掉最后一行命令‘./bin/startup.sh & tail –f logs/catalina.out’所影響的兩個(gè)進(jìn)程,即tomcat的進(jìn)程和查看日志進(jìn)程。此時(shí)導(dǎo)致了tomcat關(guān)閉,出現(xiàn)了突然宕機(jī)。
三.場(chǎng)景復(fù)現(xiàn)步驟
1.正常關(guān)閉tomcat應(yīng)用,在tomcat運(yùn)行日志中輸出“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’”命令啟動(dòng)tomcat,項(xiàng)目正常啟動(dòng),并打開了日志輸出。
3.直接關(guān)閉ssh終端。
4.打開ssh終端,并查看tomcat的啟停日志文件,發(fā)現(xiàn)在關(guān)閉ssh終端的同時(shí),tomcat應(yīng)用被關(guān)閉。
5.查看tomcat的運(yùn)行日志,發(fā)現(xiàn)在關(guān)閉時(shí)刻,沒(méi)有輸出“shutdown port”的日志。
6.使用‘./bin/startup.sh’啟動(dòng)tomcat。此時(shí)關(guān)閉終端。
7.打開ssh終端,tomcat正常提供服務(wù)。
經(jīng)上述步驟驗(yàn)證。在使用“&”字符并列命令是,會(huì)開啟多個(gè)進(jìn)程。此時(shí)直接關(guān)閉ssh終端,則會(huì)關(guān)閉上述的多個(gè)進(jìn)程。
如下圖。正常使用“shutdown”命令關(guān)閉tomcat的日志輸出。
?
四.解決方案
???????? 1.tomcat啟動(dòng)時(shí),盡量不使用“&”字符并列命令。如果使用了,必須先退出當(dāng)前終端窗口后,再關(guān)閉SSH終端。
???????? 2.tomcat啟動(dòng)使用單命令“startup.sh”。