OOM killer 是linux自我保护的一个机制,内核检测到内存不足的时候,会挑选并杀掉某个进程以释放内存
为什么会出现内存不够的情况呢?
进程不应该是按需分配内存吗,没有了就不分配吗,怎么会有内存不足的情况呢?
这就是linux另一个高明的机制,linux的内核会根据应用程序的要求来分配内存,但是应用程序不可能一直将分配给它的内存都用满,所以为了最大化的利用内存,Linux有一个叫过度分配内存(over-commit-memory)的策略
一般来说没有问题,但是如果有个时间,每个应用程序都将自己的内存都消耗光了,那么所有应用程序的内存之和就是大于实际物理内存的,这个时候就需要出发OOM killer机制来杀掉一部分进程了。
正常情况:日常应用程序没有消耗到自己分配的最大内存,运行无问题
异常情况:某个时间,各个应用程序都将分配给自己的内存消耗光了,那么各个应用程序用的内存之和就大于实际物理内存了,也就出现问题需要OOM killer了
如何避免OOM killer的发生的?
超分是服务器资源利用率最大化的一个合理机制,所以我们只能从监控和规划上去避免:
【1】做好监控,当内存使用达到设定的告警阈值,人工干预,保证重要服务不受影响
【2】合理划分内存
欢迎关注我的公众号:龙叔运维
持续分享运维经验