掌握性能:使用 Sysstat 工具集的实用指南
性能监控是可靠的 Linux 系统管理的基础。如果没有强大的工具来跟踪资源利用率,识别瓶颈就变成了猜测,从而导致低效的故障排除和被动的扩展。sysstat 实用程序套件是用于收集、分析和报告所有关键资源领域系统活动的不可或缺的原生 Linux 工具包。
本指南提供了 sysstat 工具集的全面概述,主要关注系统活动报告器 (sar)。我们将介绍安装、历史日志记录的配置,以及实用的命令示例,以建立性能基线,并在实时和事后分析 CPU、内存、磁盘 I/O 和网络使用情况中的资源争用。
1. Sysstat 的安装和初始配置
sysstat 包通常在所有主流 Linux 发行版的标准存储库中可用。
1.1 安装命令
使用适用于您的系统的相应包管理器命令:
Debian/Ubuntu:
sudo apt update
sudo apt install sysstat
RHEL/CentOS/Fedora:
sudo yum install sysstat
# 或者对较新的系统使用 dnf
sudo dnf install sysstat
1.2 启用历史数据收集
为了使 sar 真正有用,它必须收集历史数据。默认情况下,安装通常会设置一个 cron 作业或 systemd 定时器,但验证至关重要。
在现代系统上,确保 sysstat 服务处于活动状态:
sudo systemctl enable --now sysstat
配置文件
数据收集的频率由配置文件控制,这些文件通常位于 /etc/default/sysstat (Debian/Ubuntu) 或 /etc/sysconfig/sysstat (RHEL/CentOS)。查找 ENABLED 或 HISTORY 设置。将 ENABLED="true" 设置为确保每日数据收集。
提示: 默认情况下,
sysstat数据文件存储在/var/log/sa/中,文件名类似于saXX(其中 XX 是当月的日期)。
2. 核心实用程序:系统活动报告器 (sar)
sar 是查看统计信息的首要接口。它可以显示实时数据或分析先前收集的历史数据。
2.1 实时监控的基本语法
基本语法旨在以指定的间隔和指定的计数报告特定的指标。
sar [options] [interval] [count]
示例: 每 3 秒报告 10 次一般的 CPU 统计信息:
sar -u 3 10
| 选项 | 描述 |
|---|---|
-u |
CPU 利用率(默认) |
-r |
内存和分页统计信息 |
-d |
块设备活动(磁盘 I/O) |
-n |
网络统计信息(例如,-n DEV 用于接口统计信息) |
-q |
运行队列和负载平均值 |
-W |
交换活动(分页) |
-A |
所有指标(适用于全面快照) |
3. 关键性能指标和实用的 sar 示例
理解 sar 的输出需要了解哪些指标表明性能健康或压力。
3.1 CPU 利用率 (sar -u)
CPU 利用率通常是查找瓶颈的首要位置。特定类别的利用率高低指示了工作负载的性质。
sar -u 5 3
| 指标 | 描述 | 瓶颈指示器 |
|---|---|---|
%user |
运行用户级进程所花费的 CPU 时间。 | 高表示应用程序/服务饱和。 |
%system |
运行内核/系统任务所花费的 CPU 时间。 | 高表示密集的系统调用或驱动程序问题。 |
%iowait |
CPU 空闲等待 I/O 操作(磁盘/网络)的时间。 | 高表示 I/O 瓶颈,而非 CPU 短缺。 |
%idle |
CPU 空闲等待的时间(可用)。 | 低(例如 < 5%)表明 CPU 饱和。 |
3.2 内存和分页 (sar -r 和 sar -W)
内存统计信息揭示了消耗情况以及系统是否正在进行交换或分页。
内存利用率 (sar -r):
sar -r 1 5
关注 kbavail(可用内存)。如果 kbmemfree 低,但 kbcached 和 kbbuffers 高,则内存正被内核的缓存机制有效利用。
交换活动 (sar -W):
sar -W 1 5
查看 pswpin/s(换入的页数)和 pswpout/s(换出的页数)。任何明显的非零值都表明系统正在积极交换,这表明内存压力(一个强烈的瓶颈)。
3.3 磁盘 I/O 活动 (sar -d)
监控磁盘活动对于数据库服务器或重度使用的存储系统至关重要。
sar -d 3 5
此输出需要识别特定的设备(例如 sda、vda)。关键指标包括:
tps: 每秒传输次数(高值表示 I/O 请求很高)。rd_sec/s和wr_sec/s: 每秒读取/写入的数据量。%util: 设备繁忙以响应请求的时间百分比。如果%util接近 100%,则存储系统已饱和。
3.4 网络统计信息 (sar -n)
sar 可以报告各种网络层上的活动。最常见的检查是接口活动 (DEV)。
sar -n DEV 5 1
此命令显示每个网络接口的 rxpk/s(每秒接收的数据包)和 txkB/s(每秒传输的千字节)等指标。使用此来识别正在经历重负载或潜在错误的接口。
4. 历史分析和基线建立
sysstat 的真正威力在于其分析扩展期间系统活动的能力,这对于建立性能基线(您的系统正常情况下是什么样)至关重要。
4.1 分析前几天的数据
要查看前一天收集的数据,请使用 -f 标志指定每日 saXX 文件的路径。
示例: 查看本月第 10 天的 CPU 统计信息:
sar -u -f /var/log/sa/sa10
要查看当天特定时间段的统计信息,请添加 -s(开始时间)和 -e(结束时间)标志(使用 24 小时制)。
# 查看第 10 天 14:00 到 16:30 的网络统计信息
sar -n DEV -f /var/log/sa/sa10 -s 14:00:00 -e 16:30:00
4.2 建立基线
- 收集数据: 在典型的高负载和低负载期间运行
sysstat1-2 周。 - 识别常态: 分析历史数据 (
sar -f) 以确定平均 CPU 利用率 (%user、%system)、峰值 I/O 延迟 (%util) 和平均内存使用情况。 - 定义阈值: 任何相对于您的基线的持续偏差(例如,
%iowait翻倍,或%idle连续 10 分钟低于 5%)表明存在需要调查的性能问题。
5. 支持的 Sysstat 工具
虽然 sar 是总括性工具,但 sysstat 套件包括专门的实用程序,它们提供专注的、高细节的报告。
5.1 iostat (输入/输出统计信息)
iostat 提供专门针对设备利用率的详细指标,在诊断存储瓶颈时特别有用。
# 每 2 秒报告 4 次磁盘统计信息,包括扩展统计信息 (x)
iostat -xd 2 4
关键 iostat 指标:
%util: 发出 I/O 请求到设备期间占用的 CPU 时间百分比(饱和度的关键指标)。await: 发送到设备的 I/O 请求的平均等待时间(以毫秒为单位)。高await表明存储响应缓慢。
5.2 mpstat (多处理器统计信息)
如果您怀疑存在 CPU 调度问题或跨核心的工作负载分布不均,mpstat 会提供每个处理器的使用情况统计信息,这是 sar -u 聚合的内容。
# 每 2 秒显示所有 CPU (A) 的使用情况
mpstat -P ALL 2 1
这对于识别使单个核心饱和而其他核心保持空闲的单线程应用程序,或诊断超线程效率非常有价值。
结论
sysstat 工具集是 Linux 性能调优和系统监控的基础要素。通过掌握 sar 实用程序,系统管理员就获得了超越简单瞬时监控的能力,能够对资源消耗进行深入的历史分析。定期使用 sar 监控 CPU、内存、I/O 和网络活动,并结合建立可靠的性能基线,将反应式故障排除转变为主动的系统管理,确保最佳的资源利用率和系统稳定性。