dmesg 里出现 OOM(Out of Memory) 信息,说明 Linux 内核在尝试分配内存时,已经无法满足需求,触发了 OOM Killer 机制。
下面从「原因 → 表现 → 常见场景 → 排查方法」给你系统讲一下。
OOM = Out Of Memory
当系统:
就会触发 OOM Killer,强行杀掉某些进程来释放内存。
在 dmesg 中常见关键字:
Out of memory: Kill process xxx (xxx) score xxx or sacrifice child
示例:
-Xmx 设置过大innodb_buffer_pool_size 过大dmesg 中出现 killed processdmesg | grep -i "out of memory"
重点看:
free -h
top
htop
cat /var/log/messages
journalctl -k
swapon -s
free -h
docker stats
kubectl describe pod xxx
✅ 优化程序内存使用
✅ 调整 JVM / 数据库内存参数
✅ 增加物理内存或 swap
✅ 限制进程最大内存(cgroup / systemd)
✅ 启用 OOM 保护(对关键进程)
dmesg 出现 OOM,本质是系统内存不够用,内核被迫杀进程保命。
如果你愿意,可以把 dmesg 的 OOM 日志贴出来,我可以帮你精确定位是哪个进程、为什么被 kill。