当Linux系统出现CPU持续飙高的情况时,可以按照以下步骤进行排查和解决:
top
或
htop
这些命令会显示实时的CPU使用情况,按CPU使用率排序。
top
后按Shift+P
按CPU排序%CPU
列找出占用高的进程ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
pidstat -u 1 5
对于识别出的高CPU进程,可以进一步分析:
# 查看进程详细信息
ps -fp <PID>
# 查看进程的线程情况
top -H -p <PID>
对于Java应用:
jstack <PID> > thread_dump.log
对于其他应用:
gdb -p <PID>
(gdb) thread apply all bt
(gdb) detach
(gdb) quit
# 安装perf(如未安装)
sudo apt install linux-tools-common linux-tools-generic
# 采样CPU使用情况
sudo perf top -p <PID>
# 记录性能数据
sudo perf record -p <PID> -g -- sleep 30
sudo perf report
uptime
cat /proc/loadavg
sensors
cat /proc/interrupts
cat /proc/softirqs
vmstat 1 5
sar -u
iostat
)free -m
),可能导致频繁swap对于长期监控,可以考虑: - Prometheus + Grafana - Nagios - Zabbix - Datadog
通过以上步骤,通常可以定位到CPU飙高的根本原因并采取相应措施。