三度网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

Linux怎样使用OOM killer 机制?

时间:2024-1-17作者:未知来源:三度网教程人气:


Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。

  OOM killer 机制就是Linux杀死进程的以个机制,如果进程损坏系统资源到底某种程度,OOM killer 机制就会强制杀死进程。本文就来介绍一下Linux如何使用OOM killer 机制。

Linux如何使用OOM killer 机制?

  简单来说该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉。

  这个功能即使在无法释放内存的情况下,也能够重复进行确保内存的处理过程,防止系统停滞,还可以找出过度消耗内存的进程。

  典型的情况是:某天一台机器突然ssh远程登录不了,但能ping通,说明不是网络的故障或者机器down掉,很大可能是sshd进程被 OOM killer杀掉了。

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

  还有另外一种情况也会导致能ping不能ssh,就是网络连接过多把系统文件描述符资源耗尽,这里暂时不考虑这种情况。

  而在使用vip的高可用方案中,这种情况也很容易出现脑裂的现象。

  防止重要的系统进程触发(OOM)机制而被杀死:可以设置参数/proc/PID/oom_adj为-17,可临时关闭linux内核的OOM机制。内核会通过特定的算法给每个进程计算一个分数来决定杀哪个进程,每个进程的oom分数可以/proc/PID/oom_score中找到。

  我们认为重要的进程有sshd,或者一些监控守护进程,大家可以根据自己实际情况选择需要保护的进程。

  保护某个进程不被内核杀掉可以这样操作:

  echo -17 》 /proc/$PID/oom_adj

  可以写一个简单的脚本,部署在crontab上防止重要进程被oom

  pgrep -f “/usr/sbin/sshd”

关键词:  Linux怎样使用OOM  killer  机制?





Copyright © 2012-2018 三度网教程(http://www.3du8.cn) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版