VPS CPU 占用 100% 怎么排查?,如何解决

VPS CPU 占用 100% 通常不是硬件故障,而是软件层面出了问题,按照进程、日志、资源三个维度排查,多数情况能在半小时内找到罪魁祸首。

为什么 VPS 的 CPU 会突然爆满

CPU 满载的背后,往往是以下几种情况之一:

Linux系统CPU持续彪高,如何排查?
加载中
Linux系统CPU持续彪高,如何排查?
  • 应用代码出现死循环或内存泄漏,导致进程持续占用 CPU 资源,且无法正常释放。
  • 服务器遭遇恶意软件感染,最常见的是挖矿程序,它利用你的 CPU 算力为他人牟利,同时保持隐蔽。
  • 突发流量涌入,比如收到 DDoS 攻击,或者正常业务瞬时并发过高,超过实例的承载能力。
  • 系统配置不合理,SWAP 设置不当,大量内存溢出导致频繁换页,拖累 CPU 处理 I/O 等待。
  • 硬件资源瓶颈,当 VPS 本身配置较低(如单核 1GB),即使常规负载也可能导致 CPU 长期接近 100%。

业内专家指出,在大量实际案例中,用户态进程(us)占用 CPU 是主要因素,占比超过系统态(sy)和等待 I/O(wa)的总和,排查重点应放在应用程序层面。

VPS CPU 占用 100% 怎么排查:三步定位法

第一步:用 top 命令揪出 CPU 消耗大户

登录你的 VPS,第一时间执行 top -c 命令,这个命令会按 CPU 占用率从高到低列出所有进程,并且显示完整命令行,在 top 界面中,重点关注以下几个数值:参考2

  • %Cpu(s) 行:us(用户空间占用)、sy(内核空间占用)、wa(等待 I/O 完成)、id(空闲),us 很高,问题出在你的应用代码;sy 很高,可能是内核行为或驱动问题;wa 很高,CPU 其实在等磁盘,瓶颈在 I/O。
  • RES 列:进程占用的物理内存,如果内存不足,系统会频繁使用 SWAP,导致 I/O 高,进而拖累 CPU。
  • TIME+ 列:进程累计 CPU 时间,如果一个进程的 TIME+ 持续增长,很可能是它一直在消耗 CPU。

P 键可以按 %CPU 排序,按 M 键按 %MEM 排序,找到那个 CPU 占用异常高的进程,记住它的 PID,如果觉得 top 输出不够直观,可以安装 htop,它支持彩色显示和鼠标操作,同样能快速定位高消耗进程。参考2

第二步:深入分析可疑进程

VPS CPU 占用 100% 怎么排查?,如何解决

拿到 PID 后,用以下命令进一步调查:

  • ps -auxf | grep -A 5 [PID] 查看进程的完整命令行和父进程,判断是否源自正常服务。
  • lsof -p [PID] 列出该进程打开的所有文件,包括网络连接,如果发现它打开了大量陌生 IP 的连接,或者读写某些可疑文件,基本可以确定是恶意程序。
  • strace -p [PID] 跟踪进程的系统调用,这个命令会输出大量信息,适合用于分析程序卡在哪个环节。注意:strace 本身会消耗性能,在高负载情况下慎用,短时间运行即可。
  • 如果进程是 Web 服务(如 Nginx、Apache、PHP-FPM),立即查看对应的错误日志:tail -f /var/log/nginx/access.logerror.log,寻找异常请求模式,比如大量 404 或 500 状态码,可能意味着扫描攻击或程序错误。

第三步:检查系统日志和全局状态

  • 运行 dmesg | tail -20 查看内核日志,寻找 out of memorysoft lockupCPU stuck 等关键词,这些说明系统层面已经出现严重问题。
  • 执行 vmstat 1 5 查看系统整体状态,重点看 r(运行队列,如果持续大于 CPU 核心数,说明 CPU 过载)、b(阻塞进程,如果很大,说明 I/O 瓶颈),以及 siso(swap in/out,如果非零,说明内存不足)。
  • 执行 iostat -x 1 3 查看磁盘 I/O,%util 接近 100% 说明磁盘是瓶颈,CPU 的 wa 会相应升高。
  • 使用 netstat -anpss -anp 查看网络连接数,TIME_WAITESTABLISHED 数量异常,可能是受到网络攻击,或者应用连接池释放不及时。

VPS CPU 100% 解决方案:按场景对症下药

Web 服务器 CPU 飙高

如果通过 top 发现 PHP-FPM 或 Apache 的进程占满 CPU,通常是因为:

  • 请求量过大,FPM 的 pm.max_children 设置过高,导致进程数失控,适当降低该值,并启用 pm.status_path 监控。
  • 某个接口存在慢查询或死循环,WordPress 的插件轮询,或者未经优化的 SQL 查询,开启慢查询日志,定位具体脚本。
  • VPS CPU 占用 100% 怎么排查?,如何解决

  • 遭受 CC 攻击,大量并发请求导致服务器资源耗尽,使用云服务商提供的 DDoS 防护,或在 Nginx 层面限制单 IP 连接数。

行业共识认为,对于 Web 服务器,合理的进程数应为 CPU 核心数的两到四倍,同时结合内存大小调整,避免过多进程导致内存不足,Nginx 的 worker_processes 设为 auto 即可自动匹配核心数,再配合 worker_connections 控制并发。参考2

数据库服务器 CPU 100%

数据库(如 MySQL、PostgreSQL)本身是 CPU 密集型应用,但异常高占用通常源于:

  • 慢查询泛滥,大量复杂的 SQL 没有走索引,导致全表扫描,启用 slow_query_log,分析慢查询日志,使用 EXPLAIN 优化语句。
  • 连接数过高,数据库频繁创建和销毁线程,调整 max_connectionsthread_cache_size
  • 内存不足导致大量排序和临时表使用磁盘,增加 I/O 并拖累 CPU,增加 innodb_buffer_pool_sizeshared_buffers,减少磁盘交互。

明显是挖矿病毒

挖矿病毒的特征非常明显:CPU 占用长时间稳定在 80% 以上,进程名随机,但通常伪装成系统命令(如 kworkercrond 等),且网络连接指向已知矿池 IP,处理步骤如下:

  1. 使用 kill -9 [PID] 杀掉进程,但病毒通常会立即重启,所以先查看 crontab -l,清理定时任务。
  2. 检查 /etc/cron.d/ 和用户目录下的 .bashrc.ssh/authorized_keys,删除恶意脚本和公钥。
  3. 使用 chattr +i 锁定关键文件,防止写入。
  4. 加强安全组,只开放必要端口,使用非 root 用户运行服务。

低配 VPS 长期满载

不少用户为了节省成本,选择便宜的 VPS 用于个人项目或小型网站,当实际访问量超过预期时,CPU 很容易跑到 100%,这种情况下:

  • 评估是否真的需要升级配置。统计表明,相当一部分低配 VPS 的 CPU 100% 问题可以通过优化代码解决,比如启用缓存、压缩静态资源、使用 CDN。
  • 如果业务确实需要,考虑升级到更高配置的实例,或者更换为价格稍高的区域节点,如国内云服务商的北京、上海节点,网络延迟更低,处理能力更强。
  • VPS CPU 占用 100% 怎么排查?,如何解决

  • 使用云厂商提供的弹性伸缩功能,在流量高峰时自动扩容实例。

如何预防 VPS CPU 满载

  • 安装监控工具:部署 netdata 或 prometheus + node_exporter,设置 CPU 告警阈值,当 CPU 超过 80% 时通知你。
  • 限制进程资源:使用 cgroupsulimit 限制单个进程的 CPU 和内存使用量,避免一个程序拖垮整个系统。
  • 定期更新与扫描:保持系统和软件包更新,修复已知漏洞,定期使用安全工具扫描,是否存在恶意进程。
  • 合理规划实例规格:根据业务实际需求选择 VPS 配置,不要盲目追求低价,一个常见的对比是:1核1G 的 VPS 适合单用户博客,1核2G 则可支撑日均数千 PV

VPS CPU 占用 100% 常见问题解答

Q1: VPS CPU 100% 会导致服务器自动关机吗?
A: 不一定,大多数云服务商不会因为 CPU 100% 而自动关闭实例,但部分厂商(如简米云、酷番云)的轻量应用服务器可能有资源限制策略,当持续满载一段时间后,可能会触发限速或强制重启,具体规则请参考各平台官方文档。

Q2: 重启 VPS 能彻底解决 CPU 100% 吗?
A: 重启可以暂时释放所有进程,使 CPU 恢复正常,但如果是恶意软件或配置缺陷,重启后短时间内又会重新满载,必须排查并根除原因,否则只是治标不治本,据统计,重启后短时间内复现 CPU 100% 的比例相当高。

Q3: 如何区分是正常业务高峰还是被攻击?
A: 观察进程名和访问日志,正常业务高峰时,CPU 占用高的进程通常是你的 Web 服务或数据库,且访问日志以正常 URL 为主,如果出现大量陌生进程,且日志中充斥着 404 状态码或异常 User-Agent,多数情况下是遭受了扫描或攻击,结合 netstat 查看连接数,如果连接数远超正常值且来自分散 IP,基本可以判断为攻击。

排查 VPS CPU 100% 的核心是快速定位异常进程,分析其行为,然后采取针对性措施,养成监控和定期检查的习惯,是避免问题反复出现的根本。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/530345.html

(0)
VPS被黑洞了,多久能恢复呢?,怎么解决?
上一篇 2026年7月30日 07:35
分布式一致性解决方案到底是什么,有哪些?
下一篇 2026年7月30日 07:42

相关推荐

  • 如何构建云原生物联网平台?云原生物联网平台搭建教程

    构建云原生物联网平台的核心在于利用容器化、微服务和DevOps技术,实现设备连接、数据处理与应用部署的解耦与自动化,从而显著降低运维成本并提升系统弹性,物联网(IoT)正在经历从“连接”向“智能”的深刻转型,传统的物联网架构往往面临设备异构性强、数据孤岛严重、扩展性差等痛点,云原生技术以其弹性伸缩、快速迭代和可……

    2026年5月26日
    11300
  • AIoT概念后市如何?AIoT概念股有哪些龙头股

    AIoT产业正处于从“连接爆发”向“智能赋能”跨越的关键转折期,后市表现将呈现结构性分化与总量增长并存的态势,核心逻辑在于,单纯的设备联网已无法满足市场需求,大模型技术的注入让边缘侧设备具备了真正的“思考”能力,这将重塑硬件价值链,推动行业从价格竞争转向价值竞争,未来三到五年,具备“端侧算力+场景数据+生态闭环……

    2026年3月17日
    12600
  • 华纳云美国服务器好用吗?美国服务器推荐高性价比

    华纳云美国服务器凭借双向CN2 GIA线路、独享G口带宽及20G免费DDoS防御,在追求低延迟与高稳定性的跨境业务场景中,是兼顾性价比与性能的高优选择,华纳云美国服务器核心优势解析在跨境建站、游戏服部署或跨境电商业务中,网络质量往往决定了用户体验的上限,华纳云美国服务器之所以能在众多竞品中脱颖而出,并非依靠单一……

    2026年6月26日
    1610
  • 如何用Excel计算权重,常用的权重计算公式有哪些?

    Excel 权重计算指南在 Excel 中,权重计算通常分为两种核心场景:一种是根据已知权重计算加权得分(如成绩计算),另一种是根据现有数据计算各项的权重占比(如市场份额计算),计算加权平均值 (Weighted Average)这是最常见的场景,你有一份考试成绩,不同题型的分值占比(权重)不同,你需要计算最终……

    程序编程 2026年7月12日
    18800
  • AIoT套件是什么?2026年最新AIoT开发套件推荐

    AIoT套件是打通物理世界与数字世界的核心枢纽,通过集成传感器、边缘计算模块和云平台接口,它让普通设备具备智能感知、自主决策和远程互联能力,是构建智能家居、智慧工厂及城市物联网的基础设施,很多人对AIoT套件的理解还停留在“把设备连上网”的初级阶段,这其实是一种误解,真正的AIoT(人工智能物联网)套件,核心在……

    2026年6月14日
    3200
  • AI人工智能机器人有哪些,未来发展前景如何?

    当前,智能技术的演进已跨越虚拟边界,深入物理实体,正在重塑生产力与服务模式的核心逻辑,ai人工智能机器人作为这一变革的核心载体,已不再局限于简单的机械重复动作,而是通过深度感知、自主决策与精准执行的深度融合,成为推动产业升级与社会智能化转型的关键引擎,其核心价值在于实现了“数字大脑”与“物理躯体”的完美统一,不……

    2026年2月28日
    11900
  • Riven Cloud日本VPS年付$39.9靠谱吗?日本VPS推荐

    Riven Cloud日本大阪软银VPS年付$39.9是2026年高性价比入门首选,适合预算有限且需低延迟访问日本市场的个人开发者,在云服务器市场内卷加剧的当下,寻找一款既稳定又便宜的VPS并非易事,Riven Cloud推出的这款日本大阪软银节点产品,以极具侵略性的定价策略切入市场,对于许多需要搭建个人博客……

    2026年6月19日
    2400
  • justhostVPS测评,15元/月方案实测对比,justhostVPS测评,justhostVPS

    Justhost VPS 15元/月方案实测结论:该方案虽具备入门级价格优势,但受限于硬件配置老旧及网络线路单一,仅适合对延迟不敏感的个人博客或静态展示站,对于追求高并发或国内访问速度的业务场景并不推荐,Justhost VPS基础架构与15元方案解析Justhost 作为知名的老牌虚拟主机服务商,其VPS产品……

    2026年5月14日
    4300
  • 哪里找ASP.NET完整源码?| 免费下载真正开源项目

    ASP.NET真正源码网站ASP.NET 框架真正的官方源代码托管在 微软官方的 GitHub 仓库 上,这是获取最原始、最权威、最及时更新的 ASP.NET 核心框架(包括 ASP.NET Core)源代码的唯一官方途径,访问地址是:GitHub 官方仓库: https://github.com/dotnet……

    2026年2月8日
    14000
  • aspnet获取域名

    在ASP.NET中获取当前请求的域名可通过访问HttpContext.Current.Request.Url.Host属性实现(适用于.NET Framework),或在ASP.NET Core中使用HttpContext.Request.Host.Host属性,这是最基础且最常用的方法,核心方法详解ASP.N……

    2026年2月5日
    12030

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注