← 帮助中心/故障排查

VPS CPU 占用 100% 怎么排查

CPU 跑满的表现是网站变慢、SSH 输入延迟、定时任务超时。原因可能是正常业务增长,也可能是程序失控甚至被植入挖矿木马。本文按排查顺序展开。

第一步:看清是谁在吃 CPU

运行 top(按 P 以 CPU 排序)或更直观的 htop,记下占用最高的进程名和 PID。这里先分三类情况:

  • 认识的业务进程(mysql、php-fpm、node 等)→ 走第二步;
  • 名字陌生或伪装成系统进程(随机字符串、kdevtmpfsi、xmrig 等)→ 大概率中了挖矿木马,跳到第四步;
  • iowait 高而非用户态高(top 里 wa 值大)→ 瓶颈其实是磁盘,排查方向改为磁盘 IO。

第二步:业务进程吃满的常见原因

  • MySQL:慢查询缺索引。开启慢查询日志,对扫全表的语句加索引;
  • PHP / Node:死循环或被爬虫打高。结合访问日志看是否有异常 IP 高频请求,配合限流或防火墙封禁;
  • 计划任务堆叠:上一轮 cron 没跑完下一轮又启动,任务越积越多,给脚本加锁(flock)。

第三步:确认是否只是配置不够

如果高峰期 load average 持续超过核心数、但每个进程都正常,说明是真实业务量超出配置,优化空间有限时直接升级 CPU 更划算。

第四步:疑似挖矿木马的处理

特征:CPU 常年 100%、进程名怪异、杀掉自动复活、crontab 里多了陌生条目。处理顺序:断掉可疑进程的网络、检查 crontab -l 和 /etc/cron.* 里的陌生任务、检查 ~/.ssh/authorized_keys 是否被加了陌生公钥。重要:清理木马很难彻底,最稳妥的做法是备份数据后重装系统,再按安全加固文章设置防火墙和密钥登录。需要协助可联系 00Shark 客服。

本文由 SharkCloud 编辑团队借助 AI 工具辅助撰写,经人工审核后发布。