OOM Killer
Linux 内核有个 OOM Killer 的机制,可以在系统内存不足的时候,通过主动杀死一些进程来释放更多的内存空间。
很多时候,我们可以 ping 通一台服务器,但无法 ssh 上去,因为 sshd 被 OOM Killer 杀掉了。ping 能 ping 通,是因为处在内核态协议栈还能工作,发出回送报文。sshd 则因为是用户态进程,直接被干掉了。
关闭再打开 OOM Killer 的方法:
1 |
|
OOM Killer 决定是否要杀死一个进程,主要看两个指标:
- /proc/PID/oom_score 的分数
- /proc/PID/oom_adj
可以通过以下方法强制内核不得杀死某个进程:
1 |
|
参考文档:
- 关于OOM-killer
- 这里有一篇《OOM Killer》讨论它的工作细节。
- Linux 下 OOM Killer 机制的详解
- Linux内核OOM机制的详细分析
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.