使用sar命令深入分析Linux系统性能
在Linux系统运维和性能调优工作中,sar(System Activity Reporter) 是系统管理员不可或缺的工具之一。作为sysstat工具包的核心组件,sar能提供全面的系统性能历史数据,帮助您诊断CPU、内存、磁盘和网络等关键资源的瓶颈。与实时监控工具不同,sar的独特价值在于能回溯历史性能数据,让您能在故障发生后分析原因,这在生产环境问题排查中至关重要。
本文将深入解析sar命令的使用方法,涵盖数据收集机制、关键性能指标解读、实际应用案例及最佳实践,帮助您全面掌握这一强大的性能分析工具。
目录#
一、sar工作原理与数据收集机制#
sar通过周期性采集系统快照工作,由两个核心组件构成:
- 数据收集器(
sadc):
定时收集系统指标并存入二进制文件(默认位置/var/log/sa/saXX,XX为日期) - 报告生成器(
sar):
解析二进制数据生成人类可读报告
📅 数据保存规则:
- 每10分钟收集一次(可通过cron调整)
- 每日数据存储在
/var/log/sa/saDD(DD=日期) - 每月数据汇总在
/var/log/sa/sarXX
二、安装与配置sysstat#
安装步骤#
# Ubuntu/Debian
sudo apt update && sudo apt install sysstat
# RHEL/CentOS
sudo yum install sysstat
sudo systemctl enable --now sysstat关键配置(/etc/sysstat/sysstat.conf)#
HISTORY=30 # 保留30天数据
COMPRESSAFTER=15 # 15天后压缩历史数据
SADC_OPTIONS="-S DISK" # 监控所有磁盘三、核心功能与使用场景#
3.1 CPU性能分析#
# 查看当天CPU使用率(每10分钟一个点)
sar -u
# 查看指定时间段的CPU数据(10:00到12:00)
sar -u -s 10:00:00 -e 12:00:00
# 显示每个CPU核心的详细数据
sar -P ALL 1 5 # 每秒1次,共5次关键指标解读:
- %user:用户态CPU时间
- %system:内核态CPU时间
- %iowait:等待I/O的CPU时间(>15%需警惕)
- %steal:虚拟机被hypervisor占用的时间
3.2 内存与交换空间监控#
# 查看内存使用趋势
sar -r
# 交换空间监控(重点关注si/so)
sar -W 1 10关键指标:
- %memused:已用物理内存百分比
- kbbuffers/kbcached:缓存/缓冲内存量
- pswpin/s:每秒换入页面数(>0可能有内存瓶颈)
- pswpout/s:每秒换出页面数
3.3 磁盘I/O分析#
# 查看所有磁盘的I/O统计
sar -d -p 1 5
# 指定磁盘分析(例:sda)
sar -d -p | grep sda核心指标:
- await:I/O请求平均等待时间(ms)
- %util:设备利用率(>70%是瓶颈信号)
- tps:每秒传输请求数
3.4 网络流量监控#
# 查看网络接口统计
sar -n DEV 1 5
# 分析TCP连接状态
sar -n TCP,ETCP 1 3重点关注:
- rxkB/s/txkB/s:接收/发送带宽
- retrans/s:TCP重传率(>1%表示网络不稳定)
- active/s:新建TCP连接数
3.5 查看历史数据#
# 查看昨天10点到11点的CPU数据
sar -u -f /var/log/sa/sa$(date -d yesterday +%d) -s 10:00:00 -e 11:00:00
# 对比不同日期的同时间段数据
sar -u -f /var/log/sa/sa07 # 本月7号数据
sar -u -f /var/log/sa/sa14 # 本月14号数据四、综合实战案例#
案例:诊断系统卡顿问题#
# 1. 检查CPU iowait
sar -u | grep -i iowait
# 输出:11:30:01 AM %iowait 25.23%
# 2. 定位高I/O磁盘
sar -d -p | awk '$11 > 70 {print}'
# 输出:sdb 98.20 # sdb利用率98%
# 3. 分析进程级I/O(需配合iotop)
sudo iotop -oP
# 4. 确认内存压力
sar -r | grep -v kbcached
# 输出:kbmemused 90.2% # 内存使用率90%结论:磁盘sdb的I/O瓶颈(%util=98%)导致CPU iowait飙升,结合内存高使用率,需优化数据库的磁盘访问模式或扩展内存。
五、最佳实践与技巧#
策略优化#
-
数据采集调整:
编辑/etc/cron.d/sysstat,修改为:*/2 * * * * root command -v sadc > /dev/null && sadc -F -S ALL 120 10 -每2分钟收集一次,保留更精细数据
-
自动化报告:
使用sa2生成每日摘要:0 7 * * 1-6 /usr/lib/sysstat/sa2 -A
排查技巧#
- 黄金命令组合:
sar -A # 查看所有统计(适用于深度分析) sar -q # 检查系统负载队列 - 时间范围过滤:
使用-s和-e精确分析故障时段 - 数据导出:
sar -u --human | tee cpu_report.txt生成可读报告
六、结论#
sar以其全栈监控能力和历史数据分析特性,成为Linux性能分析领域的"瑞士军刀"。通过本文您已掌握:
✅ 关键资源的监控指标解读
✅ 精确时间范围的数据回溯技巧
✅ 从磁盘I/O到网络流量的全链路分析方法
将sar纳入您的日常监控体系,配合如Prometheus等实时工具,即可构建完整的性能观测解决方案,大幅提升系统稳定性与排障效率。
七、参考文献#
- sysstat官方文档
- Linux Man Pages:
man sar、man sadc - 《Linux性能优化实践》 作者:Brendan Gregg
- SAR Command Guide by Red Hat
最后更新:2023年10月
原创内容,转载请注明出处