VPS 資源監控基礎與異常排查(CPU/RAM/磁碟/網絡使用及異常檢測)全指南
更多語言
更多操作
不知道你平時有沒有遇到這種情況:當你的 VPS 成功開機並部署了幾個 Docker 容器後,網站突然打不開了?SSH 敲擊鍵盤感覺非常卡頓?一鍵腳本執行到一半就卡死報錯了?
大多數時候,這些問題並不是因為你的配置寫錯了,而是伺服器的硬體資源(CPU、內存、磁碟、網絡)耗盡了。
我們購買的這種 linux 伺服器是沒有顯示器的,它無法像 Windows 電腦那樣彈出一個「內存不足」的警告框。作為一個合格的 VPS 用戶,你必須學會使用命令行工具,查看這台機器的內部運行狀態。這篇文章將用最直白的操作和命令,教你如何建立一套完整的資源監控與排錯邏輯。
一、 監控利器準備:安裝必備工具包
大多數純淨版的 Linux 系統只自帶了最基礎的 top 命令,界面簡陋且不直觀。在開始排查之前,我們先安裝一套現代化的資源監控工具包。
通過 SSH 連接到你的伺服器,執行以下命令(以 Ubuntu/Debian 為例):
apt update apt install htop iotop nethogs nload vnstat -y

這五個軟體分別對應了:綜合資源看板、磁碟 I/O 監控、進程網絡監控、實時網速看板、歷史流量統計。接下來,我們將逐一使用它們。
二、 CPU 監控與異常排查
CPU 是伺服器的大腦。如果 CPU 長期滿載,系統所有的響應都會變慢。
1. 使用 htop 查看全局狀態
在終端輸入 htop 並回車。
你會看到一個彩色的交互式界面。屏幕左上角的橫條代表了你的 CPU 核心數(例如 0 和 1 代表雙核)。橫條內部不同顏色的填充代表了不同的 CPU 消耗類型。

2. 核心指標解析:Load Average(平均負載)
在 htop 界面的右上角,或者直接在終端輸入 uptime 命令,你會看到三個數字,比如: Load average: 1.25 0.80 0.50

這三個數字分別代表系統在 過去 1 分鐘、5 分鐘、15 分鐘 的平均負載。
- 如何判斷是否過載? 負載的健康閾值取決於你的 CPU 核心數。如果你的 VPS 是 1 核,那麼負載達到 1.0 就說明 CPU 已經滿負荷運轉了;如果是 2 核,負載達到 2.0 才是滿負荷。
- 異常表現: 如果 1 分鐘的負載高達 5.0,而你的機器只有 1 個核心,說明有大量的任務在排隊等待 CPU 處理,系統現在處於極度卡頓的狀態。
3. CPU 異常情況與排查策略
- 情況 A:某個陌生進程占用 100% CPU 在
htop界面下方是進程列表,按鍵盤的P鍵可以按 CPU 占用率對進程進行排序。如果你發現一個你不認識的名字(比如一段隨機字母的程序)長期占用 90% 以上的 CPU,極大概率是你的伺服器被黑客入侵,並植入了挖礦木馬。 處理方法: 記錄下該進程的 PID(進程號),選中它並按F9鍵,選擇SIGKILL強制結束它。隨後必須立刻排查防火牆規則和木馬文件。 - 情況 B:Steal Time(被竊取的時間)過高 如果你使用傳統的
top命令,注意觀察 CPU 狀態行中的%st(Steal Time)指標。 VPS 是多台虛擬伺服器共享一台物理母機的 CPU。如果母機上其他的 VPS 鄰居瘋狂占用 CPU,導致物理機無法分出算力給你,你的%st數值就會飆升(比如大於 10%)。 處理方法: 這是服務商母機超售或鄰居折騰導致的。你自己在系統內無法解決,只能提交工單要求客服協助調查或者更換節點。
三、 RAM (內存) 監控與 OOM 異常
內存耗儘是導致 VPS 突然崩潰、SSH 斷開連接的最頭號元兇。
1. 正確閱讀內存指標
很多新手看到面板上顯示內存快滿了,就非常恐慌。其實 Linux 的內存管理機制和 Windows 完全不同。退出 htop,在終端輸入以下命令:
free -h
屏幕上會輸出類似下面的表格:

total used free shared buff/cache available Mem: 1.9Gi 400Mi 100Mi 10Mi 1.4Gi 1.3Gi Swap: 0B 0B 0B
- total(總內存): 你的 VPS 物理內存總量。
- used(已使用): 應用程式真正占用的內存。
- free(完全空閒): 還沒有被系統觸碰過的內存。(在 Linux 中,free 的數值小是非常正常的)
- buff/cache(緩存): Linux 系統的原則是「閒置的內存就是浪費」。它會把經常讀取的硬碟文件塞進內存里當緩存,以加快下次讀取速度。當程序真正需要內存時,這部分緩存會立刻釋放。
- available(可用內存):這是你唯一需要關心的核心指標。 它代表了你的系統目前還能騰出多少內存給新的程序使用。只要
available還有餘量,系統就完全健康。
2. 內存異常情況與排查策略
- 異常情況:OOM (Out of Memory) 現象 當
available內存徹底耗盡,且沒有設置 Swap(虛擬內存)時,Linux 內核為了自保,會觸發 OOM Killer 機制。系統會冷酷無情地直接殺掉那個占用內存最大的進程。 表現形式:你部署的資料庫突然停了,或者你的監控面板自己退出了,沒有任何錯誤提示。 - 如何確認是否發生了 OOM? 執行以下命令查看系統底層日誌:
dmesg -T | grep -i 'out of memory'
如果輸出了包含 Killed process 的日誌,說明你的程序確實因為內存不足被系統強殺了。 處理方法: 優化你的程序配置(比如降低資料庫的緩存池大小),或者在系統中添加一部分 Swap 虛擬內存作為緩衝。
四、 磁碟空間與 I/O 監控
磁碟問題通常分為兩類:空間塞滿(沒地方存數據了)和 I/O 擁堵(讀寫速度太慢卡住了)。
1. 查找是誰吃光了硬碟空間
執行基礎命令查看各個分區的總空間使用率:
df -h

如果看到掛載點為 /(根目錄)的使用率達到了 100%,你的系統將會出現各種極其詭異的報錯,比如無法寫入資料庫、Tab 鍵無法自動補全等。
如何揪出占用空間的大文件? 很多時候是由於 Docker 容器產生的日誌沒有被限制,導致把硬碟撐爆了。使用以下組合命令,可以快速列出當前目錄下最大的幾個文件或文件夾:
cd / du -sh * | sort -rh | head -10
如果你發現 /var/lib/docker 目錄占據了幾十 GB,可以清理一下對應的 Docker 日誌。
2. 監控磁碟 I/O 擁堵
有時候你的 CPU 負載很高,但你看 htop 里並沒有程序在占用 CPU 算力。這通常是因為大量的進程在等待硬碟讀寫數據(I/O Wait)。機械硬碟或劣質的 SSD 很容易出現這個問題。
輸入我們在第一步安裝的命令:
iotop
這就像是一個專門針對硬碟的 htop。你可以清楚地看到當前到底是哪個程序在瘋狂讀取或寫入硬碟。如果長時間有很多程序處於 IO> 狀態,說明硬碟性能已經成為這台 VPS 的瓶頸。

五、 網絡流量監控與異常檢測
搞清楚機器上的流量都去哪兒了,對於購買了「按流量計費」套餐的玩家來說至關重要。
1. 實時網速監控
想知道當前這一秒鐘,伺服器的下載和上傳速度是多少?輸入:
nload
界面上方是入站流量(Incoming,比如你向伺服器上傳文件),下方是出站流量(Outgoing,比如伺服器向外提供網頁訪問)。按 q 鍵退出。

2. 是哪個程序在跑流量?
如果 nload 顯示當前有很高的上傳速度,但你明明沒有在下載東西,這時必須查出「內鬼」。輸入:
nethogs
這個命令會列出具體的進程(如 nginx、sshd 甚至某個未知的木馬程序)及其對應的實時發送(SENT)和接收(RECEIVED)速度。直接就能定位到消耗帶寬的源頭。

3. 查看月度總流量消耗
如果你想知道這個月還剩多少流量配額,vnstat 是最好的記錄員(注意:vnstat 安裝後需要等待幾分鐘收集數據才會顯示完整內容)。 直接輸入:
vnstat
它會清晰地列出今天、昨天、以及本月的總接收(rx)、總發送(tx)和總合計(total)流量估算值。

4. 網絡異常檢測:不明的開放埠
如果你懷疑伺服器上運行了來路不明的服務,可以使用以下命令查看當前系統開放了哪些埠,以及對應的程序名:
ss -tunlp
仔細檢查 Local Address:Port 這一列,結合最右側的 Process。除了你熟知的 sshd(SSH服務)、docker-proxy 等,如果出現了未知的程序在監聽埠,請立刻結合前文提到的 UFW 防火牆將其封堵,並排查該進程。

監控資源並不是要你每天盯著終端看,而是讓你在系統出現異常的第一時間,擁有清晰的排查邏輯:先看 CPU 負載是否異常,再查 available 內存是否耗盡,接著排查磁碟空間是否 100%,最後查看網絡流量是否被盜刷。
通過熟練運用 htop、free -h、df -h 和網絡監控組件,你已經掌握了給 Linux 系統「看病」的基本功。