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 伺服器效能監控指令全攻略:iostat、vmstat、mpstat、netstat、nmon 實戰

編輯:關於 Linux

圖形介面雖直觀,但佔用資源、需桌面環境、不適合無頭伺服器。指令列監控工具輕量、可腳本化、可透過 SSH 遠端操作,是運維核心技能。本文系統整理五大經典監控指令,含關鍵指標解讀、實戰輸出範例、常用參數組合,助您快速定位 CPU、記憶體、磁碟、網路瓶頸。

運行等級調整:進入純文字模式

# 暫時切換
sudo systemctl isolate multi-user.target   # systemd 系統
# 或
sudo init 3                                # SysVinit 系統

# 永久設定預設為文字模式
sudo systemctl set-default multi-user.target
# 需要圖形時臨時啟動
startx

1. iostat - 磁碟 I/O 監控核心

常用參數

iostat -xz 1 10    # 擴充統計(-x)、忽略零裝置(-z)、每1秒採樣10次
iostat -d -k 2     # 只顯示裝置(-d)、KB單位(-k)、每2秒
iostat -p sda      # 顯示 sda 所有分區統計

關鍵指標解讀

欄位含義警戒閾值
%iowaitCPU 等待 I/O 佔比> 20% 持續 → 磁碟瓶頸
await平均 I/O 請求完成時間(ms)SSD < 5ms,HDD < 20ms,超過 → 擁塞
svctm裝置服務時間(ms)接近 await → 裝置飽和
%util裝置帶寬使用率> 80% 持續 → 瓶頸
rrqm/s, wrqm/s合併讀/寫請求率高表示順序存取好;低表示隨機存取

2. vmstat - 虛擬記憶體/系統整體快照

常用參數

vmstat 1 10          # 每1秒採樣10次
vmstat -a 1          # 顯示 active/inactive 記憶體
vmstat -d            # 磁碟統計(較 iostat 簡略)
vmstat -s            # 記憶體事件計數器摘要

關鍵欄位(預設輸出)

procs ---memory--- --swap-- --io-- -system-- ----cpu----
 r  b   swpd   free   buff  cache  si  so  bi  bo  in  cs us sy id wa
 1  0      0 123456  12345 67890  0   0   10  20 100 200 10  5 85  0
欄位含義判讀
r運行佇列長度(可執行進程數)> CPU 核心數 2-3 倍 → CPU 壓力大
b不可中斷睡眠進程(通常等 I/O)持續 > 0 → I/O 瓶頸
si/soswap in/out (KB/s)持續非零 → 記憶體不足
bi/bo磁碟讀/寫區塊數配合 iostat 看
in中斷次數/秒極高 → 裝置驅動/網路風暴
cs上下文切換次數/秒> 50000 → 進程/執行緒過多
us/sy/id/wa用戶/系統/閒置/等待I/O CPU%wa 高 → I/O 瓶頸;sy 高 → 系統調用多

3. mpstat - 多核心 CPU 詳細統計

常用參數

mpstat -P ALL 1      # 顯示所有核心 + 平均,每1秒
mpstat -P 0 1        # 只看核心 0
mpstat -I SUM 1      # 顯示中斷統計摘要

輸出重點

  • 單核心 %usr 或 %sys 持續 100% → 單執行緒瓶頸(如未並行化程式)。
  • %irq/%soft 高 → 硬體中斷/軟中斷負擔重(網卡、磁碟控制器)。
  • %guest/%gnice → 虛擬化環境下客體 CPU 佔用。

4. netstat / ss - 網路連線與協議統計

netstat 已棄用,建議改用 ss(iproute2),速度更快、資訊更全。

常用 ss 參數

指令用途
ss -tuln顯示所有 TCP/UDP 監聽埠(數值模式,不解析服務名)
ss -tulpn加上進程 PID/名稱(需 root)
ss -s協議統計摘要(TCP、UDP、連線狀態計數)
ss -i顯示 TCP 內部資訊(cwnd、rtt、重傳等)
ss -o state established '( dport = :80 or sport = :80 )'篩選 HTTP 連線

netstat 經典對照(舊腳本相容)

netstat -tuln   # ss -tuln
netstat -rn     # ip route show
netstat -i      # ip -s link
netstat -s      # ss -s

5. nmon - Nigel's Monitor 全能互動式監控

安裝

sudo apt install nmon      # Debian/Ubuntu
sudo dnf install nmon      # RHEL/Fedora
sudo pacman -S nmon        # Arch

互動操作鍵

鍵功能
cCPU 使用率
m記憶體使用率
d磁碟 I/O
n網路 I/O
r資源總覽(CPU+MEM+DISK+NET)
k核心統計
tTop 進程
.只顯示忙碌資源
q離開

錄製模式(離線分析/報表)

# 背景錄製 300 秒,每 10 秒採樣,輸出 CSV
nmon -f -s 10 -c 30 -m /var/log/nmon/

# 產生 .nmon 檔,可用 nmonchart (Excel 巨集) 或 nmon_analyser 轉圖表

綜合診斷流程圖

  1. 系統慢? 先 vmstat 1 5 看 r、wa、si/so。
  2. wa 高? 跑 iostat -xz 1 5 找壞掉的磁碟。
  3. r 高、wa 低? 用 mpstat -P ALL 1 看哪核心滿、pidstat 1 找吃 CPU 進程。
  4. si/so 高? free -h、ps aux --sort=-%mem | head 找記憶體大戶。
  5. 網路延遲? ss -i 看重傳、RTT;tcpretrans (bcc-tools) 看重傳細節。

自動化監控建議

  • Prometheus + node_exporter 持續採集上述指標。
  • Grafana 儀表板預設模板(Node Exporter Full)涵蓋所有關鍵指標。
  • 告警規則:node_cpu_seconds_total{mode="iowait"} > 0.2、node_filesystem_avail_bytes < 10%、node_memory_MemAvailable_bytes < 500MB。

熟練這五大指令,配合 pidstat、dstat、bpftrace/bcc-tools 進階觀測,即可在無圖形介面的生產環境精準定位效能瓶頸,從「感覺慢」進化為「數據說話」的專業運維。

Copyright © Windows教程網 All Rights Reserved