服务器高 CPU 排查方法

服务器高 CPU 排查方法

适用于 Linux / 宝塔,不依赖具体进程名。


1. 定位进程(必做)

top # 实时看,按 P 按 CPU 排序

或

ps aux --sort=-%cpu | head -11

记录:进程名、PID、CPU%、运行用户、启动命令。


2. 看系统整体情况

uptime # 负载 load average

nproc # CPU 核心数(load 要除以核心数看是否过载)

free -h # 内存是否吃紧

vmstat 1 5 # si/so 高说明内存不够在 swap,CPU 也会虚高


3. 确认进程是否「正常」

完整命令行

ps -p <PID> -o pid,user,cmd

真实可执行文件路径

ls -l /proc/<PID>/exe

是否注册为系统服务

systemctl status <服务名>

可疑信号:

  • 路径不在 /usr/bin、/usr/sbin 等常规目录
  • 没有对应 systemd 服务却在跑
  • CPU 长期 100%+ 且无法解释
  • 进程名模仿常见软件(fail2ban、sysupdate 等)

4. 按进程类型深入

类型 常用命令
任意进程 strace -p <PID> -c(看系统调用,需 root)
Java jstack <PID>、top -H -p <PID>
MySQL SHOW FULL PROCESSLIST;、慢查询日志
Nginx access/error 日志、upstream 响应
PHP 网站日志、php-fpm 慢日志
Redis redis-cli slowlog get 20

5. 临时止血

优先优雅停止

systemctl stop <服务名>

kill -15 <PID>

无效再强制

kill -9 <PID>

确认

top

ps -p <PID>


6. 防止复活

crontab -l

cat /etc/crontab

ls /etc/cron.d/

systemctl list-units --type=service --state=running

grep -r "<关键词>" /etc/cron* /etc/systemd/ 2>/dev/null

kill 后观察 5~10 分钟,看进程是否再次出现。


7. 通用排查流程

CPU 高

→ top/ps 找 PID

→ 看 load、内存(uptime / free / vmstat)

→ 认进程、看路径、查是否系统服务

→ 业务进程:查日志 / 慢查询 / 线程栈

→ 未知/可疑进程:kill → 查 cron/systemd → 隔离文件

→ 确认 CPU 恢复且不再复发


8. 常用命令速查

top # 实时进程

ps aux --sort=-%cpu | head # CPU 排行

pgrep -af <名字> # 按名查进程(比 grep 干净)

lsof -p <PID> # 进程打开的文件/连接

netstat -tnp | grep <PID> # 进程网络连接(或 ss -tnp)

journalctl -u <服务> -n 100 # 服务日志


9. 预防

  • 宝塔/云监控设 CPU 告警
  • 定期看 ps aux --sort=-%cpu | head
  • 只开必要端口,改默认密码
  • 业务服务单独看日志和慢查询

口诀:top 找 PID → 看路径和服务 → 业务查日志,陌生就 kill 并查 cron。

相关推荐
古法老登瞎折腾6 小时前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
琥珀.7 小时前
mysql中json数组转列表查询
linux·运维·服务器
dawnsky.liu7 小时前
在 RHEL 中使用 goose 实现远程主机管理
linux·运维·ai
Linux运维技术栈9 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
云边云科技_云网融合10 小时前
连锁门店组网怎么做?SD-WAN 多分支组网的架构选型、部署与成本结构
服务器·数据库·php
云上先途110 小时前
企业 AI 服务部署周期多久,会不会影响原有业务运转?
大数据·运维·人工智能
网络小江10 小时前
组网第35课:静态路由——下一跳、出接口、默认路由、浮动静态与黑洞路由
服务器·网络·默认路由·黑洞路由·浮动静态路由
执伞人ONLY11 小时前
AI知识库自动化知识加工没做对,人工整理永远追不上知识产生
运维·人工智能·自动化
slongzhang_11 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
叼烟扛炮11 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节