Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux sar 系統活動報告工具全解析:CPU、內存、磁碟、網絡、佇列多維度性能診斷實戰

編輯:Linux 教學

sar (System Activity Reporter) 是 sysstat 套件核心工具,能從內核統計計數器採集歷史/實時性能數據,支援 CPU、內存、磁碟 I/O、網絡、運行佇列、交換活動、系統調用等 10+ 維度。本文系統梳理 sar 常用選項、關鍵指標含義、實戰分析案例、數據持久化與圖形化展示,構建 Linux 性能診斷標準化流程。

安裝與數據採集機制


yum install -y sysstat  # 或 apt install sysstat

# 關鍵:啟用系統級數據收集守護進程 (sadc)
systemctl enable --now sysstat
# 或編輯 /etc/default/sysstat (Debian) /etc/sysconfig/sysstat (RHEL)
# ENABLED="true"
# SA1_OPTIONS="-S DISK"  # 包含磁碟統計
# SA2_OPTIONS="-A"       # 每日報告包含所有統計

# 手動觸發採集 (cron 每 10 分鐘)
/usr/lib64/sa/sa1 1 1  # 採集 1 秒 1 次,寫入 /var/log/sa/saDD
/usr/lib64/sa/sa2 -A   # 生成每日報告 /var/log/sa/sarDD

核心選項速查表

選項報告內容關鍵指標適用場景
-uCPU 利用率%user, %system, %iowait, %idle, %stealCPU 瓶頸、虛擬化竊佔
-r內存使用kbmemfree, kbmemused, %memused, kbbuffers, kbcached, kbcommit, %commit內存壓力、提交額度
-R內存統計 (頁面)frmpg/s, bufpg/s, campg/s, pgpgin/s, pgpgout/s, pgmajflt/s頁面回收、缺頁中斷
-B分頁/交換pgpgin/s, pgpgout/s, fault/s, majflt/s, pgfree/s, pgscank/s, pgscand/s, pgsteal/s換頁活動、OOM 風險
-d磁碟 I/O (塊設備)tps, rd_sec/s, wr_sec/s, avgrq-sz, avgqu-sz, await, svctm, %util磁碟瓶頸、延遲分析
-n DEV網絡介面流量rxpck/s, txpck/s, rxkB/s, txkB/s, rxcmp/s, txcmp/s, rxmcst/s帶寬利用率、封包率
-n EDEV網絡錯誤rxerr/s, txerr/s, coll/s, rxdrop/s, txdrop/s, txcarr/s, rxfram/s網卡/驅動故障排查
-q運行佇列/負載runq-sz, plist-sz, ldavg-1/5/15, blocked負載高、進程阻塞分析
-v內核表狀態dentunus, file-nr, inode-nr, pty-nr文件句柄/Inode 耗盡
-w上下文切換/進程創建cswch/s, proc/s高併發、線程風暴
-A所有報告匯總以上所有全景快照、歸檔

實戰分析案例

案例 1:CPU 異常高 - 區分用戶態/系統態/IO 等待


# 每 10 秒採集 6 次
sar -u 10 6

# 輸出解讀
09:00:01     CPU     %user   %nice   %system %iowait  %steal   %idle
09:00:11     all      12.5     0.0      3.2     65.1     0.0    19.2
09:00:21     all      15.3     0.0      4.1     60.2     0.0    20.4
Average:     all      14.1     0.0      3.8     62.3     0.0    19.8

# 診斷:%iowait 平均 62% → 明顯磁碟 I/O 瓶頸
# 接著用 sar -d 定位具體磁碟

案例 2:磁碟 I/O 延遲分析 - 關注 await 与 svctm


sar -d -p 10 6  # -p 顯示設備名稱

# 關鍵指標
# tps: 每秒傳輸請求數 (IOPS)
# rd_sec/s, wr_sec/s: 讀寫扇區數/秒
# avgrq-sz: 平均請求大小 (扇區)
# avgqu-sz: 平均佇列長度
# await: 平均等待時間 (ms) = 佇列時間 + 服務時間
# svctm: 平均服務時間 (ms) - 設備本身處理時間
# %util: 設備帶寬利用率 (接近 100% 表示飽和)

# 判斷邏輯:
# await >> svctm → 請求在佇列等待久 → 併發過高或佇列調度問題
# svctm 高 → 設備本身慢 (HDD vs SSD、RAID 降級、固件問題)
# %util 100% + await 高 → 設備飽和,需擴容或優化應用訪問模式

案例 3:內存壓力與分頁活動


sar -r 10 6
# 關注 %memused, kbcommit, %commit
# %commit > 100% 表示內存過度提交,風險極高

sar -B 10 6
# 關注 pgscank/s (kswapd 掃描), pgscand/s (直接回收掃描), pgsteal/s (回收頁面)
# pgscand/s 持續 > 0 → 進程直接回收內存 → 明顯內存壓力
# majflt/s (主要缺頁) 高 → 應用啟動/大文件讀取、內存不足換頁

案例 4:網絡流量與錯誤


sar -n DEV 10 6
# rxkB/s, txkB/s 對比網卡帶寬 (如 1Gbps = 125MB/s)
# rxdrop/s, txdrop/s > 0 → 環形緩衝區太小 (ethtool -G 設置 rx/tx ring)
# rxerr/s, txerr/s > 0 → 物理線路/光模塊/驅動問題

sar -n EDEV 10 6  # 詳細錯誤計數器

案例 5:歷史數據回溯 (利用 sadc 歸檔)


# 查看昨天 (saDD 格式) CPU 報告
sar -u -f /var/log/sa/sa$(date -d yesterday +%d)

# 查看指定時間段
sar -u -f /var/log/sa/sa15 -s 14:00:00 -e 15:00:00

# 導出 CSV 供 Excel/圖表分析
sar -u -f /var/log/sa/sa15 | sed 's/  */,/g' > cpu_20231015.csv

進階:ksar 圖形化分析 / Grafana 監控大盤

  • ksar (Java):java -jar ksar.jar -input /var/log/sa/sa15 -outputDir ./graphs 自動生成 CPU/磁碟/網絡/內存趨勢圖。
  • Prometheus + node_exporter + Grafana:node_exporter 內建 collector.sar 可直接採集 sar 兼容指標,構建實時監控大盤。
  • sar2csv / sadf:sadf -d /var/log/sa/sa15 -- -u 輸出 CSV/JSON/XML,便於自動化分析管道。

常見坑點

坑點後果規避
未啟用 sysstat 服務無歷史數據,只能即時採集systemctl enable --now sysstat
採集間隔過長 (預設 10 分鐘)錯過短時尖峰修改 cron 為 1 分鐘:*/1 * * * * root /usr/lib64/sa/sa1 1 1
磁碟統計未啟用 (SA1_OPTIONS)sar -d 無數據SA1_OPTIONS="-S DISK"
虛擬機 %steal 高誤判為 CPU 不足錯誤擴容關注 %steal,聯繫雲廠商或調整實例規格
%util 100% 但 SSD 實際未滿誤判瓶頸NVMe/SSD 併發高時 %util 易達 100%,結合 await/avgrq-sz 綜合判斷

總結

sar 是 Linux 性能診斷的「聽診器」,核心價值在於 歷史數據歸檔 (sadc/sa1/sa2)、多維度標準化指標、零侵入式採集。掌握 -u/-r/-B/-d/-n/-q/-w 核心選項組合、await/svctm/%util 磁碟判斷三角、pgscand/majflt 內存壓力信號、%steal 虛擬化干擾識別,配合 ksar/sadf 圖形化/導出,即可構建從即時排障到趨勢分析的完整性能診斷體系。

Copyright © Windows教程網 All Rights Reserved