常德市葬花

Linux sar命令详解之分析系统性能案例

2026-04-03 10:22:01 浏览次数:0
详细信息

sar(System Activity Reporter)是Linux系统中强大的性能监控工具,源自sysstat工具包。它能够收集、报告和保存系统活动信息,特别适合分析历史性能数据和实时监控。

一、基本安装与使用

安装

# Ubuntu/Debian
sudo apt-get install sysstat

# RHEL/CentOS
sudo yum install sysstat
sudo systemctl enable sysstat
sudo systemctl start sysstat

# 验证安装
sar -V

数据收集配置

sar依赖cron定期收集数据,配置在/etc/cron.d/sysstat

# 每10分钟收集一次(默认)
*/10 * * * * root /usr/lib64/sa/sa1 1 1

# 每天23:53生成每日报告
53 23 * * * root /usr/lib64/sa/sa2 -A

数据存储在/var/log/sa/saXX(二进制)和/var/log/sa/sarXX(文本)

二、关键监控维度与实战案例

案例1:CPU性能分析

# 实时监控CPU(2秒间隔,共5次)
sar -u 2 5

输出分析:

10:30:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
10:30:03 AM     all     45.20      0.00      8.70      12.30      0.00      33.80
# 查看单个CPU核心
sar -P ALL 1 3

# 历史数据分析(查看昨天数据)
sar -u -f /var/log/sa/sa15  # sa15代表15号的数据

案例2:内存使用分析

# 监控内存使用
sar -r 1 5

输出关键指标:

10:30:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
10:30:02 AM   1023440   3146892     75.45    234568   1456728   4023456     65.2
# 查看内存交换情况
sar -S 1 5
# 输出中 %swpused 持续增长需警惕

案例3:I/O性能分析

# 监控磁盘I/O
sar -d 1 5
# 或指定设备
sar -d -p sda 1 3

关键指标解析:

10:30:01 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
10:30:02 AM       sda     120.4     800.2    2400.5      26.6       3.2      26.7       8.3      100.2

案例4:网络性能分析

# 监控网络接口
sar -n DEV 1 5

重要指标:

10:30:01 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
10:30:02 AM      eth0    1204.5     893.2    1456.7     892.1      0.0       0.0      12.3
# 分析TCP连接状态
sar -n TCP,ETCP 1 5
# 关注主动/被动连接、重传率等

三、综合性能问题诊断案例

场景:Web服务器响应慢

# 1. 综合查看(昨天全天数据)
sar -A -f /var/log/sa/sa$(date -d yesterday +%d)

# 2. 定位时间点(假设10:00-11:00慢)
sar -u -s 10:00:00 -e 11:00:00

# 3. 同时查看CPU、内存、IO
sar -urS 1 10

# 4. 生成易读报告
sar -o /tmp/perf.data 1 60  # 收集1分钟数据
sadf -d /tmp/perf.data -- -u -r -d | awk '{print $1,$3,$4,$5,$6}'

诊断流程:

# 第一步:快速健康检查
sar -q 1 3  # 查看负载
# 输出:runq-sz > CPU核心数×2 表示进程排队

# 第二步:深入分析
pidstat 1 5  # 配合查看进程级指标

# 第三步:生成详细报告
sar -o /tmp/debug_sar 1 300  # 收集5分钟数据

# 第四步:图形化分析(需要额外工具)
# 使用ksar或导入Excel分析

四、常用命令组合与技巧

1. 时间段分析

# 分析今天10:00到12:00
sar -u -s 10:00:00 -e 12:00:00

# 分析特定日期
sar -u -f /var/log/sa/sa10 -s 14:00:00 -e 15:00:00

2. 关键指标监控脚本

#!/bin/bash
# monitor_sar.sh
INTERVAL=2
COUNT=30

echo "=== $(date) 系统性能快照 ==="
echo "1. CPU使用率:"
sar -u $INTERVAL $COUNT | tail -5

echo -e "\n2. 内存使用:"
sar -r $INTERVAL $COUNT | tail -5

echo -e "\n3. 磁盘I/O:"
sar -d $INTERVAL $COUNT | tail -5

echo -e "\n4. 系统负载:"
sar -q $INTERVAL $COUNT | tail -5

3. 保存与导出数据

# 二进制格式保存(可后续分析)
sar -o /tmp/monitor.dat 1 60

# 导出为CSV格式
sadf -d /tmp/monitor.dat -- -u > cpu_data.csv

# 生成精美报告
sar -A | grep -E "Average|^[0-9]" > /tmp/sar_report.txt

五、常见性能问题模式识别

现象 可能原因 检查命令
系统卡顿,%idle低 CPU瓶颈 sar -utop
磁盘灯常亮,响应慢 I/O瓶颈 sar -diostat -x
内存不足,swap使用高 内存瓶颈 sar -rSfree -m
网络延迟大 网络瓶颈 sar -n DEVnetstat -s
进程排队多 负载过高 sar -quptime

六、高级技巧

1. 与其他工具结合

# 结合mpstat查看CPU中断
sar -u 1 3 && mpstat -P ALL 1 3

# 结合vmstat
sar -r 1 3; echo "---"; vmstat 1 3

2. 自动化监控报警

# 检查CPU使用率并报警
CPU_USE=$(sar -u 1 1 | tail -1 | awk '{print 100-$NF}')
if (( $(echo "$CPU_USE > 90" | bc -l) )); then
    echo "警告: CPU使用率 ${CPU_USE}%" | mail -s "系统警报" admin@example.com
fi

3. 性能基准建立

# 记录正常时段基准
sar -u -f /var/log/sa/sa$(date +%d) -s "09:00:00" -e "10:00:00" > /tmp/baseline_cpu.txt
sar -r -f /var/log/sa/sa$(date +%d) -s "09:00:00" -e "10:00:00" > /tmp/baseline_mem.txt

总结

sar的强大之处在于:

历史数据分析:能追溯几天甚至几周前的性能状况 综合视角:一个命令查看CPU、内存、IO、网络 低开销:数据收集对系统影响极小 灵活性:支持实时监控和历史数据查询

建议将sar纳入日常监控体系,配合grafana等可视化工具,构建完整的性能监控平台。

相关推荐