蓝盟系统集成,你还担心服务器进程是OOM吗?只需一击即可避免

发布者:上海IT外包 发布时间:2019/8/19 9:40:34来源:www.linemore.com


  Linux内核有一种称为OOM杀手的机制(没有内存的杀手)。此机制监视使用过多内存的进程,尤其是那些瞬间消耗大量内存的进程。为了避免内存耗尽,内核将终止进程。放下它。
  你还担心服务器进程是OOM吗?只需一击即可避免
  一个典型的情况是:一个突然的远程登录ssh机器,但它可以ping,表明网络没有故障,因为sshd进程被OOM杀手杀死(这种类型的多次突然死亡)。重新启动计算机并查看系统日志“/var/log/messages”后,您将看到类似于“No memory: Kill process 1865(sshd)”的错误消息。
  如何防止消除重要的系统进程激活(OOM)机制?只需一个技巧就可以轻松避免。
  你还担心服务器进程是OOM吗?只需一击即可避免
  将“/proc/PID/oom_adj设置为-17”参数以临时禁用Linux内核的OOM机制。内核将使用特定算法计算每个进程的分数,以确定要杀死的进程。每个进程的OOM分数可以在“/proc/PID/oom_score”中找到。
  治疗
  1.方法1:将/proc/PID/oom_adj参数设置为-17
  如何防止他们杀死mongod,你可以这样做:
  (1)使用以下内容编写oomadj.sh脚本文件:
  #!/bin/bash
  Netstat -ntlup | grep mongod | awk'{print $ NF}'| awk -F'/''{print $(NF-1)}'|读PID时;
  做
  Eco -17>
  /proc/$ PID/oom_adj;
  DONE
  (2)制定时间计划
  [root @ mnkj-mongodb-01~] crontab -e
  */1 * * * * /root/oomadj.sh
  你还担心服务器进程是OOM吗?只需一击即可避免
  至于为什么要使用-17而不是其他值(默认值为0),这是由Linux内核定义的。检查内核源代码以了解:
  以Linux-3.3.6的Linux源代码为例,路径为“linux-3.6.6/include/linux/oom.h”。阅读核心源代码。 “oom_adj”的可调整值为15到-16,其中15个最大值-16是最小值,-17禁止使用OOM。 “oom_score”是针对2的n次幂计算的,其中N是过程的“oom_adj”值,因此“oom_score”得分越高,核心将首先被杀死的越多。2.方法2:修改内核参数以禁止OOM机制
  #sysctl -w vm.panic_on_oom=1
  Vm.panic_on_oom=1 //1表示关闭,默认值为0表示打开OOM
  #sysctl -p
  注意事项
  注意:
  Kernel-2.6.26之前的oomkiller算法不够准确,RHEL 6.x版本2.6.32解决了这个问题。
  子进程从父进程继承oom_adj。
  OOM不适合解决内存丢失问题。
  有时,自由视图有足够的内存,但OOM仍然被激活,因为进程可以占用特殊的内存地址空间。
  OOM Killer是一种非常实用的机制,可确保系统内存不会被单个进程耗尽。但是,在实际工作中,如果进程运行过多,则内存使用率会过高。还有许多其他因素,例如访问和攻击增加。
  这时,我们不仅要使用OOM杀手,还要注意服务器资源的使用。我们需要一个完善的实时监控系统,能够及时检测和处理系统,以确保业务的稳定运行。

 

上海IT外包服务网 链接:http://www.linemore.com

>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部