zoukankan      html  css  js  c++  java
  • LINUX内核中的机制OOM

    【概念】

      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,是因为该进程可能占用了特殊的内存地址空间。

  • 相关阅读:
    PHP MVC运用
    17个方法防止dedeCMS织梦网站被黑挂木马
    少有人走的路
    你有选择的自由
    产品经理需要掌握哪些能力
    产品经理的工作流程
    Weave实现跨主机容器互联
    转载【docker】CMD ENTRYPOINT 的使用方法
    Docker:发布镜像问题denied: requested access to the resource is denied的解决方法
    Docker Dockerfile基本配置
  • 原文地址:https://www.cnblogs.com/frankielf0921/p/7671118.html
Copyright © 2011-2022 走看看