博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LINUX内核中的机制OOM
阅读量:6071 次
发布时间:2019-06-20

本文共 718 字,大约阅读时间需要 2 分钟。

【概念】

  LINUX内核中有一个机制叫做OOM killer(Out Of Memery killer)

  该机制监控内存占用过大,尤其是瞬间消耗大量内存的进程, 为了防止内存被耗尽,所以OOM killer会将它杀掉

 

【情景】

  某台机器某天不可以ssh登录,但是可以ping通IP ==> 说明不是网络的问题

   原因可能是sshd进程被OOM killer杀掉了(这就是假死状况)

  重启服务器后,查看日志/var/log/messages会发现Out of Memory: Kill process 1865(sshd)类似的错误信息。

【解决方法参考】

  如果是虚拟化出来的环境,可以利用vncserver进入环境,重启服务器,启动sshd服务。

 

【关闭OOM】

  类似ssh或者一些agent的services,是系统中一定需要存在的,那么为了防止它被OOM杀掉,就需要我们暂时去关闭OOM

       设置方法:

#需要设置什么服务,那么先利用ps去查看PID#然后根据PID进行设置echo -17 > /proc/$PID/oom_adj

 

【注意事项】

  1.Kernel-2.6.26之前版本的oomkiller算法不够精确,RHEL 6.x版本的2.6.32可以解决这个问题。

  2.子进程会继承父进程的oom_adj。

  3.OOM不适合于解决内存泄漏(Memory leak)的问题。

  4.有时free查看还有充足的内存,但还是会触发OOM,是因为该进程可能占用了特殊的内存地址空间。

 

转载于:https://www.cnblogs.com/frankielf0921/p/7671118.html

你可能感兴趣的文章
Linux系统一些系统查看指令
查看>>
php中的短标签 太坑人了
查看>>
[译] 可维护的 ETL:使管道更容易支持和扩展的技巧
查看>>
### 继承 ###
查看>>
数组扩展方法之求和
查看>>
astah-professional-7_2_0安装
查看>>
函数是对象-有属性有方法
查看>>
uva 10107 - What is the Median?
查看>>
Linux下基本栈溢出攻击【转】
查看>>
c# 连等算式都在做什么
查看>>
使用c:forEach 控制5个换行
查看>>
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
根据调试工具看Vue源码之组件通信(一)
查看>>
Thrift RPC 系列教程(5)—— 接口设计篇:struct & enum设计
查看>>
斯坦福-随机图模型-week1.5
查看>>
灵活的运用Model类
查看>>
hadoop 之分布式安装
查看>>
使用ansible工具部署ceph
查看>>
linux系列博文---->深入理解linux启动运行原理(一)
查看>>
Android反编译(一) 之反编译JAVA源码
查看>>