一、CPU性能监控与故障诊断
1.1 基础信息采集
CPU作为系统核心组件,其健康状态直接影响整体性能。通过以下命令可获取完整架构信息:
lscpu | grep -E "Model name|CPU(s)|Core(s)|Thread(s)|MHz"cat /proc/cpuinfo | grep "model name" | uniq
关键指标解析:
- 物理核心数:决定并行计算能力上限
- 逻辑线程数:反映超线程技术启用状态
- 基准频率/睿频:影响单线程性能表现
- 缓存层级:L1/L2/L3缓存容量影响数据访问效率
1.2 动态负载分析
实时监控工具使用场景:
top:基础进程监控(按1展开显示所有核心)htop:增强版交互式监控(需安装)mpstat -P ALL 1:精确到每个核心的利用率统计
典型故障模式:
-
持续单核满载:
- 可能原因:死循环进程、中断处理异常
- 诊断步骤:
top -b -n 1 | grep -A 10 "%Cpu"pidstat -t -p <PID> 1 # 跟踪问题进程的线程级CPU占用
-
整体负载高但CPU闲置:
- 可能原因:I/O等待、锁竞争
- 诊断方法:结合
vmstat 1观察wa(I/O等待)值
1.3 高级诊断技巧
- 性能事件计数器:
perf stat -e cache-misses,branch-misses,instructions sleep 10
- 微架构级分析(需root权限):
perf record -a -g sleep 30perf report # 生成火焰图分析热点函数
二、内存系统深度排查
2.1 内存使用全景
关键监控命令:
free -h # 显示可用/已用内存(含缓存)cat /proc/meminfo | grep -E "MemTotal|MemFree|Buffers|Cached"vmstat 1 # 观察内存分配与交换活动
2.2 进程级内存分析
内存占用排序:
ps aux --sort=-%mem | head -20 # 显示前20个内存大户smem -s pss -k | less # 更精确的PSS内存统计
2.3 内存泄漏检测
专业检测工具链:
- Valgrind(开发环境):
valgrind --leak-check=full ./your_program
- 生产环境检测:
pmap -x <PID> | awk '/[0-9a-f]/{print $1,$2}' | sort -k2 -nr | head
- 动态追踪(eBPF):
bpftrace -e 'tracepoint
mm_page_alloc { @[comm] = count(); }'
三、存储系统健康管理
3.1 磁盘空间监控
智能监控方案:
df -hT # 基础文件系统使用情况lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL # 块设备拓扑du -sh /* | sort -h # 目录级占用分析
3.2 I/O性能诊断
实时监控工具:
iostat -x 1 # 设备级I/O统计iotop -oP # 进程级I/O监控(需root)
3.3 磁盘健康评估
SMART检测流程:
- 安装检测工具:
apt install smartmontools # Debian系yum install smartmontools # RHEL系
- 执行全面检测:
smartctl -a /dev/sda | grep -E "Reallocated_Sector|Current_Pending|UDMA_CRC"
- 自动化监控方案:
smartd -d sat -a /dev/sda -m root@localhost -s (S/../.././02|L/../../6/03)
四、网络故障定位与优化
4.1 基础状态检查
快速诊断命令集:
ip -s link # 接口统计信息ethtool <interface> # 链路层参数ss -tulnp # 连接状态分析
4.2 高级诊断工具
- 网络包分析:
tcpdump -i eth0 -nn 'port 80 and host 192.168.1.1'
- 连接跟踪:
conntrack -L -p tcp --dport 80
- 带宽测试:
iperf3 -c server_ip -t 30 # 需服务端配合
4.3 典型故障处理
-
高延迟问题:
- 诊断路径:
ping→traceroute→mtr - 深度分析:
bcc-tools/tcplife # 观察TCP连接生命周期
- 诊断路径:
-
丢包问题:
- 链路层检测:
ethtool -S eth0 | grep -i error
- 网络层检测:
netstat -s | grep -i drop
- 链路层检测:
五、自动化监控方案
5.1 基础监控脚本
#!/bin/bash# 系统健康检查脚本echo "===== CPU ======"mpstat -P ALL 1 3 | grep -A 5 "%idle"echo -e "\n===== Memory ====="free -hecho -e "\n===== Disk ====="iostat -dx 1 3 | grep -v "^$"echo -e "\n===== Network ====="ss -s
5.2 告警阈值设置
推荐监控指标阈值:
| 指标 | 警告阈值 | 危险阈值 |
|———————-|—————|—————|
| CPU idle | <30% | <10% |
| Memory free | <15% | <5% |
| Disk iowait | >20% | >40% |
| Network errors | >0/min | >5/min |
5.3 可视化方案
推荐技术栈:
- 数据采集:Prometheus + Node Exporter
- 可视化:Grafana
- 告警:Alertmanager
六、最佳实践总结
- 建立基线:在系统稳定运行时收集各项指标基准值
- 分层诊断:遵循”自上而下”(应用→系统→硬件)的排查顺序
- 历史对比:保留至少30天的性能数据用于趋势分析
- 工具链建设:构建包含监控、告警、分析的完整工具链
- 文档沉淀:将典型故障处理过程整理为知识库
通过系统化的监控体系和科学的诊断方法,运维人员可以提前发现潜在问题,将故障解决在萌芽状态。建议结合具体业务场景,定制化开发监控脚本和告警策略,持续提升系统可靠性。