处理SpringBoot项目运行一段时间后自动挂掉的问题

艺帆风顺 发布于 2025-04-03 12 次阅读


背景

    以前多使用tomcat容器部署war项目或者使用jenkins直接部署,没有亲自体验过部署jar。所以,这次接触了一个SpringBoot项目之后直接采用jar部署的方式试试水,然后就挂了。。

过程

    首先控制台运行java -jar -Dserver.port=8090 xx.jar & 后台运行程序,看了一下日志也能正常输出以为就大功告成了。不料高兴不到2h,程序就挂了。

2021-02-25 10:10:51.993 INFO 5392 --- [ Thread-3] o.s.s.c.ThreadPoolTaskScheduler : Shutting down ExecutorService 'threadPoolTaskScheduler'
2021-02-25 10:10:51.994 INFO 5392 --- [ Thread-3] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2021-02-25 10:10:51.996 INFO 5392 --- [ Thread-3] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.

    看了下报错(如上图),以为是数据库连接池问题,然后检查了application.yml配置,结果跟其它boot项目的配置都一样啊。初步诊断无果之后,开始一顿百度+尝试。
    终于,男主光环照耀下,迎来大结局。我在控制台运行java -jar xx.jar & 以为可以脱离终端后台运行,实际还是受控制台影响,当控制台超时自动断开连接,程序也随之挂掉。

解决方案一

    控制台输入改为
nohup java -jar -Dserver.port=8090 xx.jar > xx.log 2>&1 &
    使用nohup不挂断运行,并指定日志输出。

解决方案二

    把启动命令
java -jar -Dserver.port=8090 xx.jar &
    写到shell脚本里面,执行shell来运行就没问题,日志会自动输出到当前目录的 nohup.out 文件中。

总结

    日常踩坑,永无止境。
    想起了一个大佬说过的话,你知道的越多,你不知道的就越多。

版权声明:本文内容始发于简书>作者:蛋皮皮652,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。始发连接:https://www.jianshu.com/p/8b59685d0fc2在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,商业转载建议请联系原作者,非商业转载请注明出处。