Out of memory: Kill process 解决

简介:

Linux有一个特性:OOM Killer,一个保护机制,用于避免在内存不足的时候不至于出现严重问题,把一些无关的进程优先杀掉,即在内存严重不足时,系统为了继续运转,内核会挑选一个进程,将其杀掉,以释放内存,缓解内存不足情况,不过这种保护是有限的,不能完全的保护进程的运行。

在很多情况下,经常会看到还有剩余内存时,oom-killer依旧把进程杀死了,现象是在/var/log/messages日志文件中有如下信息:
Out of Memory: Killed process [PID] [process name].
该问题是low memory耗尽,因为内核使用low memory来跟踪所有的内存分配。
当low memory耗尽,不管high memory剩多少,oom-killer都会杀死进程,以保持系统的正常运行。

上google研究了一下, 找到了一些配置方法。记录一下,备忘。

sysctl vm.panic_on_oom=1
sysctl kernel.panic=X
echo “vm.panic_on_oom=1>> /etc/sysctl.conf
echo “kernel.panic=X” >> /etc/sysctl.conf

上面配置可以让linux在出现 Out of memory之后重启。

echo -15 > /proc/[pid]/oom_adj
这会让 oom 在出现 Out of memory后,尽量不去kill这个进程。

echo 10 > /proc/[pid]/oom_adjoom
会优先考虑kill这个进程。

echo -17 > /proc/[pid]/oom_adj
oom在Out of memory时, 不会kill该进程。

oom_adj的值在-16 到 +15之间,值越高被kill的优先度越高,当该值为-17时,系统将不会杀死指定pid的进程,而-16~15则会使得进程的/proc/[pid]/oom_adj值呈指数(K*2^n)形式递增,即它们被杀掉的可能性呈指数递增。针对init(进程号为1)这个进程,无论该值设为多少都不会被杀。

sysctl vm.overcommit_memory=2
echo “vm.overcommit_memory=2>> /etc/sysctl.conf

可以完全关掉oom, 不过这并不建议,关掉后可能会出现未知的情况。

本文转自奔跑在路上博客51CTO博客,原文链接http://blog.51cto.com/qiangsh/2066747如需转载请自行联系原作者


qianghong000

相关文章
|
1月前
|
人工智能 弹性计算 JavaScript
养“虾”进阶指南:OpenClaw多Agent+飞书bot实战+阿里云/本地部署+百炼API配置+避坑大全
对于新手来说,最友好的落地路径是:阿里云部署保障7×24小时稳定运行,飞书Bot实现多Agent消息分流,阿里云百炼Coding Plan免费API提供智能支撑。本文基于OpenClaw v2026.02.09最新稳定版,整合全流程资源:详解新手零基础阿里云部署步骤、百炼Coding Plan免费API配置、多Agent飞书绑定实战,补充高频避坑指南,所有代码可直接复制执行,助力新手快速搭建专属AI协作团队,从“单Agent打杂”升级为“多Agent协同作战”。
1918 2
|
JSON 前端开发 数据格式
【前后端异常】http/https post请求 返回415错误状态码的解决方法
【前后端异常】http/https post请求 返回415错误状态码的解决方法
8441 0
云大使推广奖励—云气值提现规则和步骤(包含企业/个人)
云大使推广奖励计—云气值是阿里云大使计划中的积分单位,可用于兑换现金和其他权益,100云气等值于1元人民币。个人与企业用户均可参与云大使推广,但提现流程有所不同。个人用户需绑定支付宝并扣税,而企业用户需完善账户信息并绑定对公账户,上传符合要求的发票后方可提现且抵税。更多详情及规则,请访问云大使官网及管理平台获取。
|
SQL 监控 druid
Druid连接池学习
Druid学习笔记,使用Druid进行密码加密。参考文档:https://github.com/alibaba/druid
1857 84
|
弹性计算 Linux 数据安全/隐私保护
【阿里云幻兽帕鲁】搭建 密码 存档 使用 费用 常见问题合集
本文持续更新幻兽帕鲁玩家在阿里云上遇到的问题及解法。
67076 91
【阿里云幻兽帕鲁】搭建 密码 存档 使用 费用 常见问题合集
|
中间件 Linux vr&ar
Centos7升级Glibc
centos7升级glic问题
3574 0
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
11695 12
|
监控 安全 测试技术
现在公司都在用的CI/CD框架到底是什么?
现在公司都在用的CI/CD框架到底是什么?
6908 1

热门文章

最新文章