快速排查 Linux 伺服器效能問題的方法
在伺服器運維的日常工作中,最讓人頭痛的莫過於伺服器突然變慢、回應遲緩或資源耗盡。當使用者抱怨「怎麼這麼卡」時,作為系統管理員,我們需要一套快速且系統化的排查流程。這篇文章將介紹如何透過 Linux 內建的標準工具,循序漸進地診斷 CPU、記憶體、磁碟 I/O 及網路資源的使用狀況,幫助你迅速定位瓶頸。
第一步:掌握整體系統負載
在深入細節之前,我們首先需要知道系統目前的「整體健康狀況」。這裡最核心的指令是 top 和 uptime。
使用 uptime 可以瞬間獲得系統的負載平均值(Load Average)。這三個數字分別代表過去 1、5、15 分鐘的平均負載。若伺服器有 4 個 CPU 核心,當 Load Average 超過 4 時,通常意味著系統已經過載。
uptime
接著,使用 top 進行動態監控。top 會實時顯示各處理程序的資源佔用情況。啟動後,按下 1 可以展開顯示每個 CPU 核心的詳細資訊;按下 P 則依 CPU 使用率排序;按下 M 則依記憶體使用率排序。
top
若你習慣使用更現代化的介面,htop 也是極佳的選擇,它支援滑鼠操作與顏色標示,能讓數據可讀性更高。
第二步:檢查記憶體與 Swap 使用狀況
記憶體不足是導致伺服器當機或嚴重降速的主因之一。當物理記憶體耗盡時,系統會大量使用 Swap(交換空間),這會導致效能斷崖式下跌。
使用 free 指令查看記憶體總量及已用空間:
free -h
輸出結果中的 Swap 行若顯示大量使用(used 不為 0),且持續增長,這通常是危險訊號。此時應檢查是否有特定程序佔用了過多記憶體。回到 top 或 htop,觀察 RES(實際物理記憶體)欄位。
此外,可以使用 vmstat 觀察記憶體頁交換的頻率:
vmstat 1 5
若 si (swap in) 和 so (swap out) 欄位頻繁出現非零數值,代表系統正在頻繁地進行記憶體與磁碟間的資料交換,這是嚴重的效能瓶頸。
第三步:診斷磁碟 I/O 瓶頸
即使 CPU 和記憶體都正常,磁碟 I/O 仍是常見的瓶頸,特別是在資料庫伺服器或大量檔案讀寫的場景中。
使用 iostat 指令可以查看磁碟的 I/O 統計資訊。請確保已安裝 sysstat 套件:
sudo apt install sysstat
iostat -x 1 5
在輸出結果中,請特別關注以下幾個欄位:
%util:磁碟閒置時間的百分比。若此值接近 100%,表示磁碟已達到極限,無法處理更多請求。await:I/O 請求的平均等待時間(毫秒)。若此值過高(例如超過 10ms 甚至更高),表示磁碟回應遲緩。
若發現特定目錄或檔案讀寫頻繁,可使用 iotop 進行進階排查:
sudo apt install iotop
sudo iotop
iotop 類似 top,但專門顯示各進程的磁碟 I/O 使用情況,能直接指出哪個程式在大量讀寫磁碟。
第四步:檢視網路連線狀態
網路問題通常表現為連線阻塞或頻寬飽和。使用 ss 指令(netstat 的現代替代品)可以快速檢視 TCP 連線狀態:
ss -s
這會顯示連線統計摘要。若發現大量 TIME_WAIT 或 CLOSE_WAIT 狀態的連線,可能表示應用程式未正確關閉連線,導致資源洩漏。
若要查看具體的連線來源與端口,可執行:
ss -tulpn | head -20
此外,使用 nethogs 可即時監控哪個進程佔用了最多的頻寬:
sudo apt install nethogs
sudo nethogs eth0
常見問題與解決方案
1. 系統 Load Average 很高,但 CPU 使用率卻很低,這是怎麼回事?
這通常表示系統處於「I/O Wait」狀態。也就是說,CPU 正在等待磁碟或網路 I/O 完成,而非進行運算。請檢查 iostat 中的 %iowait 欄位或 top 中的 wa 值。解決方法包括優化資料庫查詢、增加磁碟效能(如使用 SSD)、或檢查是否有進程陷入無限迴圈進行磁碟寫入。
2. 記憶體使用率高,但沒有明顯的 Swap 使用,是否安全?
不一定。Linux 會利用空閒記憶體作為 Page Cache(頁面快取)來加速檔案讀取。因此,free 指令顯示的 used 記憶體可能包含大量快取。請觀察 buff/cache 欄位。若快取佔比過高且應用程式確實需要更多記憶體,系統會自動回收快取。但若應用程式頻繁進行大量隨機讀取,導致快取失效頻繁,反而會降低效能。此時可考慮增加物理記憶體或優化應用程式的快取策略。
小結
排查 Linux 伺服器效能問題並非憑空猜測,而是依賴數據的邏輯推導。透過 top 掌握整體負載,free 確認記憶體健康,iostat 診斷磁碟瓶頸,以及 ss 檢視網路狀態,你已經掌握了絕大多數效能問題的診斷關鍵。建議在日常維護中定期記錄這些指標的基線數值,當異常發生時,才能快速比對並做出正確判斷。記住,效能優化是一個持續的過程,了解工具只是第一步,理解背後的系統機制才是長久之計。