Oct 25 07:41:32 KVM-BOX kernel: memory: usage 255216608kB, limit 255216640kB, failcnt 28058
[root@KVM-BOX ~]# free -hm
total used free shared buff/cache available
Mem: 282G 203G 78G 173M 955M 78G
Swap: 0B 0B 0B 0B 0B 0B
[root@KVM-BOX ~]# cat /proc/meminfo
MemTotal: 296615980 kB
MemFree: 82997080 kB
MemAvailable: 82829388 kB
我所看到的每个指标都表明应该有 296615980kb 的内存可用,但 OOM 似乎认为只有 255216612kB 的内存可用?
# lsmem -a
RANGE SIZE STATE REMOVABLE BLOCK
0x0000000000000000-0x000000007fffffff 2G online no 0
0x0000000100000000-0x000000017fffffff 2G online no 2
0x0000000180000000-0x00000001ffffffff 2G online no 3
0x0000000200000000-0x000000027fffffff 2G online no 4
0x0000000280000000-0x00000002ffffffff 2G online no 5
0x0000004800000000-0x000000487fffffff 2G online no 144
Memory block size: 2G
Total online memory: 288G
Total offline memory: 0B
答案1
阅读您省略的其余日志行,并检查 kill 消息是否与“内存不足”或“内存 cgroup 内存不足”匹配。在后一种情况下,内存限制是 cgroup 上的资源控制功能。
当达到 cgroup 限制时,OOM 终止程序会触发。当某个组的配额用尽时,最不坏的选择与整个系统相同:终止某些进程。释放该组中的内存,而不会危及整个系统。
查看此主机上拥有的任何内存 cgroup。
特别是 systemd: systemd-cgtop --order=memory
即使没有 cgroups 在运行,282 GB 中的 243 GB 也承受着一定的内存压力。86% 的利用率太高了。进行一些容量规划。如果KVM-BOX
VM 主机为客户机分配了大内存,则不要启动超过此利用率的内存。