阿里云ECS的CPU突然跑到100%,一定是被挖矿了吗?新手该从哪一步查起?

阿里云上云采购季 2核2G云服务器99元/年 续费同价

云服务器导航,点击直达:阿里云,腾讯云,京东云,百度云,UCloud

直接给结论:CPU 长时间跑满,多数情况不是被挖矿,而是你自己的程序死循环、备份任务或爬虫在吃资源;只有出现”不认识的进程名 + 陌生外联 IP + 你没建过的定时任务”这几条同时出现,才要按入侵处理。所以第一步永远不是重启,而是先弄清是谁在占用。

第一步:先分清是”业务跑满”还是”异常占用”

登录服务器看一眼就够:Linux 用 top(按 P 键按 CPU 排序)或 htop,Windows 用任务管理器切到”详细信息”看 CPU 列。重点看三件事——进程名认不认识、占用是不是长期不降、进程的启动时间是不是很新。如果吃 CPU 的是你熟悉的 nginx、java、mysql、node,那多半是业务量上来了或者程序里有慢循环、慢 SQL,属于调优问题;如果进程名是一串随机字母数字、可执行文件躲在 /tmp 或 /dev/shm 下,就要紧张起来了。

第二步:判断是不是被入侵挖矿

挖矿和入侵有几个很典型的特征,中两条以上基本可以确诊:

  1. CPU 长期贴着 100% 降不下来,但业务本身没有明显变化;
  2. 用 netstat -antp 能看到进程连着陌生的境外 IP,尤其是矿池常见的端口;
  3. crontab -l 里出现你没写过的定时任务,机器一重启挖矿进程就自动回来;
  4. 登录日志里有一堆来自陌生 IP 的失败尝试(lastb、/var/log/secure),说明有人在爆破 SSH。

第三步:确认被入侵后怎么处理

  1. 先隔离、留证据。在控制台把安全组出入方向收紧,或直接把实例停机,并给系统盘做一份快照。别急着删文件,删了反而查不清根因。
  2. 再清干净。杀掉恶意进程、清掉恶意 cron、改掉全部密码和密钥。如果对”清得干不干净”没有把握,重装系统比手工擦洗更省心也更彻底。
  3. 最后堵入口。SSH 换掉默认 22 端口、只允许密钥登录、安全组只放行必要端口;数据库端口绝对不要对公网开放;把 Redis、Fastjson 这类老组件该打补丁的打上。

如果查下来只是业务自己跑满,处理方向完全不同:找慢 SQL 和死循环、看是不是被爬虫刷、把图片和静态资源丢给 CDN 或对象存储分流,实在扛不住再考虑升配。腾讯云的应对思路一模一样——安全组收敛、快照留证、重装系统,只是控制台上的入口位置不同,概念可以直接搬过去。

注意:

  • 别一发现 CPU 高就立刻重启。重启会让内存里的进程和连接记录全部消失,排查难度反而更大。先 top 截个图、把进程名和路径记下来。
  • 被入侵过的机器不要再当”干净机器”继续跑业务。很多人杀完进程就当没事,几天后又被挖回来,根因通常是弱密码或没打补丁的老版本组件。
  • 如果业务数据放在数据盘上,重装系统不会动数据盘,但动手前务必确认数据盘已正确挂载、且有可用备份,避免”清干净了、数据也没了”。

总结:CPU 跑满先查进程——认得的进程按性能调优处理,不认得的进程一律按入侵处理。套路就是隔离留证、清干净、堵入口这三步,加上平时改端口、用密钥登录、及时打补丁这几件小事,能挡掉绝大多数扫描和爆破。

CPU 飙高的常见原因对照

现象 大概率原因 建议动作
熟悉进程长期高占用 业务增长、慢 SQL、死循环 查日志调优、加 CDN、按需升配
陌生随机名进程 + 境外外联 被入侵、被挂挖矿 快照留证 → 重装 → 加固安全组
整点/定时突然飙高 备份、扫描、定时任务叠加 错峰执行、限制并发

以官方活动页实时价格为准,各家套餐和计费规则经常调整,下单前请以页面实际展示为准。

阿里云ECS服务器产品文档:参考-阿里云服务器ECS文档
腾讯云轻量服务器产品文档:参考-轻量应用服务器 文档中心

发表评论