MemAvailable 还有 29GB,系统却报内存压力?——Ubuntu 24.04 CIFS 内核 Page Cache 泄漏排查实录
2026/7/5 2:47:05 网站建设 项目流程

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 29Gi

available 有 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 以内。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询