性能调优精要:Sysstat 工具集实用指南

借助 Sysstat 工具集的这本实用指南,释放 Linux 性能监控的全部潜力。了解如何安装和配置 Sysstat 以进行历史日志记录,并掌握功能强大的 `sar` 工具的使用。本文提供了用于分析 CPU 利用率、内存压力、磁盘 I/O 饱和度以及网络活动的可操作命令示例,使管理员能够建立性能基线,并快速诊断和解决生产环境中的系统瓶颈。

36 浏览量

掌握性能:使用 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)。查找 ENABLEDHISTORY 设置。将 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 -rsar -W)

内存统计信息揭示了消耗情况以及系统是否正在进行交换或分页。

内存利用率 (sar -r):

sar -r 1 5

关注 kbavail(可用内存)。如果 kbmemfree 低,但 kbcachedkbbuffers 高,则内存正被内核的缓存机制有效利用。

交换活动 (sar -W):

sar -W 1 5

查看 pswpin/s(换入的页数)和 pswpout/s(换出的页数)。任何明显的非零值都表明系统正在积极交换,这表明内存压力(一个强烈的瓶颈)。

3.3 磁盘 I/O 活动 (sar -d)

监控磁盘活动对于数据库服务器或重度使用的存储系统至关重要。

sar -d 3 5

此输出需要识别特定的设备(例如 sdavda)。关键指标包括:

  • tps: 每秒传输次数(高值表示 I/O 请求很高)。
  • rd_sec/swr_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 建立基线

  1. 收集数据: 在典型的高负载和低负载期间运行 sysstat 1-2 周。
  2. 识别常态: 分析历史数据 (sar -f) 以确定平均 CPU 利用率 (%user%system)、峰值 I/O 延迟 (%util) 和平均内存使用情况。
  3. 定义阈值: 任何相对于您的基线的持续偏差(例如,%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 和网络活动,并结合建立可靠的性能基线,将反应式故障排除转变为主动的系统管理,确保最佳的资源利用率和系统稳定性。