Linux 系统性能监控工具集sysstat之sar(三)完结

原创不易

上两篇介绍了sar监控CPU,内存,磁盘I/O活动情况

第一篇:Linux 系统性能监控工具集sysstat之sar(一)

第二篇:Linux 系统性能监控工具集sysstat之sar(二)

(4) 网络流量分析

查看网络接口流量和性能统计的命令,可监控各网卡的实时或历史数据传输、错误、丢包等情况。

sar -n DEV 1 5 # 每秒采样网络设备流量,采集5次,也可以接-f参数,查看历史数据。

输出字段:

IFACE:网络接口名称(如 eth0、wlan0、lo 等)。

rxpck/s:每秒接收的数据包数量。高值可能表示网络流量繁忙。

txpck/s:每秒发送的数据包数量

rxkB/s:每秒接收的数据量(KB/s)。结合带宽上限判断是否过载(如千兆网卡理论最大约 125,000 KB/s)。

txkB/s:每秒 发送的数据量(KB/s)。

rxcmp/s:每秒接收的 压缩数据包数量(通常为 0,除非使用压缩协议)。

txcmp/s:每秒发送的 压缩数据包数量。

rxmcst/s:每秒接收的 组播(Multicast)数据包数量。高值可能表示应用使用组播通信(如视频流)。

%ifutil:网络接口利用率百分比(需系统支持)。接近 100% 表示带宽已饱和,可能成为瓶颈。

应用场景:

带宽瓶颈:突发的 rxkB/s 激增可能是 DDoS 攻击或大量数据传输。

网卡性能:检查 %ifutil 是否接近网卡最大带宽(如千兆网卡上限为 125MB/s)。

带宽过载:若 rxkB/s + txkB/s 接近网卡理论带宽(如千兆网卡 125,000 KB/s),需优化网络或升级硬件。

数据包异常:

高 rxpck/s 但低 rxkB/s:可能受到小包攻击(如 DDoS)。

高 rxerr/s 或 txerr/s(需其他参数):表示网络不稳定或驱动问题。

虚拟化环境:对虚拟网卡(如 vethXXX、docker0)监控,排查容器或虚拟机的网络流量。


(5)进程队列与负载

用于查看系统 负载队列 和 进程调度统计 的命令,帮助分析 CPU 资源竞争、任务积压等情况。

sar -q 1 5 #查看系统负载队列,每秒采集1次,采集5次,也可以接-f参数查看历史数据。

输出字段:

runq-sz:当前运行队列中的任务数量(即等待 CPU 的进程数)。若持续高于 CPU 核心数(如 4 核 CPU 下 runq-sz >4),说明 CPU 资源不足。

plist-sz:系统中总任务数(进程 + 线程)。数值过大可能表示进程管理存在问题。

ldavg-1、ldavg-5、ldavg-15:系统 1 分钟、5 分钟、15 分钟的平均负载。

负载值 ≈ CPU 核心数:系统满负荷运行。

负载值 > CPU 核心数:任务开始积压。

blocked:当前因等待 I/O 操作(如磁盘、网络)而 阻塞的进程数量。

高值(如 blocked >10)可能表示 I/O 瓶颈。

应用场景:

CPU资源不足:runq-sz 持续高于 CPU 核心数,再结合ldavg-1接近或超过核心数,需检查 CPU 使用率(结合 sar -u)。

I/O 或资源阻塞:blocked 值较高,表示进程因等待 I/O 被阻塞,需结合磁盘(sar -d)或网络(sar -n DEV)指标进一步分析。

负载趋势分析:

ldavg-1 > ldavg-5 > ldavg-15:负载呈上升趋势,需排查是否有突发任务或资源泄漏。

ldavg-15 长期高企:系统可能长期过载,需优化或扩容。


(5) 查看系统 进程创建和上下文切换

sar -w -f /var/log/sysstat/sa24 #查看24号的进程创建与上下文切换统计信息

输出字段:

proc/s:每秒 新创建的进程数(包括进程和线程)。

高值(如 >10/s)可能表示频繁的短生命周期进程(如脚本任务、容器调度),可能导致 CPU 和内存资源浪费。

cswch/s:每秒 上下文切换次数(Context Switches Per Second)。

上下文切换是 CPU 从一个进程/线程切换到另一个的过程。高值(如 >10,000/s)可能因以下原因:

过多活跃进程:CPU 核心数不足,任务频繁切换。

锁竞争:线程因争夺锁资源而频繁挂起/唤醒。

I/O 等待:进程因等待 I/O 操作(如磁盘、网络)被切换出 CPU。

应用场景:

进程爆炸(Fork Bomb)

proc/s 突然激增:可能是恶意程序或配置错误导致进程无限创建,需立即检查进程列表(ps auxf)并终止异常进程。

CPU 调度压力

cswch/s 持续高位:结合 sar -q 的 runq-sz(运行队列长度)和 sar -u 的 CPU 空闲率(%idle);若 %idle 低且 cswch/s 高,说明 CPU 忙于切换任务而非处理实际工作,需优化进程/线程数量或调整调度策略。

锁或 I/O 瓶颈

cswch/s 高但 CPU 使用率低:可能是线程因锁或 I/O 等待频繁切换,需结合 pidstat -w 查看具体进程的主动/被动切换次数。


sar 命令总结

用途:Linux 系统性能分析工具,用于监控 CPU、内存、I/O、网络、中断等资源使用情况,支持 实时 和 历史数据 查看。


sar 是系统性能分析的瑞士军刀,通过多维度指标快速定位 CPU、I/O、内存等瓶颈。

原文链接:,转发请注明来源!