傅令江的光影色彩世界
如何控制oom-killer
2014-11-14 令狐江

如何控制oom-killer

知道了故障原因,修复起来就简单了,防止oom-killer 被我的zabbix server下手呗。

oom-killer 触发的原因都是内存不足导致的,而内存不足通常是由于内存超分配导致的。

关于linux内核的超分配是由overcommit_memory参数控制的(/proc/sys/vm/overcommit_memory),

关于参数的解释大神都有很详细的解释了,我就直接拿来用了:

由于默认设置是0,所以导致了我的zabbix server一开始是可以轻微的超额申请到所需的

内存的,但当运行到一段时间之后系统就会因为严重缺乏内存到触发oom-killer。

杜绝内存超分配

如果没有内存超分配的问题,那系统永远都只会分配可分配的内存,即系统永远不会严重缺乏内存,
自然也不会触发oom-killer。

 

恢复默认的swappiness

 

echo "2" >/proc/sys/vm/overcommit_memory

当时的情况就设置为0是欠考虑的,更稳妥的做法是应当参考历史数据。

而且设置为0确实在内存不足的时候更容易触发oom-killer,这里我们还是恢复默认值:

echo "60" >/proc/sys/vm/swappiness

 

经验教训

这次的优化过程犯了非常非常多的错误。大致总结下如下:

其实大部分都是耳熟能详的东西,太阳底下无新事,但就是老生长谈的东西依旧要时刻

牢记在心,一句话对线上要有敬畏之心。

参考

发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容