Linux 中怎么排查缓存占用过高导致的内存告警

阿丽小哥_1510

阿丽小哥_1510

2026-11-02

471人浏览

原创

关键看available是否持续偏低,而非buff/cache或used数值;available充足则缓存高属正常,接近0时需结合si/so、bi/bo及MemAvailable等进一步排查内存压力。

linux 中怎么排查缓存占用过高导致的内存告警

缓存占用高本身不是问题,真正要判断的是它是否挤压了应用可用内存。关键看 available 值是否持续偏低,而不是盯着 buff/cache 或 used 数值发慌。

先确认是不是真有内存压力

运行 free -h,重点看 available 这一列:

  • 如果 available 还有几百 MB 甚至几 GB,说明系统内存充足,buff/cache 高是正常现象,不用干预
  • 如果 available 长期接近 0(比如小于 100MB),再结合 vmstat 1 5 观察:
    – si/so 持续大于 0 → 正在频繁换页,内存确实紧张
    – bi/bo 异常高 + CPU wa 升高 → 缓存抖动或磁盘 I/O 压力大
  • 顺手检查:cat /proc/meminfo | grep -E "^(MemAvailable|SwapFree|OomKillCount)"
    – MemAvailable 持续偏低、SwapFree 接近 0、OomKillCount > 0,都是真实内存压力的信号

区分缓存类型,看增长是否异常

buff/cache 包含三类主要成分,各自行为不同:

Linux Security Scanner
Linux Security Scanner

Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...

下载
  • Page Cache:读过文件后留下的内容副本,比如备份脚本扫大量日志、数据库预热加载数据。这类缓存会随文件访问自然增长,业务需要时自动释放
  • dentry/inode 缓存:来自遍历超大目录、创建海量小文件(如日志轮转、容器镜像层)。用 slabtop -o 看 dentry_cache、inode_cache 占比;若它们持续上涨不回落,可能是句柄泄漏或路径查找异常频繁
  • Slab 中不可回收部分:如某些驱动或内核模块分配的内存(SUnreclaim)。cat /proc/meminfo | grep -E "^(SReclaimable|SUnreclaim)" 对比两者,若 SUnreclaim 显著偏高,需进一步查 slabtop 或 /sys/kernel/slab/ 下具体 cache

定位背后的操作源头

高缓存往往由某次集中 I/O 触发,不能只看“现在谁在用”,而要看“最近谁在读写”:

  • 查近期大文件操作:find /var/log /data -type f -size +100M -mtime -1 -ls(按需调整路径和时间)
  • 看哪些进程正在大量读写:iotop -oPa(需 root,-o 只显示有 I/O 的进程,-P 按进程聚合)
  • 检查定时任务:grep -r "cp\|rsync\|tar\|dd" /etc/cron* /var/spool/cron/ 2>/dev/null,尤其注意备份、同步类脚本
  • 若怀疑是已删除但未释放的大文件占着缓存空间:lsof +L1 | awk '$7 > 1000000 {print $0}'(单位 KB),这类文件虽被 rm,只要进程还打开着,其内容仍在 page cache 中

要不要清缓存?怎么清才安全

绝大多数情况下不需要手动清理。Linux 内核会在应用申请内存时自动回收可回收缓存。强行清理反而导致后续读取变慢、I/O 上升。

  • 仅在极少数场景下考虑:
    – 确认是缓存异常堆积(如 dentry 泄漏),且重启相关服务无效
    – 临时缓解 OOM 风险,为排查争取时间
  • 如必须清理,按需选择:
    – echo 1 > /proc/sys/vm/drop_caches:只清 page cache(最常用)
    – echo 2 > /proc/sys/vm/drop_caches:清 dentries 和 inodes
    – echo 3 > /proc/sys/vm/drop_caches:清全部(慎用)
    执行前务必加 sync,避免丢数据
  • 清理后立刻观察:free -h 中 available 是否回升、业务响应是否改善、I/O 是否反弹。若无改善或恶化,说明问题不在缓存本身

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

960

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3332

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1096

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

969

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

514

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

3056

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5772

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

887

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习