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 效能診斷指令:top、vmstat、iostat、sar、pidstat 實戰解析

編輯:Linux 教學

前言

遇到效能問題別急著加硬體。善用 Linux 內建工具,能在幾分鐘內定位 CPU、記憶體、I/O、網路四大資源瓶頸。本文精選五大指令,附輸出欄位解讀與實戰判斷邏輯。

1. top — 即時進程級資源佔用

已於前文詳細解析,此處補充批次模式擷取快照:


top -b -n 1 | head -30 > /tmp/top_snapshot.txt
# 定時任務收集歷史趨勢

2. vmstat — 虛擬記憶體/CPU/IO 系統級快照


vmstat 2 10   # 每 2 秒取樣,共 10 次
vmstat -t     # 顯示時間戳
vmstat -a     # 顯示 active/inactive 記憶體
vmstat -d     # 磁碟統計 (讀寫次數、扇區、延遲)
vmstat -p sda1 # 指定分區統計

關鍵欄位判讀

區塊欄位異常徵兆與判斷
Procsr可執行佇列長度。持續 > CPU 核心數 → CPU 飽和
b不可中斷睡眠 (通常等 IO)。持續 > 0 → IO 瓶頸
Memoryswpd已用 Swap。持續增長 → 記憶體不足
Memoryfree空閒記憶體。過低觸發 kswapd 頻繁回收
Memorybuff/cache頁面快取。過高佔用可用記憶體
Swapsi/soSwap in/out (KB/s)。持續非零 → 嚴重缺記憶體
IObi/bo塊裝置讀/寫 (塊/秒)。配合 iostat 細分
Systemin中斷數/秒。極高 → 硬體/驅動問題
Systemcs上下文切換/秒。極高 → 執行緒過多/鎖爭用
CPUus/sy/id/wa/stwa 高 → IO 等待;sy 高 → 系統呼叫/鎖;st 高 → 虛擬機偷取

3. iostat — 磁碟 I/O 深度分析


iostat -xmt 2     # -x 延伸統計 -m MB單位 -t 時間戳 每2秒
iostat -xmt 2 sda # 僅監控 sda

黃金指標 (關注 %util, await, svctm)

欄位含義健康閾值
%util裝置頻寬利用率 (有請求處理的時間比)< 70% (SSD 可更高)
await平均 I/O 等待時間 (ms) = 隊列等待 + 服務時間HDD < 20ms, SSD < 5ms
svctm平均服務時間 (ms)應遠小於 await
rrqm/s, wrqm/s合併請求率高合併 = 循序存取佳
r/s, w/s每秒讀/寫請求數配合應用負載分析
rMB/s, wMB/s吞吐量 (MB/s)接近裝置理論上限為瓶頸

4. sar — 系統活動報告器 (歷史趨勢神器)


# 安裝 sysstat 套件後,cron 自動收集 /var/log/sa/saDD
sar -u 1 10     # CPU 使用率
sar -r 1 10     # 記憶體使用率
sar -d 1 10     # 磁碟 I/O (需 -d 參數啟用收集)
sar -n DEV 1 10 # 網路介面統計
sar -q 1 10     # 執行佇列長度、負載平均
sar -B 1 10     # 分頁/換頁統計
sar -A          # 所有報表
# 歷史查詢
sar -u -f /var/log/sa/sa01  # 查詢 1 號的 CPU 記錄

5. pidstat — 進程級資源細分 (sysstat 套件)


pidstat -u 1 5      # CPU 使用率 (每進程 usr/sys/guest)
pidstat -r 1 5      # 記憶體 (minflt/majflt/VSZ/RSS)
pidstat -d 1 5      # I/O (kB_rd/kB_wr/kB_ccwr)
pidstat -t 1 5      # 執行緒級統計
pidstat -p PID 1 5  # 指定進程
pidstat -C java 1 5 # 指定指令名模式

綜合診斷流程圖 (文字版)


1. top / vmstat 1 5      → 確認 CPU/記憶體/IO 整體壓力
   ├─ CPU 高 (us/sy) → pidstat -u / perf top 定位熱點函式
   ├─ wa 高 / b > 0    → iostat -xmt 1 定位慢裝置 → pidstat -d 定位進程
   ├─ si/so 持續非零   → 記憶體不足 → pidstat -r 找大戶 → 擴容或優化
   └─ cs 高 / in 高    → 執行緒/中斷風暴 → pidstat -t / /proc/interrupts

2. sar -u -r -d -q -f /var/log/sa/saDD  → 回顧歷史趨勢,判斷偶發/週期性

3. 針對性調優:JVM 參數、資料庫索引、連線池、Nginx worker、磁碟調度器、NUMA 綁定

總結

五大指令各有分工:top 看進程、vmstat 看系統總覽、iostat 看磁碟細節、sar 看歷史趨勢、pidstat 看進程細分。組合使用,無硬體升級也能榨乾效能。

Copyright © Windows教程網 All Rights Reserved