Debian cpustat故障排查指南
cpustat是Debian系统中sysstat工具包的核心组件之一,主要用于实时监控CPU使用情况(如用户态/内核态占比、空闲率、I/O等待时间等),帮助定位CPU性能瓶颈或异常。以下是针对cpustat本身及CPU问题的完整排查流程:
cpustat需通过sysstat包安装,Debian系统默认未启用sysstat服务,需先执行以下命令:
sudo apt update && sudo apt install sysstat
安装完成后,启动sysstat服务并设置开机自启:
sudo systemctl start sysstat && sudo systemctl enable sysstat
cpustat,默认每秒刷新一次,显示所有CPU核心的汇总数据(包括%usr、%sys、%idle等指标)。-i参数设置刷新间隔(秒),如每2秒刷新一次:cpustat -i 2
cpustat > cpu_usage.log
-c参数指定核心编号(如核心0),或-p ALL查看所有核心:cpustat -c 0 # 监控核心0
cpustat -p ALL 5 # 每5秒刷新一次所有核心数据
-e参数显示每个核心的上下文切换(vcx/icx)、中断(in/s/outs)等详细指标:cpustat -e
*/5 * * * * cpustat > cpu_usage_$(date +\%Y\%m\%d\%H\%M\%S).txt
top命令查看具体进程(按P键按CPU排序),定位到高负载进程后,使用pwdx <PID>查找进程路径,进一步分析是否为恶意程序或业务代码问题。vmstat(查看内存/交换分区使用)、iostat(查看磁盘I/O)等工具,判断是否为内存不足或磁盘瓶颈。pidstat -w -p <PID>查看具体进程的上下文切换情况,优化进程并发设计(如减少锁粒度、调整线程池大小)。lspci -vvv查看设备中断号,或更新驱动程序解决。iostat -x 1查看磁盘的await(平均I/O等待时间)、%util(磁盘利用率),若%util接近100%,需升级磁盘(如更换为NVMe SSD)或优化I/O密集型进程(如批量写入改为异步)。cpustat仅提供CPU层面的数据,需结合以下工具进行全面排查:
sudo perf record -F 99 -ag -- sleep 10; perf script | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl > cpu.svg),直观展示占用CPU的热点函数或代码路径。sudo运行:sudo cpustat
-i后跟数字,-c后跟核心编号),可通过cpustat -h查看帮助。sudo systemctl status sysstat # 检查服务状态
sudo systemctl start sysstat # 启动服务
-i 0.1等极短间隔,可能导致数据波动过大,建议设置为1秒及以上。sar可记录历史CPU数据(默认保存在/var/log/sa/saXX文件中),通过sar -u 1 5查看过去某段时间的CPU使用情况,或使用sar -u -f /var/log/sa/sa10查看指定日期的数据。/var/log),避免磁盘空间不足导致I/O瓶颈。journalctl -xe或dmesg查看内核日志,及时发现硬件或驱动异常(如磁盘坏道、网卡故障)。nice/renice)、线程数或缓存大小,减少CPU占用。