mem 分析

image

 

核心问题诊断

  • 物理内存几乎耗尽available 仅剩 153MB。这意味着物理内存(RAM)已经不足以支撑当前运行的程序,系统正在极限边缘运行。

  • Swap 被大量占用:你的 Swap 使用了 2043MB,甚至超过了你的物理内存总量(1756MB)。

    • 重点:当物理内存不足时,Linux 会把不常用的数据挪到磁盘上的 Swap 分区。

    • 后果:磁盘(硬盘)的读写速度比内存慢几百倍。一旦系统开始频繁读写这 2GB 的 Swap 数据,服务器会出现明显的卡顿、响应延迟,甚至导致服务进程(如 Java、MySQL)因 OOM (Out Of Memory) 被系统强制杀掉。

 为什么 free 只有 71MB,但 available 有 153MB?

这是 Linux 的内存管理机制。buff/cache 占用了 354MB,这部分主要是文件缓存。

  • Free (71MB):这是完全没被分配的内存,非常危险。

  • Available (153MB):这是系统认为在不影响运行的情况下,可以从缓存中回收并提供给新进程使用的最大估算值。

 

改进建议

  1. 排查内存占用大户: 执行 top 命令,按大写的 M 键进行排序,看看是哪个进程占用了最多的内存。

    ps aux --sort=-%mem | head -n 10
    
  2. 清理缓存(临时方案): 如果你觉得系统卡顿,可以尝试手动释放一下缓存(仅释放 cache,不解决根本问题)

    sync; echo 3 > /proc/sys/vm/drop_caches
    
  3. 根治方案

    • 升级硬件:这台机器只有 2GB 左右的内存,如果是运行现代化的后端应用(如 Docker、微服务),建议至少升级到 4GB 或更高。

    • 优化应用:检查是否有内存泄漏,或者是否给 JVM/数据库分配了过大的堆内存。

    • 调整 Swappiness:检查 /proc/sys/vm/swappiness 的值。如果值太高,系统会过早使用 Swap

ps aux --sort=-%mem | head -n 10 根据 结果找到某业务占了太多内存

 

posted @ 2026-03-16 14:11  codestacklinuxer  阅读(3)  评论(0)    收藏  举报