LHIDC

Linux 服务器内存占用过高怎么办?缓存、进程和 OOM 怎么判断

Linux 内存占用高不能只看 used,要结合 available、Swap、OOM 和进程增长趋势判断。本文说明如何区分正常缓存、真实内存不足和异常进程。

Linux 内存占用高并不一定是故障。Linux 会主动把空闲内存用于文件缓存,所以面板显示 used 很高,不代表应用已经没有内存可用。判断内存问题,要看 available、Swap、OOM 和进程变化趋势。

先看 free,不要只看面板百分比

free -h

重点看 `available`。如果 `available` 仍然充足,`buff/cache` 高通常是正常缓存。如果 `available` 很低,并且 Swap 明显使用,才说明内存压力较大。

观察结果判断处理方向
used 高,available 也高多数是缓存不需要清缓存
available 低,Swap 增长真实内存压力找高内存进程或考虑扩容
服务突然退出可能发生 OOM查内核日志
某进程持续上涨可能内存泄漏看进程和应用日志

找出高内存进程

ps -eo pid,user,cmd,%mem,%cpu --sort=-%mem | head -n 20

这条命令能看到内存占用最高的进程。数据库、Java 应用、游戏服、PHP-FPM、Node.js 都可能正常占用较高内存,关键看是否符合业务规模,以及是否持续增长不回落。

如果某个进程短时间持续上涨,可以间隔几分钟多看几次,而不是只凭一次截图判断。

查是否发生 OOM

dmesg -T | grep -i 'out of memory\|killed process'

如果看到 `Killed process`,说明系统因为内存不足杀过进程。网站 502、数据库断开、游戏服掉线都可能和 OOM 有关。

也可以看内核日志:

journalctl -k -n 100 --no-pager

OOM 日志通常会显示被杀进程的 PID、进程名和内存信息,这比“面板显示内存高”更有判断价值。

Swap 使用怎么看

Swap 不是不能用,但长期大量使用说明内存压力已经影响性能。数据库、游戏服和高并发 Web 服务如果频繁换入换出,会明显变慢。此时应先确认高内存进程是否正常,再决定优化配置或升级内存。

不建议频繁手动清缓存

清缓存会让数字变好看,但通常不是解决方案。缓存本来就是 Linux 提升性能的一部分。真正应该处理的是内存泄漏、进程数过多、配置不合理或业务规模超过当前配置。

什么时候考虑升级

如果业务高峰时 available 长期很低,Swap 持续使用,并且有 OOM 记录,说明配置可能不足。升级前建议记录高峰期进程、内存、访问量和业务类型,避免盲目加配置。

如果高内存来自陌生进程、隐藏路径或外发异常,先按安全事件排查。用户可以查看 free、ps、dmesg 和应用日志;涉及虚拟化资源限制、宿主机异常或扩容迁移时,需要服务商配合。

上一篇 SSH 提示 `Connection timed out` 怎么处理?网络、防火墙和安全组排查 下一篇 Linux 服务器突然变慢,应该先看哪些指标

LHIDC 产品中心

继续查看可购买的海外服务器产品

文章用于辅助选型,最终价格、库存与配置请以产品详情页和下单页面展示为准。

查看产品 查看方案