云服务器cpu占用100%是怎么回事,先别慌
网站后台显示云服务器cpu占用100%,但你确实什么都没部署、页面也打不开,最可能的原因是CPU被挖矿木马、异常系统进程或者云厂商的监控组件吃满,而不是你的业务代码导致的。
这个问题在个人测试机、闲置服务器上特别常见,尤其刚买来还没装宝塔、没跑任何服务就爆满,十有八九是中招了,下面按排查优先级给你拆解清楚,每一步都照着做就行。
先分清是“真高”还是“假高”
很多人一看到控制台曲线红了就急着重装系统,实际上你可能误判了,云服务器控制台显示的CPU使用率,和你在服务器里通过 top 看到的数值,经常对不上。
- 控制台显示高,SSH里正常:大概率是云厂商的监控探针在跑,比如简米云的云监控插件、酷番云的镜检组件,会在某些时间点做全盘扫描或性能采集,短时拉高CPU,一般持续几分钟就回落。
- 控制台高,SSH里也高:这才是真的有问题,优先查进程。
行业里有个不成文的经验:先看 top,再查网络连接,最后才是重装系统,顺序反了,很可能白折腾一场。
用 top 定位真凶,记住这5条命令
SSH登录服务器后,按优先级执行:
top # 按CPU排序,看哪个进程在烧 top -c # 显示完整命令行,方便识别恶意进程 ps aux --sort=-%cpu | head -20 # 一次性列出CPU占用前20 netstat -antp # 查看外联IP,挖矿马会连矿池 lsof -p [PID] # 查看指定进程的打开文件
关键看点:
- 如果有一个进程叫
kworker、xmr、sysupdate,或者名字伪装成httpd、mysql,但CPU占到几百%,基本可以锁定是挖矿木马。 - 如果进程名是
ksoftirqd或者rcu_sched,且CPU合计超过50%,说明系统内核层面有异常中断,这事通常和云厂商的虚拟化层有关,建议提工单。 - 如果在top里看到
bash或sh进程吃了高CPU,/tmp目录下有不明文件,那多半是挂马后门,用ls -la /tmp检查一下,.so后缀的动态库文件尤其可疑。

云服务器cpu占用高怎么解决,分三步走
第一步:掐断可疑进程
kill -9 [PID]
这一步只能应急,因为很多木马有守护进程,杀掉主进程几分钟后它会被重新拉起,更稳妥的办法是先 chattr +i 锁住它的源文件,再杀进程。
第二步:检查定时任务和开机自启
crontab -l cat /etc/crontab ls /etc/init.d/
木马的持久化基本都藏在这三个位置,看到不认识的URL或者脚本路径,直接删掉相关行,特别注意 /var/spool/cron/ 这个目录,很多挖矿脚本往这里写定时任务。
第三步:改密码 + 补安全组
用 passwd 改root密码,至少16位含大小写符号,同时去云控制台检查安全组规则,把 0.0.0/0 放行的22端口改为只对你自己家宽IP开放,这一步能杜绝90%的再次入侵。
什么都没开却满载,重点排查这几个隐藏原因
挖矿木马占的比例最大,有份来自奇安信的内部溯源分析显示,近年新购云服务器漏洞利用攻击中,有相当一部分是Redis未授权和SSH弱口令爆破导致的中招,你原以为“什么都没开”,但系统默认安装的unzip、curl、wget这些工具,都有可能被黑客远程命令执行后当作下载器。
系统更新和漏洞修补进程,常见于刚装好的Windows系统或者CentOS,Windows Update在后台打补丁时,CPU单核飙到100%完全正常,尤其机械硬盘的实例,卡顿会明显加剧,Linux的 yum 或 apt 执行 updatedb 数据库索引更新时,也会短时跑满。

云厂商的监控/安全组件,如果你开启了“云安全中心”“主机安全”这类收费服务,服务商会在实例内部安装agent,它做基线检查时会周期性占用CPU和内存,不少基础款ECS实例只有1核2G,agent一跑就是满载。
内存耗尽导致卡死,1G内存的服务器跑了个MySQL,swap分区也没有,系统会频繁做内存回收,然后CPU就持续飙升,注意,这种情况在 free -m 里能看到 available 接近0,就算你在top里只看到 java 占25%,实际瓶颈却是内存。
常见场景对比:不同配置和场景下CPU满载的处理策略
| 服务器类型 | 常见满载原因 | 处理优先级 |
|---|---|---|
| 1核2G低配实例 | 安全agent + 编译程序 | 关agent → 禁用无用服务 |
| 2核4G跑WordPress | PHP-FPM进程数太多 | 调低并发 → 开缓存 |
| 云服务器安装Windows | Update定时扫描 | 改手动更新 → 杀毒 |
| 闲置测试机 | 挖矿木马 | 直接重装系统 |
哪些情况你不用管,直接等就行
不是所有100%都需要处理,比如你刚在服务器上执行了 tar 解压一个大文件、yum update 正在跑、或者编译 nginx 源码,这些都是正常的瞬时高负载,跑完就会降下来,处理原则很简单:你主动干的活,CPU再高也没问题;你没动手它自己烧起来,那才需要紧张。
还有一类是云厂商做例行维护,比如底层宿主机升级,你在控制台会看到CPU曲线有规律地跳高,这不在你控制范围内,提工单问一句“什么原因导致的”就行,通常对方告知名叫“系统维护任务”就结束了。
怎么防止以后再被烧CPU,准确定位不浪费钱
网上很多便宜云服务器,比如某云的新用户活动机,一年几十块还带公网IP,这种机器本身就是肉鸡攻击的重点目标,因为买了基本没人管理,密码还往往是默认的简单组合。

买完机器第一件事,别急着装环境,先做三件事:
- 改掉默认端口,SSH从22改成22026,在安全组里同步放行。
- 装一个轻量防火墙,
ufw,默认只放行22、80、443,其他端口全拦,用ufw status能随时确认。 - 设置一个空跑脚本,每天凌晨写一条日志到文件,
echo "alive" >> /var/log/heartbeat.log,如果哪天没写,说明机器重启或卡死了,及时来看。
对于确实排查不出任何进程,但CPU依旧持续100%的情况,行业共识认为优先检查云厂商控制台的“救援连接”模式,很多真实案例里,用户通过VNC登录后才发现有个隐藏的docker容器在跑,宿主机上 docker ps 看不到,只有进入宿主机后用 nsenter 才能查出来。
如果你用的是按量付费的机器,建议先做个快照再排查,折腾坏了随时回滚,快照本身不贵,但能让你放心大胆地杀进程,云服务器cpu占用100%这个烦心事,九成以上是安全问题,不是硬件故障。
Q&A
问:云服务器cpu占用100%正常吗?
不正常,你自己没运行任何程序时CPU满载,基本可以确定有问题,除非你刚执行过压缩、编译或者数据库全量备份,那些场景下短时满载才属于正常。
问:重装系统能解决cpu占用100%吗?
可以,如果确认是木马或病毒,重装系统是最快的办法,比手动杀毒省时间,但重装前先把同VPC下的安全组规则收紧,不然装完系统几分钟内还会被重新入侵。
问:怎么判断是云厂商监控组件导致的cpu占用100%?
在top里看到进程名是 AliYunDun、aegis、sgagent 或 barad_agent,且CPU超过20%,基本就是,可以先用 systemctl stop 临时停掉观察,不影响了再决定是否长期关闭,云盾类组件大多允许卸载,不影响基础网络功能。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/811035.html


评论列表(2条)
读了这篇文章,我深有感触。作者对占用的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!
@cute593lover:这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于占用的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!