MemAvailable 还有 29GB,系统却报内存压力?——Ubuntu 24.04 CIFS 内核 Page Cache 泄漏排查实录
MemAvailable 还有 29GB,系统却报内存压力?——Ubuntu 24.04 CIFS 内核 Page Cache 泄漏排查实录搬运并适配自国外社区真实案例。原文出处见文末。现象Ubuntu 24.04 生产服务器,跑 Java 应用 + PostgreSQL + Nginx,挂载了 3 个 CIFS 网络共享做备份和文件交换。每运行约一个月,系统开始出现以下症状:free -h显示 MemAvailable 还有 29GB(总共 48GB),看起来内存充裕但 syslog 疯狂刷systemd-journald: Under memory pressure, flushing caches.drop_caches只能释放约 200MB,完全不符合预期服务器逐渐失去响应,SSH 连不上,最终只能强制重启最诡异的地方:重启后一切正常,meminfo 各项指标也对得上。但跑一段时间后,问题必现。排查过程第一回合:常规检查——全部正常$ free -h total used free shared buff/cache available Mem: 47Gi 17Gi 1.5Gi 15Mi 28Gi 29Giavailable 有 29G,看起来不像内存不足。查看/proc/meminfo关键字段:MemTotal:49285376kB MemFree:1611852kB MemAvailable:29837696kB# 29GB,看起来很多Buffers:0kB Cached:367752kB# ⚠️ 只有 367MB?Active(file):7379008kB# 7GBInactive(file):20216280kB# 20GB第二回合:发现矛盾到这里,有经验的同学应该已经发现问题了。正常的 Linux 内存统计中,Active(file) + Inactive(file)约等于Cached(都是 file-backed pages),差值通常在几百 MB 以内。