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

  • 相关阅读:
    hadoop20---代理另一种方式
    hadoop19---动态代理
    hadoop18---socket实现rpc
    JAVA发送HttpClient
    使用Socket&反射&Java流操作进行方法的远程调用(模拟RPC远程调用)
    hadoop17---RPC和Socket的区别
    hadoop16---反射
    hadoop15---activemq
    Struts2标签实现for循环
    struts2的标签中得到JSP脚本的变量值
  • 原文地址:https://www.cnblogs.com/frankielf0921/p/7671118.html
Copyright © 2011-2022 走看看