最终还是要看日志啊,再次把tomcat异常关闭的catalina.out日志翻出来,异常关闭附近的一行行的看。然后把一个正常运行的服务,使用tomcat的shutdown命令关闭一次记录日志。又使用Linux的kill(-9)命令杀掉一个正常的服务。对比这3个日志,kill时Catalina是没日志的,对比另外2个,发现绝大多数都相同,关闭一个个中间件(MySQL、redis等),状态变为DOWN等。但是,还是有一点不同的。关键是这一句,shutdown命令执行时是没有输出的org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.拿着这个百度,果然找到了。下面是异常关闭时的关键部分日志。
25-Dec-2019 13:40:15.965 信息 [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
25-Dec-2019 13:40:15.966 信息 [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8081"]
25-Dec-2019 13:40:15.972 信息 [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
2019-12-25 13:40:15 INFO [localhost-startStop-2] (AbstractApplicationContext.java:1006) - Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@146edeec: startup date [Wed Dec 25 09:00:55 GMT+08:00 2019]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@7353390
2019-12-25 13:40:15 INFO [localhost-startStop-2] (EurekaServiceRegistry.java:65) - Unregistering application STATIC-CENTER with eureka with status DOWN
2019-12-25 13:40:15 WARN [localhost-startStop-2] (DiscoveryClient.java:1297) - Saw local status change event StatusChangeEvent [timestamp=1577252415987, current=DOWN, previous=UP]
2019-12-25 13:40:15 INFO [DiscoveryClient-InstanceInfoReplicator-0] (DiscoveryClient.java:826) - DiscoveryClient_STATIC-CENTER/172.30.52.240:static-center:8081: registering service...
2019-12-25 13:40:15 INFO [DiscoveryClient-InstanceInfoReplicator-0] (DiscoveryClient.java:835) - DiscoveryClient_STATIC-CENTER/172.30.52.240:static-center:8081 - registration status: 204
2019-12-25 13:40:15 INFO [localhost-startStop-2] (DefaultLifecycleProcessor.java:369) - Stopping beans in phase 2147483647
2019-12-25 13:40:15 INFO [localhost-startStop-2] (QuartzScheduler.java:585) - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2019-12-25 13:40:21
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.161-b12 mixed mode):