时间:2017-08-17来源:系统城装机大师作者:zhijie
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” | while read PID;do echo -17 》 /proc/$PID/oom_adj;done
其中的“/usr/sbin/sshd”可以替换为你认为重要的进程,不过在匹配时候注意不要匹配错了
1.进程的选定方法
OOM Killer在内存耗尽时,会查看所有进程,并分别为每个进程计算分数。将信号发送给分数最高的进程。
2.计算分数的方法
2024-07-18
Centos 7 二进制安装配置 MariaDB数据库2024-07-18
Centos7默认firewalld防火墙使用命令大全2024-07-07
四种执行python系统命令的方法常用权限linux系统内有档案有三种身份 u:拥有者 g:群组 o:其他人这些身份对于文档常用的有下面权限:r:读权限,用户可以读取文档的内容,如用cat,more查看w:写权限,用户可以编辑文档x...
2024-07-07
然而,如果我们遵循通常的 WordPress 最佳实践,这些安全问题可以避免。在本篇中,我们会向你展示如何使用 WPSeku,一个 Linux 中的 WordPress 漏洞扫描器,它可以被用来找出你安装...
2024-07-03