Linux sar 详解及使用

sar(System Activity Report)是 Linux 性能分析中非常强大的命令之一,主要用于收集、显示和记录系统运行状态的数据。适用于日常性能监控、排查系统瓶颈、分析历史趋势、计划容量升级等多种场景

🔧 一、sar 工作原理概览

sar 命令是 sysstat 套件中的一部分,它从 /proc 文件系统中采集数据,并以报告形式输出。

  • 实时监控:如 sar -u 1 5 表示每秒采样一次,连续5次
  • 历史分析:如 sar -u -f /var/log/sysstat/saXX 分析历史数据文件(默认保存7-28天)

默认数据文件路径: /var/log/sysstat/saDD(DD 为日期,如 sa24 表示 24 日)

📚 二、sar 命令详细语法

sar [选项] [间隔 秒数] [次数]

🛠️ 三、常见使用场景

✅ 1. 查看 CPU 使用情况(用户/系统/等待/空闲)

sar -u 1 5

含义:每隔 1 秒查看一次 CPU 使用情况,共查看 5 次。

输出字段说明

  • %user:用户空间使用 CPU 百分比(高时检查应用 CPU 消耗)
  • %system:内核空间使用百分比(高时检查内核或驱动)
  • %iowait:等待 I/O 百分比(高时检查磁盘/网络瓶颈)
  • %idle:CPU 空闲百分比(低可能表示负载高)

📌 常用于:定位高 CPU 使用率、判断是否为 I/O 等待导致性能瓶颈。

✅ 2:历史 CPU 使用回溯(分析某时段)

sar -u -f /var/log/sysstat/sa23 -s 09:00:00 -e 11:30:00
  • 从当天凌晨 sa23 文件中,提取 09:00–11:30 的 CPU 报告。
  • 可用于回顾某次报警时段的负载情况,配合监控告警时间点对齐。

✅ 3:内存与缓存使用分析

sar -r 60 3
  • 每 60 秒采样一次,连续 3 次。
  • 输出字段:
    • kbmemfree / kbmemused:空闲/已用内存
    • %memused:内存使用率
    • kbbuffers / kbcached:缓冲区 & 缓存大小
  • 诊断点
    • %memused 持续上升 → 检查内存泄漏或缓存占满
    • kbcached 很低 → 应用可能频繁读写磁盘
      📌 常用于:判断系统是否内存不足、缓存是否释放、是否触发了 Swap。

✅ 4. 查看交换空间(swap)使用情况

sar -S 30 4
  • 每 30 秒测一次,共 4 次;检查系统是否进入 swap。
  • 关键字段:
  • kbswpfree:可用 swap 空间
  • kbswpused:已用 swap 空间
  • %swpused:swap 使用率
  • pswpin/s / pswpout/s:每秒 swap in/out 页数
  • 诊断点:高 pswpin/s → 物理内存不足,可能引起 I/O 瓶颈

📌 常用于:分析是否存在内存换页,是否 swap 频繁影响性能。

✅ 5. 磁盘 I/O 统计

sar -d -p 5 6
  • -p 保持输出顺序固定,每 5 秒采集,总 6 次。
  • 输出示例字段:
    • DEV: 设备名
    • tps: 每秒传输请求数
    • rd_sec/s / wr_sec/s: 每秒读写扇区数
  • 诊断点
    • 某设备 tps/wr_sec/s/rd_sec/s 突增 → 定位到具体磁盘
    • 配合 iostat -x 可进一步查看响应时间

📌 常用于:定位磁盘压力过大,例如 iowait 高时,用于判断是否磁盘成为瓶颈。

✅ 6. 网络流量监控

sar -n DEV 10 3
  • 每 10 秒采样,3 次;查看所有网卡。
  • 字段说明(针对每个设备如 eth0, ens33):
    • rxpck/s / txpck/s:包速率
    • rxkB/s / txkB/s:吞吐速率(KB/s)
  • 可加 -n EDEV 监控错误包、丢包率:
    sar -n EDEV 10 3
    

📌 常用于:查看网卡是否存在大流量,判断丢包、拥塞可能性。

✅ 7. 查看负载情况(Load Average)

sar -q 300 2
  • 每 300 秒(5 分钟)采集一次,2 次;与 load average 同周期。
  • 字段说明:
    • runq-sz:运行队列长度(大于 CPU 核心数说明排队)
    • ldavg-1/5/15:1/5/15 分钟负载均值
    • blocked:等待 I/O 的进程数

📌 常用于:系统负载是否过高,是否长时间积压任务。

✅ 8. 查看文件系统活动(比如读写文件频率)

sar -v 1 3

字段包括 dentunusd, file-nr, inode-nr 等,用于系统文件句柄、inode 使用监控。

✅ 9. 查看历史某天数据(如 24 号 CPU 使用情况)

sar -u -f /var/log/sysstat/sa24

或查看某个小时段:

sar -u -s 14:00:00 -e 15:00:00 -f /var/log/sysstat/sa24

📌 常用于:分析服务器异常发生的历史时间点,比如前天 3 点系统负载异常等。

✅ 10:多核 CPU 分别监控

sar -P ALL 1 4
  • 查看各个核的 %user/%system/%idle,每秒采集 4 次。
  • 用于排查负载是否均衡,或某个核被频繁“绑死”。

🧠 四、进阶组合应用示例

1️⃣ 定位系统卡顿时段 CPU 高的原因

sar -u -s 03:00:00 -e 05:00:00 -f /var/log/sysstat/sa24

2️⃣ 查看当天网卡带宽是否超出预期

sar -n DEV -f /var/log/sysstat/sa$(date +%d)

3️⃣ 结合 cron 每小时记录一次 CPU 数据到文件

/etc/cron.d/sysstat 中调整如下:

*/5 * * * * root /usr/lib64/sa/sa1 1 1

🧩 五、与其他工具组合建议

工具用途
iostat磁盘 I/O 分析
vmstat内存、进程、CPU 等简报
iotop哪些进程在高 I/O
atop综合实时监控
perf, bpftrace内核级诊断

✅ 六、总结:sar 使用时的常见实践

选项含义
-uCPU 使用(user、system、iowait、idle 等)
-r内存使用(free、used、buffer、cache)
-S交换分区使用(swap)
-d块设备 I/O(tps、rd_sec/s、wr_sec/s)
-bI/O 传输速率
-n DEV网络接口吞吐(rx/tx 包及字节)
-q系统负载及进程队列长度
-w任务切换及上下文切换次数
-v内核表(inode、file、tty、sock 等)
-f <file>指定历史文件,如 /var/log/sysstat/sa22
-s/-e起始时间/结束时间(HH:MM:SS)
-P ALL各个 CPU 核心分别报告

✅七、综合排查流程举例

  1. 快速定位
    • sar -u 1 3 观察 CPU,sar -q 1 3 观察队列。
  2. 锁定子系统
    • CPU 高 → sar -P ALL
    • I/O 高 → sar -d & sar -b
    • 内存高 → sar -r & sar -S
    • 网络高 → sar -n DEV & sar -n EDEV
  3. 回溯历史
    • 指定 -f saXX 并用 -s/-e 筛选时段。
  4. 深入分析
    • 配合 iostatvmstattophtopiotop 等工具,精准定位进程或操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值