首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux 服务器 CPU 占用过高排查指南

Linux 服务器 CPU 占用过高排查指南

作者头像
用户5741377
发布2026-06-22 21:35:28
发布2026-06-22 21:35:28
30
举报

当你的 Linux 服务器 CPU 飙高时,通常意味着有某些进程异常占用资源。 这篇文章会教你 如何快速定位 CPU 高占用的原因,以及如何用多种常见工具进行检查。

同时,也会解释 CPU 使用率(CPU Utilization)CPU 负载(Load Average) 的区别。别看它们名字像,但含义完全不同:

  • CPU 使用率(utilization):CPU 当前在忙多少(百分比)。
  • CPU 负载(load):有多少任务正在执行或排队等 CPU。

理解这两个指标,有助于你判断服务器是否真的“卡”。

一、先更新系统(可选)

登录服务器后,可以先把系统更新到最新状态:

Ubuntu / Debian

代码语言:javascript
复制
apt-get update -y

CentOS / RHEL

代码语言:javascript
复制
dnf update -y
# 或
yum update -y

二、查看 CPU 占用高的进程

Linux 有多种工具可以用来排查谁在吃 CPU。下面介绍常用方式。

1. 使用 top 命令排查(最常用)

top 是监控 CPU、内存、进程状态最常用的工具。

执行:

代码语言:javascript
复制
top

你会看到一个实时刷新界面,在 top 界面中可以快速操作↓↓↓

P

按 CPU 使用率排序

M

按内存使用率排序

i

隐藏空闲进程

S

按进程运行时长排序

U

查看某个用户的进程

2. 使用 sar 监控历史与实时 CPU

sar 可以按时间间隔监控 CPU 使用率:

代码语言:javascript
复制
sar -u 2

每 2 秒输出一次:

停止使用 Ctrl + C。

sar 的使用方式较多,如果需要高级监控,可以参考原文链接。

3. 使用 iostat 查看 CPU 和 IO

代码语言:javascript
复制
iostat

可显示 CPU、磁盘 IO 等信息:

仅看 CPU:

代码语言:javascript
复制
iostat -c

输出类似:

4. 使用 vmstat 查看 CPU、内存、等待队列

最常用:

代码语言:javascript
复制
vmstat

输出示例:

实时监控:

代码语言:javascript
复制
vmstat 2

停止使用 Ctrl + C。

5. 使用 uptime 快速看系统负载

代码语言:javascript
复制
uptime

可查看:

  • 当前系统时间
  • 运行时长
  • 当前登录用户
  • 1 分钟、5 分钟、15 分钟负载

示例输出:

6. 使用 ps 找出最高 CPU 的进程

代码语言:javascript
复制
ps

默认输出:

按 CPU 排序显示前 10 个进程

代码语言:javascript
复制
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10

ps 不显示系统负载,但非常适合找出:

  • 谁在占 CPU?
  • 是否有进程跑满 CPU?
  • 是否有僵尸进程?
  • 是否有疯狂反复启动的进程?

三、如何解决 CPU 占用高的问题?

找到原因后,可以使用以下方法处理。

1. 杀死或重启异常进程

最常见情况:

  • 某个进程跑满 CPU
  • 程序卡死在不可中断状态(D 状态)
  • 某个任务出现死循环

解决办法:

代码语言:javascript
复制
kill -9 <PID>

或重启服务。

2. 更新系统与驱动

某些旧软件或驱动会导致 CPU 异常升高。 建议定期执行:

代码语言:javascript
复制
apt upgrade
或
yum update

3. 重新安装或降级应用

某些应用高 CPU 可能是软件 bug。 可以尝试:

  • 重装
  • 降版本
  • 切换到稳定版本

4. 实在没办法,重启系统

如果你确认进程都正常但系统仍旧高 CPU,重启可能让资源恢复:

代码语言:javascript
复制
reboot

但注意: 生产服务器慎重重启,要看业务是否允许停机。

四、如果没有单个进程占用高 CPU?

如果 top、ps 都没有看到“罪魁祸首”,那可能是:

  • 机器本身性能不足
  • 多个程序共同拉高 CPU
  • IO、内存等待导致 load 很高
  • 某些服务过载(MySQL、Nginx 等)

解决建议:

✔ 分离高负载应用

例如把 MySQL、Nginx 单独拆到独立服务器。

✔ 升级服务器配置

如:

  • 提升 vCPU 数量
  • 增加内存
  • 切换更高性能实例规格

总结

排查 CPU 占用过高的顺序通常是:

  1. top 看当前谁最耗 CPU
  2. ps 按 CPU 排序确认具体进程
  3. sar/iostat/vmstat 判断是否是 IO、系统等待导致的假高
  4. uptime 看负载是否持续偏高
  5. 根据情况:杀进程、更新软件、重装、扩容或重启

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps和k8s全栈技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、查看 CPU 占用高的进程
  • 1. 使用 top 命令排查(最常用)
    • 按 P
    • 按 M
    • 按 i
    • 按 S
    • 按 U
  • 三、如何解决 CPU 占用高的问题?
    • 1. 杀死或重启异常进程
    • 2. 更新系统与驱动
    • 3. 重新安装或降级应用
    • 4. 实在没办法,重启系统
  • 四、如果没有单个进程占用高 CPU?
    • ✔ 分离高负载应用
    • ✔ 升级服务器配置
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档