当你的 Linux 服务器 CPU 飙高时,通常意味着有某些进程异常占用资源。 这篇文章会教你 如何快速定位 CPU 高占用的原因,以及如何用多种常见工具进行检查。
同时,也会解释 CPU 使用率(CPU Utilization) 与 CPU 负载(Load Average) 的区别。别看它们名字像,但含义完全不同:
理解这两个指标,有助于你判断服务器是否真的“卡”。
一、先更新系统(可选)
登录服务器后,可以先把系统更新到最新状态:
Ubuntu / Debian
apt-get update -yCentOS / RHEL
dnf update -y
# 或
yum update -yLinux 有多种工具可以用来排查谁在吃 CPU。下面介绍常用方式。
top 是监控 CPU、内存、进程状态最常用的工具。
执行:
top你会看到一个实时刷新界面,在 top 界面中可以快速操作↓↓↓
按 CPU 使用率排序

按内存使用率排序

隐藏空闲进程

按进程运行时长排序

查看某个用户的进程

2. 使用 sar 监控历史与实时 CPU
sar 可以按时间间隔监控 CPU 使用率:
sar -u 2每 2 秒输出一次:

停止使用 Ctrl + C。
sar 的使用方式较多,如果需要高级监控,可以参考原文链接。
3. 使用 iostat 查看 CPU 和 IO
iostat可显示 CPU、磁盘 IO 等信息:

仅看 CPU:
iostat -c输出类似:

4. 使用 vmstat 查看 CPU、内存、等待队列
最常用:
vmstat输出示例:

实时监控:
vmstat 2
停止使用 Ctrl + C。
5. 使用 uptime 快速看系统负载
uptime可查看:
示例输出:

6. 使用 ps 找出最高 CPU 的进程
ps默认输出:

按 CPU 排序显示前 10 个进程
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
ps 不显示系统负载,但非常适合找出:
找到原因后,可以使用以下方法处理。
最常见情况:
解决办法:
kill -9 <PID>或重启服务。
某些旧软件或驱动会导致 CPU 异常升高。 建议定期执行:
apt upgrade
或
yum update某些应用高 CPU 可能是软件 bug。 可以尝试:
如果你确认进程都正常但系统仍旧高 CPU,重启可能让资源恢复:
reboot但注意: 生产服务器慎重重启,要看业务是否允许停机。
如果 top、ps 都没有看到“罪魁祸首”,那可能是:
解决建议:
例如把 MySQL、Nginx 单独拆到独立服务器。
如:
排查 CPU 占用过高的顺序通常是:
END
本文分享自 DevOps和k8s全栈技术 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!