
摘要: 云服务器 CVM 的 CPU 跑满,排查路径是:先用 top 找吃 CPU 的进程,判断是正常业务压力还是异常(恶意进程、流量攻击),再按原因对症处理——优化代码、加缓存、升配置或加防护。本文讲清 CPU 满的几类根因和每类的处理方法。
CPU 跑到 100% 不一定是坏事,也不一定是硬件不够。业务流量正常但代码有效率问题,和被挖矿程序跑满,处理方式完全不同。搞清楚「谁在吃 CPU、为什么吃」是解决问题的第一步,盲目升配可能什么都没解决。这篇给你一套从定位到处理的完整思路。
SSH 登录服务器,执行 top 命令,按 CPU 使用率排序(默认就是),看最靠前的进程:
top
# 按 P 键按 CPU 使用率排序
# 看 %CPU 列,谁占得高就是嫌疑对象再判断这个进程是谁:
认清是谁再行动,这一步不能省。
自己的应用进程吃 CPU,可能的原因:
定位:结合应用 APM(应用性能监控)或日志,找出哪个接口 CPU 消耗高——优化那段代码、给热点数据加缓存(如 Redis)、把计算密集的操作异步化,是这类问题的标准解法。
优化代码比直接升配更治本,但升配也是有效的应急手段——CVM 支持调整配置,业务高峰时可临时升核,再慢慢优化代码。
CPU 高但自己的代码没变,有时是外部流量异常:被 DDoS、CC 攻击,或有大量爬虫在高频请求你的接口。
判断:在 top 里看进程是 Web 服务(如 Nginx),再看访问日志里有没有某个 IP 高频请求、或短时间大量相同请求。
处理:
流量攻击导致的 CPU 满,升配解决不了根本——加防护才是正确方向。
陌生进程 CPU 持续接近 100%,路径在 /tmp、/dev/shm 或类似隐蔽目录——这是挖矿程序的典型特征。服务器被入侵后会被植入挖矿脚本,悄悄消耗你的算力。
处理步骤:
ps aux 找进程详情,记下 PID 和路径;kill -9 PID 先杀掉进程,观察 CPU 是否恢复;crontab -l)和 /etc/rc.local,看有没有自启动任务;处理完后立刻做安全加固:改强密码、限制 SSH 来源 IP、更新系统补丁。
排除了代码问题和异常流量,业务量就是增长导致 CPU 不够用——这时升配才是对的。
CVM 支持调整 CPU 和内存配置。升配建议:先观察 CPU 在正常业务负载下的均值,如果长期维持在 70%~80% 以上,说明余量确实不够,该升了。升一档观察,别一步跳太多。
如果业务有明显高峰低谷,可以配置弹性能力,高峰扩、低峰缩,比一直维持大配置更省成本。
现象 | 可能原因 | 处理方向 |
|---|---|---|
自己的应用进程高 | 代码效率/无缓存/高并发 | 优化代码、加缓存、升配 |
Web 服务进程高 | 流量攻击/爬虫 | 封 IP、限流、加防护 |
陌生进程高 | 挖矿/恶意程序 | 清除进程、安全加固 |
多进程都高 | 配置真的不够 | 升配置 |
CPU 问题处理完后,做好预防:
想了解云服务器 CVM 的配置、监控与弹性能力,可前往产品介绍页了解:https://cloud.tencent.com/product/cvm ;当前服务器有特惠,可在腾讯云双十一活动页查看:https://cloud.tencent.com/act/pro/double11-202611
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。