内存不足与系统报告不匹配

内存不足与系统报告不匹配
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-BOXVM 主机为客户机分配了大内存,则不要启动超过此利用率的内存。

相关内容