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 工具輔助撰寫,經人工審核後發佈。