springboot项目shutdown后,进程未kill掉引发的linux内存不足

  我的第一篇博客记录了用shutdown优雅地关闭掉程序后,我就想当然的以为该进程已经自己把自己kill掉。之后就在服务器不停的发布新项目,自己并没有意识到系统内存越来越低,直到有一天早晨发现新发布的项目进程被系统强制kill掉。。。

我的第一反应是,服务器本身内存就不太高,系统的问题造成?

后来找到维护linux的同事帮忙加了swap的内存,之前只有1个G(我拿来当测试机用的),我以为这事就这么结束了,直到有一天又被杀死……

       接着,开始了漫无目的的如何优化项目内存……

       前几天想清除之前测试程序留下的日志,发现有一个日志文件夹内日志还在不停生成,按理说早就shutdown应该停止了啊?为什么还在执行(由于这个项目测试时连接数据库参数不对,导致一直在输出异常日志)?百思不得其解……可是又找不到当初发布时的进程?

       直到今天,查到一个命令

查看 Springboot 项目占用的进程

ps aux | grep "java -jar" | grep -v "grep"

springboot项目shutdown后,进程未kill掉引发的linux内存不足_第1张图片

所有已经shutdown的项目占用的进程竟然都还在!那我可以理解为shutdown只是停止了程序,但并没有释放掉进程?

将没有用的进程kill掉后:

瞬间感觉世界都干净了!

可是,我还是不太明白为什么会这样,别人是怎么处理这种问题的?百度了一下,看到一篇类似的博客,不过讲的是Tomcat

https://blog.csdn.net/qq_29272491/article/details/79251865

https://blog.csdn.net/yucdsn/article/details/78193384

然后查了一下我自己服务器上的tomcat

竟然有三条历史未kill掉的进程。

以前从未意识到过这个问题。从第二篇博客那看,意思是项目中有非守护线程的存在,准备先去了解一下什么是非守护线程-_-||

你可能感兴趣的:(linux,springboot)