linux springboot项目异常停止无日志

文章描述了一个在阿里云1G内存服务器上部署的SpringBoot+H2+Vue3+Nginx项目,由于内存限制,运行两个月后出现异常停止,内存使用率达到90%。Linux的OOMkiller机制可能会杀死占用内存过多的进程。为了解决这个问题,文章提出了两种方案:增加内存或关闭OOMkiller,并提供了相关系统日志检查方法和调整jar包启动内存配置的建议。
摘要由CSDN通过智能技术生成

帮朋友做了个小项目,代码不多,业务不多,部署在阿里云内存为1G的服务器上,采用springboot+h2,前端为vue3+nginx,运行参数最大最小内存都为500m,正常运行2个月后开始出现异常停止现像,无异常日志打印,同时发现内存实际为730M,已占用为90%

明显内存不足。。只是从没有在这么低配置上部署项目,一时不知所措,


一、 OOM killer

Linux 内核有个机制叫 OOM killer (Out Of Memory killer),该机制会监控那些占用内存过大,尤其是瞬间占用内存很快的进程,然后防止内存耗尽而自动把该进程杀掉。内核检测到系统内存不足、挑选并杀掉某个进程的过程可以参考内核源代码 linux/mm/oom_kill.c,当系统内存不足的时候,out_of_memory () 被触发,然后调用 select_bad_process () 选择一个”bad” 进程杀掉。如何判断和选择一个”bad 进程呢?linux 选择”bad” 进程是通过调用 oom_badness (),挑选的算法和想法都很简单很朴实:最 bad 的那个进程就是那个最占用内存的进程。


如何查看:

grep “Out of memory” /var/log/messages

在这里插入图片描述
查看系统日志方法:

运行 egrep -i -r ‘killed process’ /var/log 命令,结果如下
在这里插入图片描述
也可运行 dmesg 命令,结果如下:
在这里插入图片描述

二、解决办法

1,加内存
2,关掉OOM killer

# sysctl -w vm.panic_on_oom=1 (默认为0,表示开启,重启后会回复原状)
# sysctl -p

3,jar包启动时降低内存配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值