# 按CPU使用率排序显示进程
top -o %CPU
# 或者使用htop(需安装)
htop
# 显示完整命令和用户信息
ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -n 10
# 查看特定进程的线程情况
top -H -p [PID]
# 或者
ps -T -p [PID]
# 安装perf工具(如未安装)
sudo apt install linux-tools-common linux-tools-generic
# 采样CPU使用情况(采样30秒)
perf top
perf record -a -g -- sleep 30
perf report
解决方案:
- 终止异常进程:kill -9 [PID]
- 限制进程CPU使用:cpulimit -p [PID] -l [百分比]
- 使用nice调整优先级:renice -n 10 -p [PID]
可能原因: - 系统调用频繁 - 中断处理过多 - 内核模块问题
解决方案:
# 查看系统调用统计
dmesg
# 检查中断分布
cat /proc/interrupts
# 检查内核模块
lsmod
# 检查I/O等待
vmstat 1 5
iostat -x 1 5
解决方案: - 优化磁盘I/O - 检查是否有大量swap使用 - 升级硬件(如使用SSD)
# 查找僵尸进程
ps -A -ostat,ppid | grep -e '[zZ]'
解决方案:
- 终止父进程:kill -HUP [PPID]
- 强制终止:kill -9 [PPID]
strace -p [PID] -c
gdb -p [PID]
# 在gdb中执行
thread apply all bt
# 安装sysstat
sudo apt install sysstat
# 查看历史CPU使用
sar -u
# 调整进程调度策略
sysctl -w kernel.sched_child_runs_first=1
# 调整脏页比率
sysctl -w vm.dirty_ratio=10
sysctl -w vm.dirty_background_ratio=5
通过以上步骤,可以系统地诊断和解决Linux系统中CPU占用过高的问题。对于生产环境,建议在非高峰时段进行深入分析和调整。