💡
原文中文,约5000字,阅读约需12分钟。
📝
内容提要
Linux 系统中的内存不足会触发 OOM killer,终止占用内存最多的进程以释放内存。内核通过过度分配内存提高效率,但当多个应用程序的需求超出物理内存时,OOM killer 会介入。可以通过增加内存、优化应用程序或调整内核参数来减少 OOM 事件的发生。
🎯
关键要点
- Linux 系统中的内存不足会触发 OOM killer,终止占用内存最多的进程以释放内存。
- 内核通过过度分配内存提高效率,但当多个应用程序的需求超出物理内存时,OOM killer 会介入。
- 可以通过增加内存、优化应用程序或调整内核参数来减少 OOM 事件的发生。
- OOM killer 根据每个进程的内存使用情况计算分数,分数越高的进程越可能被杀掉。
- MySQL 由于占用内存较多,常常成为 OOM killer 的目标。
- 可以通过调整 oom_score_adj 值来降低进程被 OOM killer 杀掉的概率。
- 内核参数 vm.panic_on_oom 可以配置在 OOM 发生时系统的行为,例如触发 kernel panic 并重启系统。
❓
延伸问答
什么是 Linux 中的 OOM killer?
OOM killer 是 Linux 内核在内存不足时终止占用内存最多的进程,以释放内存的机制。
为什么会触发 OOM killer?
当多个应用程序的内存需求超出物理内存时,内核会触发 OOM killer 来终止某些进程。
如何减少 OOM 事件的发生?
可以通过增加内存、优化应用程序或调整内核参数来减少 OOM 事件的发生。
OOM killer 是如何选择要杀掉的进程的?
OOM killer 根据每个进程的内存使用情况计算分数,分数越高的进程越可能被杀掉。
MySQL 为什么容易成为 OOM killer 的目标?
MySQL 通常占用较多内存,因此在内存不足时常常成为 OOM killer 的首选目标。
如何调整进程以降低被 OOM killer 杀掉的概率?
可以通过调整 oom_score_adj 值来降低进程被 OOM killer 杀掉的概率。
➡️