springboot通过shutdown进程依然存活的问题
2018-01-11 本文已影响0人
captain_fu
背景:
前几个月在组内一个小项目的基础上,进行了springboot的改造。在关闭springboot应用的时候,根据日志确认应用确实被关停,但是应用相关的进程还是存活。
问题:
通过springboot官方推荐的方式调用shutdown的url,在我的应用中是 "http://ip:port/shutdown",关闭springboot应用,应用正确停止,服务下线。但是再次grep进程,发现进程还是存活。
分析过程:
1. 怀疑是springboot的版本问题,从1.3.2升级到1.5.8一直到最新的1.5.9,发现现象还是完全一样,进程依然存活。
2. 在stackoverflow上提了相关问题,经高人指点,找到了这篇(本人提的问题内容和以下问题重复,已经关闭了问题)。https://stackoverflow.com/questions/31788332/should-the-spring-boot-shutdown-endpoint-shut-down-the-entire-jvm-process-or-ju
3. 本人大概翻译下(如理解有错误,大家可以指出):调用springboot应用的shutdown的url停止应用,如果应用中的依赖中存在ScheduledExecutor没有被应用上下文关闭,这个对象会使JVM保持存活,需要在代码中显示关闭对应的ScheduledExecutor。