← 返回首页
🔧

Linux性能监控:工具与实践

📂 devops ⏱ 2 min 272 words

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方法论,建立系统的性能监控体系,及时发现并解决性能问题。