萬盛學電腦網

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

Linux 服務器效能追蹤與監控核心指令實戰:free、top、htop、ps、iostat、vmstat、sar 完全指南

一、記憶體診斷:free

free -h
#              total        used        free      shared  buff/cache   available
# Mem:           7.7G        1.2G        4.5G         120M        2.0G        6.1G
# Swap:          2.0G          0B        2.0G

關鍵解讀

  • available:實際可供新程序使用的記憶體(含可回收的 buffers/cache),比 free 更準確
  • buff/cache:系統主動佔用的緩衝/快取,記憶體壓力大時會自動釋放
  • Swap used > 0 且持續增長:記憶體不足,需擴充或優化程式

二、進程即時監控:top / htop

top 關鍵欄位

  • 第 1 行:系統時間、運行天數、登入用戶數、負載 1/5/15 分鐘
  • 第 2 行 Tasks:總進程數、運行中、睡眠、停止、殭屍
  • 第 3 行 %Cpu(s):us(用戶) sy(系統) ni(優先級) id(閒置) wa(IO等待) hi(硬中斷) si(軟中斷) st(虛擬機偷佔)
  • 進程列:PID、USER、PR、NI、VIRT、RES、SHR、S(狀態)、%CPU、%MEM、TIME+、COMMAND

互動熱鍵

鍵功能
M依記憶體排序
P依 CPU 排序(預設)
T依執行時間排序
1切換顯示各 CPU 核心
k殺死進程(輸入 PID + 信號)
r調整 nice 值
c顯示完整命令行

htop 進階優勢

  • 彩色、滾動、滑鼠支援、樹狀檢視(F5)
  • F9 快速發送信號殺進程
  • F4 過濾進程名
  • s 對選中進程直接 strace(極強除錯)
  • 安裝:yum install htop / apt install htop

三、精準定位問題進程:ps 自定義輸出

# 顯示所有進程的 PID、CPU%、MEM%、命令
ps -eo pid,pcpu,pmem,cmd --sort=-pcpu | head -20

# 找出同名進程數量(服務實例過多檢測)
ps -C nginx --no-headers | wc -l
ps -C php-fpm --no-headers | wc -l

# 顯示執行緒
ps -eLf | grep nginx

四、I/O 效能分析:iostat

iostat -x 1 5
# 每秒採樣 1 次,共 5 次,顯示擴充統計

關鍵指標

  • %util:裝置帶寬利用率,接近 100% 表示 I/O 瓶頸
  • await:平均 I/O 等待時間(ms),含佇列與服務時間
  • svctm:平均服務時間(ms)
  • r/s、w/s:每秒讀/寫請求數
  • rkB/s、wkB/s:每秒讀/寫 KB 數

五、系統整體效能:vmstat

vmstat 1 10
# procs: r(可運行) b(阻塞)
# memory: swpd(已用swap) free buff cache
# swap: si(換入) so(換出)  <-- 持續非零 = 記憶體壓力大
# io: bi(塊讀入) bo(塊寫出)
# system: in(中斷) cs(上下文切換)  <-- cs 高 = 進程/執行緒過多
# cpu: us sy id wa st

六、歷史效能資料:sar (sysstat 套件)

# 安裝
yum install sysstat
systemctl enable --now sysstat

# CPU 歷史
sar -u -f /var/log/sa/sa$(date +%d)

# 記憶體歷史
sar -r -f /var/log/sa/sa$(date +%d)

# I/O 歷史
sar -d -f /var/log/sa/sa$(date +%d)

# 網路歷史
sar -n DEV -f /var/log/sa/sa$(date +%d)

# 即時採樣
sar -u 1 10

七、綜合診斷流程

  1. uptime / top 確認負載異常
  2. free -h 確認記憶體/Swap
  3. iostat -x 1 確認磁碟 I/O
  4. vmstat 1 確認上下文切換、Swap 活動
  5. ps -eo pid,pcpu,pmem,cmd --sort=-pcpu 定位高佔用進程
  6. strace -p PID / lsof -p PID 深度分析進程行為
  7. sar 回溯歷史趨勢,判斷突發還是慢性

八、一鍵健康檢查腳本

#!/bin/bash
echo "=== $(date) Health Check ==="
echo "Load: $(uptime | awk -F'load average:' '{print $2}')"
echo "Mem: $(free -h | grep Mem | awk '{print "Used: "$3"/"$2" ("int($3/$2*100)"%)"}')"
echo "Disk: $(df -h / | awk 'NR==2 {print "Used: "$3"/"$2" ("$5")"}')"
echo "Top CPU:"
ps -eo pid,pcpu,pmem,cmd --sort=-pcpu | head -6
echo "Top MEM:"
ps -eo pid,pcpu,pmem,cmd --sort=-pmem | head -6
echo "IO Wait: $(iostat -c 1 2 | tail -1 | awk '{print $4"%"}')"

掌握這套指令組合與診斷流程,即可在無監控系統的環境下快速定位 Linux 效能瓶頸。

copyright © 萬盛學電腦網 all rights reserved