小服务器内存报警:先看懂这三个数,再决定加不加内存
【摘要】 小服务器收到内存报警,第一反应往往是「内存不够,该升级了」。但 Linux 的内存机制有个反直觉的地方:空闲内存它会拿去做缓存,所以「用得多」不等于「不够用」。升级之前,先花两分钟看懂下面三个数,多数报警都是虚惊一场。 先看 free -h,别看总量百分比执行 free -h,重点看三列:available(可用) 才是最重要的数字。它是「新程序现在能申请到的内存」的估算,已经把可回收的缓存...
小服务器收到内存报警,第一反应往往是「内存不够,该升级了」。但 Linux 的内存机制有个反直觉的地方:空闲内存它会拿去做缓存,所以「用得多」不等于「不够用」。升级之前,先花两分钟看懂下面三个数,多数报警都是虚惊一场。
先看 free -h,别看总量百分比
执行 free -h,重点看三列:
- available(可用) 才是最重要的数字。它是「新程序现在能申请到的内存」的估算,已经把可回收的缓存算了进去。available 还剩 20% 以上,基本不用慌。
- buff/cache 是磁盘缓存,占多少都正常——内存闲着也是闲着,系统拿它加速文件读写;真有程序要内存,它会立刻让出来。
- used 把缓存也算进去了,所以单看 used 占比高,说明不了任何问题。
一句话:判断内存紧不紧,看 available,不看 used。
再看 Swap 用了多少
free -h 的第二行是 Swap。Swap 偶尔用一点不奇怪(冷数据被换出);要警惕的是 Swap 持续增长、同时机器明显变卡——那说明物理内存真的不够,系统在频繁换页,这时候才该考虑升级内存或找出吃内存的进程。
完全没配 Swap 的小服务器也常见,内存真耗尽时会直接触发 OOM 杀进程,反而更危险;留 1–2G Swap 当缓冲带,是便宜的保险。
找出谁在吃内存
内存确实紧张时,定位进程:
ps aux --sort=-%mem | head -6
看前几名是不是预期内的程序。有些服务(如数据库、Java 应用)会预留较大内存,未必是异常;如果是不认识的进程占了大头,再进一步排查它是谁、为什么涨。还可以用 dmesg | grep -i "out of memory" 看有没有进程已经被 OOM 杀过——有,就是内存真不够用过的实锤。
结论
内存报警的处理顺序:看 available 定性 → 看 Swap 趋势定程度 → ps 排序找元凶。三步走完再决定加不加内存,能省下不少冤枉钱;如果确认是某个进程异常膨胀,重启或修它比盲目升级管用得多。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)