原因是某些进程得到-17 oom_adj.这使得他们禁止OOM杀手(unkillabe!).
我可以通过以下脚本清楚地看到:
#!/bin/bashfor i in `grep -v 0 /proc/*/oom_adj | awk -F/ '{print }' | grep -v self`; do ps -p $i | grep -v CMDdone
好吧,它对sshd,udevd和dhclIEnt有意义,但后来我看到常规用户进程也得到-17.一旦该用户进程导致OOM事件,它将永远不会被杀死.这导致OOM kiler疯狂. NFS rpc.statd,cron,碰巧不是-17的一切都将被消灭.结果节点关闭.
我有Debian 6.0(linux 2.6.32-3-amd64).
有谁知道在哪里控制-17 oom_adj赋值行为?
可以从/etc/rc.local启动sshd和Torque mom会导致过度保护行为吗?
解决方法 它从产生它的过程中继承.如果SSH设置为-17,那么Bash将是.如果你通过Bash重新启动,你将进一步产生它.[i-180ae177] root@migrantgeek ~ # pgrep MysqLd_safe11395[i-180ae177] root@migrantgeek ~ # cat /proc/11395/oom_adj 0[i-180ae177] root@migrantgeek ~ # for pID in `pgrep bash`; do echo -17 > /proc/$pID/oom_adj; done[i-180ae177] root@migrantgeek ~ # /etc/init.d/MysqLd restartStopPing MysqL: [ OK ]Starting MysqL: [ OK ][i-180ae177] root@migrantgeek ~ # pgrep MysqLd_safe11523[i-180ae177] root@migrantgeek ~ # cat /proc/11523/oom_adj -17
编辑init脚本以在启动过程结束时更改值应解决此问题.
总结以上是内存溢出为你收集整理的linux – OOM杀手变得疯狂全部内容,希望文章能够帮你解决linux – OOM杀手变得疯狂所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)