VPS 内存不足怎么办:排查 OOM 与添加 Swap
网站半夜突然挂了、数据库莫名重启、SSH 卡到连不上——这些症状背后最常见的原因是内存耗尽。本文教你确认问题、应急处理和长期解决。
第一步:确认是不是内存问题
SSH 登录后执行 free -h,重点看 available 列:长期低于 200M 说明内存紧张。再执行 dmesg | grep -i kill,如果看到 Out of memory: Killed process 字样,说明内核的 OOM Killer 已经在杀进程了——你的服务「莫名消失」就是被它杀的。
第二步:找出吃内存的进程
运行 top 后按 Shift+M 按内存排序,常见元凶:
- MySQL:默认配置假设内存充裕,小内存机器要调低 innodb_buffer_pool_size;
- PHP-FPM:进程数开太多,按内存÷单进程占用估算 max_children;
- 失控的应用:内存泄漏的 Node.js / Java 程序会持续增长直到耗尽。
第三步:添加 Swap 应急
Swap 是用磁盘充当的「后备内存」,能防止 OOM 直接杀进程。VPS 通常默认没有 Swap,添加 2G 的步骤:用 fallocate 创建 swap 文件、chmod 600 设置权限、mkswap 格式化、swapon 启用,最后写入 /etc/fstab 保证重启后生效。注意 Swap 只是缓冲:内存真正不够时系统会变慢但不崩溃,争取到的是排查时间。
长期解决
如果调优后 available 仍然常年贴底、Swap 使用率居高不下,说明业务体量已经超过当前配置,升级内存是最划算的解法。00Shark 支持套餐升配,联系客服说明当前用量即可评估。
本文由 SharkCloud 编辑团队借助 AI 工具辅助撰写,经人工审核后发布。