原创不易
上两篇介绍了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、内存等瓶颈。