当前位置:首页>Linux>Linux 服务器 CPU 100%?一套完整排查流程(运维必备)

Linux 服务器 CPU 100%?一套完整排查流程(运维必备)

  • 2026-09-06 22:44:09
Linux 服务器 CPU 100%?一套完整排查流程(运维必备)

在生产环境中,服务器 CPU 突然飙高 是非常常见的问题。

常见现象:

  • 网站访问变慢

  • 接口响应超时

  • 服务器 Load 很高

  • CPU 使用率 90%+

很多人第一反应就是 重启服务器,但这其实是最不专业的做法。

今天分享一套 完整的 Linux CPU 高排查流程,基本可以解决 90% 的问题。


一、先确认 CPU 是否真的高

登录服务器后,先查看 CPU 使用情况:

top

重点关注:

%Cpu(s)

例如:

us 80%sy 10%id 5%

含义:

字段
含义
us
用户进程占用
sy
系统内核占用
id
空闲CPU
wa
IO等待

如果:

id < 10%

说明 CPU 基本被占满。


二、找到占用 CPU 的进程

使用 top 按 CPU 排序:

top-o %CPU

或者:

ps-eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

输出示例:

PID   CPU   COMMAND1234  95%   java2345  60%   python

找到占用 CPU 的进程。


三、查看进程的线程占用

很多时候 CPU 高是 某个线程导致的。

查看线程:

top-Hp 进程ID

例如:

top-Hp1234

输出:

TID    CPU%5678   95%

说明线程 5678 占用 CPU。


四、定位代码问题(Java / Python)

如果是 Java 程序,可以继续定位。

把线程 ID 转成 16 进制:

printf "%x\n"5678

例如:

162e

然后查看 Java 线程:

jstack 进程ID | grep 162e

就能看到具体代码。


五、查看系统 Load

CPU 高时要同时看 Load Average。

查看:

uptime

输出示例:

load average: 8.23, 7.10, 6.50

如果服务器 CPU 是:

4核

建议 Load:

≤ 4

如果:

Load > CPU 核数

说明系统过载。


六、排查 IO 等待

很多时候 CPU 高其实是 IO 等待。

查看:

iostat -x1

重点看:

%utilawait

如果磁盘:

%util 100%

说明 磁盘瓶颈。


七、排查网络问题

如果是高并发服务器,还需要查看网络。

查看连接数:

netstat -an | wc-l

查看 TCP 状态:

netstat -antp

如果出现大量:

TIME_WAITCLOSE_WAIT

可能是:

  • 程序连接泄漏

  • 网络攻击

  • 爬虫流量


八、检查是否被攻击

CPU 突然飙高,还有一种常见原因:

被扫描 / 攻击。

查看访问日志:

tail -n100 access.log

查看 IP 访问频率:

awk'{print $1}' access.log | sort | uniq -c | sort-nr | head

如果某个 IP 请求量巨大:

10000+

可能是爬虫或攻击。


九、常见 CPU 高原因

生产环境最常见的几种情况:

1 程序死循环

例如:

while(true)

2 SQL 慢查询

数据库 CPU 100%。

3 爬虫流量

大量机器人访问。

4 日志写入过多

磁盘 IO 打满。

5 定时任务

某个 cron 任务异常。


十、应急处理方法

如果 CPU 已经严重影响业务,可以临时处理:

降低进程优先级:

renice +10 进程ID

限制 CPU:

cpulimit -p PID -l50

或者直接杀掉:

kill-9 PID

(生产环境慎用)


总结

Linux CPU 高排查流程可以总结为:

1 查看 CPU↓2 找到进程↓3 找到线程↓4 定位代码↓5 排查 IO↓6 排查网络↓7 查看日志

掌握这套流程,基本可以解决 大多数服务器 CPU 问题。

最新文章

随机文章