Linux性能监控:工具与实践
Linux性能监控:工具与实践
性能监控的重要性
在生产环境中,及时发现和解决性能问题是运维工程师的核心职责。Linux提供了丰富的性能监控工具,帮助我们分析CPU、内存、磁盘和网络的使用情况。
CPU性能监控
top命令
top是最常用的实时性能监控工具:
# 启动top
top
# 按CPU使用率排序
top -o %CPU
# 只显示特定用户进程
top -u nginx
# 批处理模式(适合脚本)
top -bn1 | head -20
mpstat多核CPU分析
# 查看每个CPU核心使用率
mpstat -P ALL 1 5
# 查看CPU上下文切换
mpstat -I ALL 1 3
内存性能监控
free命令
# 查看内存使用情况
free -h
# 持续监控
watch -n 2 free -h
vmstat虚拟内存统计
# 查看内存、CPU、IO综合信息
vmstat 1 5
# 关键指标解读
# r: 运行队列长度 b: 阻塞进程数
# swpd: 虚拟内存使用 free: 空闲内存
# buff: 缓冲区 cache: 缓存
# si: 交换分区换入 so: 交换分区换出
磁盘性能监控
iostat磁盘IO统计
# 查看磁盘IO统计
iostat -x 1 5
# 只查看特定磁盘
iostat -x sda 1 3
# 关键指标
# %util: 磁盘利用率(>80%需关注)
# await: IO平均等待时间
# r/s, w/s: 读写次数
iotop磁盘IO排序
# 查看IO最高的进程
sudo iotop -o
# 批处理模式
sudo iotop -botq
网络性能监控
iftop网络流量
# 查看网络连接流量
sudo iftop -i eth0
# 按端口显示
sudo iftop -P
nethogs进程级流量
# 查看每个进程的网络使用
sudo nethogs eth0
# 按流量排序
sudo nethogs -t -c 5
综合性能分析
sar系统活动报告
# 查看CPU历史数据
sar -u 1 5
# 查看内存历史数据
sar -r 1 5
# 查看磁盘IO历史数据
sar -d 1 5
# 查看网络历史数据
sar -n DEV 1 5
dstat综合监控
# CPU、磁盘、网络、内存综合监控
dstat -cdnm
# 自定义输出
dstat -tcmndl --top-cpu --top-io --top-mem
性能分析方法论
USE方法
USE(Utilization, Saturation, Errors)方法:
# CPU利用率
mpstat 1 1 | awk '/Average/ && $NF>80 {print "CPU高负载:", $NF"%"}'
# 内存饱和度
vmstat 1 3 | awk '/^[0-9]/ {if($7>0) print "内存交换频繁:", $7"KB/s"}'
# 磁盘错误
dmesg | grep -i "error\|fail" | tail -5
RED方法
RED(Rate, Errors, Duration)方法适用于服务监控:
# 请求速率
curl -s http://localhost/metrics | grep "requests_total"
# 错误率
curl -s http://localhost/metrics | grep "errors_total"
# 请求延迟
curl -s http://localhost/metrics | grep "request_duration"
性能基线建立
# 记录系统基线
cat > /tmp/baseline.sh << 'EOF'
echo "=== 系统基线 $(date) ===" > /tmp/baseline.txt
echo "--- CPU ---" >> /tmp/baseline.txt
mpstat 1 1 | tail -1 >> /tmp/baseline.txt
echo "--- Memory ---" >> /tmp/baseline.txt
free -m | grep Mem >> /tmp/baseline.txt
echo "--- Disk ---" >> /tmp/baseline.txt
iostat -x 1 1 | tail -n +4 >> /tmp/baseline.txt
EOF
chmod +x /tmp/baseline.sh
总结
掌握性能监控工具是运维工程师的基本功。建议结合USE和RED方法论,建立系统的性能监控体系,及时发现并解决性能问题。