Skip to content

理解 Linux 内存与缓存 ​

先看 available ​

排查 Linux 内存占用时,不要只看 free 一列。系统会把部分空闲内存用于页面缓存,提高文件读取效率。available 是无需交换即可为新应用提供内存的估计值,比单看 free 更适合判断余量。

sh
free -h

某次约 1 GiB 主机的观察结果:总内存约 952 MiB,available 约 490 MiB。这表示当时仍有约一半内存可供新任务使用。不同版本的 procps 对 used 的统计方式可能不同,不要用简单加法推导所有列。

页面缓存不是泄漏 ​

buff/cache 用于缓冲区和缓存,其中一部分可在应用需要时回收。缓存较高本身不等于内存不足,也不应为了让 free 数字好看而定时清理缓存。

要判断是否有压力,应同时观察 available 的变化、应用延迟、交换活动以及 OOM 事件。单次截图只能说明当时情况。

查找主要进程 ​

sh
ps aux --sort=-rss | head -n 10
vmstat 1 5

RSS 表示进程当前驻留物理内存,VIRT 是虚拟地址空间;不能把 VIRT 直接当作真实物理内存占用。多个进程的 RSS 可能包含共享页面,直接求和会重复统计。

小内存主机的安排 ​

静态知识库适合在本地或托管构建环境中生成,再交给 CDN 提供访问。Cloudflare Pages 部署不需要在这台主机常驻 Node.js 服务。若其他应用在构建或高峰期耗尽内存,应先识别峰值来源,再决定限制并发、优化服务或扩容。

延伸阅读 ​

持续记录,持续理解。