1. 安装与配置cpustat工具
cpustat是sysstat包的一部分,需先确保系统安装该包。对于CentOS 7及更早版本,使用sudo yum install sysstat;CentOS 8及以上版本使用sudo dnf install sysstat。部分高级功能(如容器环境监控)可能需要额外安装Go语言环境(sudo yum install -y golang),并通过go get github.com/uber-common/cpustat获取工具。
2. 实时监控CPU使用状态
通过cpustat实时查看系统CPU负载情况,识别潜在瓶颈。常用命令:
cpustat:默认每200毫秒采集一次,每5秒汇总输出(显示前10个进程的CPU使用率);cpustat -w 1 -I 10:每1秒刷新一次,持续10秒(更直观的实时效果);cpustat -p ALL:查看每个CPU核心的详细使用情况(区分核心负载)。重点关注的指标:
%usr:用户态进程占用CPU百分比(过高可能表示应用程序异常);%sys:内核态进程占用CPU百分比(过高可能表示内核操作频繁);%idle:CPU空闲时间百分比(过低说明负载高);%iowait:等待I/O操作的时间百分比(过高可能表示磁盘瓶颈)。3. 识别高负载进程与瓶颈
通过cpustat输出快速定位高CPU占用进程(按%usr或%sys排序),结合top/htop进一步分析进程详情(如进程ID、CPU占用趋势)。常见瓶颈类型:
4. 优化系统性能与稳定性
根据cpustat分析结果采取针对性措施:
nice(启动时设置优先级,范围-20~19,数值越小优先级越高)或renice(修改运行中进程优先级)降低非关键进程的CPU占用;cpulimit工具限制高CPU进程的资源使用(如sudo cpulimit -l 50 -p <PID>限制进程CPU使用率不超过50%);vm.swappiness(减少内存交换,提升性能,如sysctl vm.swappiness=10);taskset将进程固定到特定核心(如taskset -c 0,1 <PID>将进程绑定到0号和1号核心),减少上下文切换开销;echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor),提升CPU性能。5. 定期收集与分析历史数据
通过cron任务定期运行cpustat,收集长期CPU使用数据(如每5秒采集一次,保存到文件):
*/5 * * * * cpustat -c > /var/log/cpu_usage_$(date +\%Y\%m\%d\%H\%M\%S).txt
定期分析历史数据,识别CPU使用趋势(如高峰时段、持续高负载),提前规划资源扩容(如增加CPU核心、升级CPU型号)或调整业务部署(如将高负载服务迁移至低峰时段)。
6. 结合其他工具综合诊断
cpustat专注于CPU监控,需结合其他工具获取更全面的系统性能视图:
sar -u 5 5显示最近5次CPU使用情况);