萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Windows 7 教學

Linux CPU Load 與 CPU Usage 核心差異解析:Nagios 告警實戰

Nagios 監控觸發「WARNING - load average: 9.73, 10.67, 10.49」,CPU 負載遠超核心數,但 `top` 顯示 CPU 使用率可能不高。理解 Load Average(負載) 與 CPU Utilization(使用率) 的本質區別,才能精準定位效能瓶頸。

三個數值的含義

load average: 9.73, 10.67, 10.49
  • 9.73:過去 1 分鐘 平均可執行程序數(正在執行 + 等待 CPU 的進程/執行緒)。
  • 10.67:過去 5 分鐘 平均可執行程序數。
  • 10.49:過去 15 分鐘 平均可執行程序數(最重要趨勢指標)。

判斷準則:負載值長期超過 CPU 邏輯核心數(如 8 核心負載 > 8)表示系統過載,排隊嚴重,響應延遲上升。

Load vs Usage 核心差異

維度CPU Load (負載)CPU Usage (使用率)
定義任務佇列長度:執行中 + 就緒等待的進程/執行緒數CPU 執行非閒置指令的時間佔比
受 I/O 等待影響是:磁碟/網路 I/O 阻塞進程計入負載否:I/O 等待不計入使用率(iowait 單獨統計)
反映內容系統擁擠程度、排隊壓力CPU 計算資源實際消耗
典型場景大量並發進程、磁碟狂讀寫、網路風暴、鎖競爭計算密集型任務(編碼、編譯、科學計算)

實戰排查高負載(以 Nagios 告警為例)

  1. 確認核心數: `nproc` 或 `lscpu`。假設 8 核心,負載 10+ 明顯過載。
  2. top 指令分析:
    • 按 1 展開每核心使用率。
    • 按 Shift+P 依 CPU 使用率排序。
    • 觀察 %us (user)、%sy (system)、%wa (iowait)、%hi/%si (中斷)。
  3. 高 %wa (iowait) → 磁碟/網路 I/O 瓶頸:
    • `iostat -x 1` 觀察裝置 %util、await、svctm。
    • `iotop` 定位高 I/O 進程。
    • 檢查:大量日誌寫入、資料庫 checkpoint、備份任務、Swap 活躍。
  4. 高 %sy (system) → 系統呼叫/鎖競爭:
    • `perf top` 或 `strace -p PID` 分析系統呼叫熱點。
    • 常見:大量 context switch、futex 鎖、頁面錯誤處理。
  5. 大量睡眠/等待進程 (D 狀態) → 負載高但 CPU 低:
    • `ps aux | awk '$8 ~ /D/ {print}'` 找出不可中斷睡眠進程。
    • 通常為 NFS 掛載掛掉、磁碟故障、驅動 Bug。

常用查看負載工具

  • uptime / w / cat /proc/loadavg:快速查看三值。
  • top / htop / glances:互動式完整視圖。
  • sar -q 1 10 (sysstat):歷史負載趨勢分析。

告警閾值建議

  • Warning: Load > 核心數 × 0.7 (持續 5 分鐘)
  • Critical: Load > 核心數 × 1.0 (持續 15 分鐘)
  • 結合 CPU 使用率、I/O 等待、記憶體使用率多維度告警,避免誤報。

Load 反映「有多少事要做」,Usage 反映「CPU 忙不忙」。高 Load 低 Usage = 大量 I/O 等待或鎖競爭,治標必治本:優化 I/O、減少鎖粒度、拆分服務、擴容。

copyright © 萬盛學電腦網 all rights reserved