当Linux系统CPU使用率过高时,通常可以从以下几个方面进行分析和排查:
# 实时查看CPU使用情况
top
htop
# 按CPU使用率排序显示进程
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
# 使用atop工具(需安装)
atop
strace -p <PID>
或 perf top -p <PID>
strace -c -p <PID>
cat /proc/interrupts
vmstat 1
或 pidstat -w 1
iostat -x 1
free -h
dmesg
nethogs
或 iftop
# 使用perf分析CPU使用情况
perf top
perf record -a -g -- sleep 10
perf report
# 使用sysdig监控系统调用
sysdig -c topprocs_cpu
# 使用bpftrace进行深度分析
bpftrace -e 'profile:hz:99 { @[ustack] = count(); }'
/var/log/messages
, /var/log/syslog
sar -u 1 3
如果是Java应用:
jstack <PID> > thread_dump.txt
jstat -gcutil <PID> 1000
如果是数据库: - 检查慢查询 - 优化索引 - 分析执行计划
如果是Web服务器: - 检查访问日志 - 分析请求模式 - 考虑限流或缓存
通过以上方法,通常可以定位到CPU使用率高的具体原因并采取相应措施。