资源报警:CPU 100% 或内存爆满时的紧急抢救流程
服务器 CPU 飙到 100% 或内存爆满,网站打不开、SSH 卡死,别慌。主机选这篇 Linux 教程直接给出一套可复制的紧急抢救流程,从定位进程到强制清理,10 分钟内解决问题。

第一步:快速登录与初步诊断
当 SSH 还能连上时,优先用轻量命令排查。如果 SSH 卡死,尝试通过云服务器控制台的 VNC 或救援模式登录。
用 top 命令定位 CPU 和内存消耗者
`top` 是 Linux 下最直接的实时监控工具,能同时看到 CPU 和内存占用。
top -b -n 1 | head -20 # -b 批处理模式,-n 1 只输出一次,避免交互卡死
重点关注:
• `%CPU` 列:哪个进程占用 CPU 最高。
• `%MEM` 列:哪个进程吃内存最多。
• 如果看到 `kswapd0` 或 `java` 进程异常高,基本就是元凶。
用 ps 命令锁定具体进程
`top` 输出可能刷屏,用 `ps` 更精准。
ps aux –sort=-%cpu | head -10 # 按 CPU 使用率降序,取前 10 个
ps aux –sort=-%mem | head -10 # 按内存使用率降序,取前 10 个
老鸟叮嘱:千万别直接 `kill -9` 所有高占用进程,先确认是不是业务进程(如 Nginx、MySQL)异常,否则可能误杀导致服务崩溃。
第二步:强制清理与临时降级
定位到异常进程后,执行强制清理。如果内存爆满,系统可能触发 OOM Killer,但手动介入更快。
杀死异常进程
找到 PID(进程 ID),用 `kill` 命令终止。
kill -15 <PID> # 先发 SIGTERM,给进程优雅退出机会
sleep 3
kill -9 <PID> # 如果 3 秒后还在,强制 SIGKILL
如果进程是挖矿病毒或恶意脚本,杀完后要检查 `/tmp`、`/var/tmp` 和 cron 任务,防止自动重启。
清理内存缓存
内存爆满时,可以手动释放缓存,但不要依赖它作为长期方案。
sync && echo 3 > /proc/sys/vm/drop_caches # 释放 pagecache、dentries 和 inodes
注意:这条命令只释放缓存,不影响进程占用内存
第三步:排查根因与防止复发
临时解决问题后,必须找到触发点,否则过几小时又报警。
检查系统负载和 IO 瓶颈
CPU 100% 可能是计算密集,也可能是 IO 等待导致。用 `iostat` 或 `dstat` 看磁盘 IO。
iostat -x 1 3 # 每 1 秒输出一次,共 3 次,看 %iowait 是否过高
如果 `%iowait` 超过 30%,说明磁盘是瓶颈,优先考虑升级硬盘或优化 SQL。
检查日志文件
日志是定位问题的金矿,重点看 `/var/log/messages` 或 `/var/log/syslog`。
tail -100 /var/log/messages | grep -i error # 过滤最近 100 行中的 error 信息
journalctl -xe -n 50 # systemd 日志,看最后 50 行
常见错误:PHP-FPM 子进程耗尽、MySQL 慢查询堆积、Nginx 连接数超限。
老鸟叮嘱:一个高风险操作
千万不要在生产环境直接重启服务器而不先杀进程!
有些运维看到资源报警,第一反应是 `reboot`。如果磁盘 IO 爆满或内存泄漏严重,重启过程可能卡在 `umount` 或 `fsck` 环节,导致服务器彻底失联。正确做法是:先杀进程 -> 释放资源 -> 确认服务正常 -> 再决定是否重启。
FAQ
Linux SSH 连不上怎么办?
先检查云服务器控制台是否显示“运行中”,然后尝试 VNC 登录。如果 VNC 也卡死,只能强制重启。重启后第一时间检查 `/var/log/messages` 和 `dmesg`。
VPS 防火墙端口放行后还是访问不了是什么原因?
可能是服务本身挂了,或者端口被本地防火墙(iptables/nftables)拦截。用 `ss -tlnp` 确认端口是否在监听,再用 `iptables -L -n` 查看规则。
Linux 小白可以直接用 root 账号操作吗?
可以,但风险极高。建议用普通用户 + sudo,避免误操作删库跑路。紧急抢救时可以用 root,但操作完立刻退出。
BBR 开启后为什么速度没有明显提升?
BBR 只优化 TCP 拥塞控制,如果瓶颈在 CPU、内存或磁盘 IO,BBR 没效果。先排查资源占用,再考虑网络优化。
内存爆满时 OOM Killer 会自动杀进程吗?
会,但 OOM Killer 杀的不一定是你想杀的,可能误杀 MySQL 或 Nginx。手动干预更可控。
如何预防资源报警?
配置监控告警(如 Zabbix、Prometheus),设定 CPU 和内存阈值,并定期分析日志。另外,WordPress 站点要定期清理缓存和插件,避免内存泄漏。
—
**相关阅读:**
– [VPS 部署 AI 工具需要哪些基础?Linux、Docker、Nginx 和域名配置入门](https://www.zhujixuan.com/jishujiaocheng/9747.html)
– [AI 自动整理服务器日志:Nginx、SSH、安全日志分析流程](https://www.zhujixuan.com/jishujiaocheng/9908.html)
– [VPS 部署 AI 工具学习路线:从 Linux 基础到 AI Agent 实战](https://www.zhujixuan.com/jishujiaocheng/9765.html)
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9560.html 商家投稿邮箱:zhujixuanblog@qq.com
