先判断是不是内存问题
很多网站卡顿、接口超时或后台突然变慢时,第一反应都是“服务器内存不够”。这个判断有时是对的,但也很容易误判。Linux 会主动把空闲内存用于缓存文件和目录项,所以在监控面板里看到内存占用很高,并不等于业务已经缺内存。

更可靠的判断方式,是同时观察可用内存、交换分区、进程占用和系统是否出现 OOM 记录。如果只是缓存占用高、available 仍然充足,通常不需要立刻扩容;如果 swap 持续被大量使用,或者日志里出现进程被系统杀掉,才更接近真正的内存压力。
先看 free 输出里的 available
排查时可以先执行 free -h。很多新手会盯着 used 一列,以为 used 很高就是危险信号。实际上 Linux 的 buff/cache 会被计算在已使用内存里,但这部分在业务需要时可以被回收。
更应该关注的是 available。如果 available 还有较大余量,且 swap 没有明显增长,说明系统仍有可调度空间。相反,如果 available 很低,同时 swap in/out 频繁,访问延迟明显升高,就要继续向下排查具体进程。
找出真正吃内存的进程
确认存在内存压力后,可以用 top、htop 或 ps aux --sort=-%mem | head 查看占用最高的进程。这里不要只看进程名字,还要结合启动参数、所属用户和服务路径判断它到底属于哪个业务。
常见场景包括 PHP-FPM 子进程过多、Java 服务堆内存设置过大、MySQL 缓冲区配置不合理、队列任务堆积、图片处理脚本异常循环等。对于 WordPress、企业官网或轻量业务来说,如果访问量不大却频繁吃满内存,插件、主题、定时任务和数据库查询往往比服务器配置更值得先检查。
检查 OOM 与系统日志
如果业务进程突然消失,或者网站一会儿正常一会儿 502,就要检查系统是否触发过 OOM。可以执行 dmesg -T | grep -i "killed process",或者查看 /var/log/syslog、/var/log/messages、journalctl -k。
OOM 日志通常会记录被杀掉的进程名、PID 和当时的内存状态。它能帮助你确认问题不是“服务自己挂了”,而是系统在内存紧张时主动回收了某个进程。对于线上业务,这类问题不能只靠重启解决,因为重启只是把现场清空,并没有处理根因。
什么时候该优化,什么时候该扩容
如果内存压力来自明显异常,例如某个脚本占用不断上涨、缓存没有过期、日志任务堆积、数据库查询拖死连接池,应优先修复应用和配置。盲目扩容会让问题延后爆发,成本也会越来越高。
如果业务增长稳定、访问峰值确实上来了,且进程占用符合预期,就可以考虑升级配置或拆分服务。使用云服务器时,建议保留一定冗余,不要把内存长期压在 90% 以上运行。像企业站、WordPress 站或中小型业务系统,可以先根据访问量和程序类型选择合适规格;如果需要香港线路或弹性升级,也可以参考 速维云 的云服务器方案,把线路、内存和后续扩展一起评估。
建立一套固定排查顺序
内存问题最怕凭感觉处理。建议固定顺序:先看现象,再看 free -h,然后查高占用进程,接着看 OOM 和服务日志,最后判断是应用优化、参数调整还是资源扩容。每一步都留下命令输出和时间点,后续复盘会轻松很多。
如果是生产环境,还应配合监控记录内存、swap、负载、连接数和接口耗时。这样下次故障出现时,就不需要靠“刚才好像很卡”来判断,而是能直接看到资源曲线和业务指标之间的关系。














