linux – OOM杀手变得疯狂

linux – OOM杀手变得疯狂,第1张

概述在我们的集群上,当新进程请求太多内存时,我们有时会关闭节点.我很困惑为什么OOM杀手不仅仅是杀死了罪恶的过程. 原因是某些进程得到-17 oom_adj.这使得他们禁止OOM杀手(unkillabe!). 我可以通过以下脚本清楚地看到: #!/bin/bashfor i in `grep -v 0 /proc/*/oom_adj | awk -F/ '{print $3}' | grep -v 在我们的集群上,当新进程请求太多内存时,我们有时会关闭节点.我很困惑为什么OOM杀手不仅仅是杀死了罪恶的过程.

原因是某些进程得到-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杀手变得疯狂所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1039382.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存