SSD Nodes Learn 🎉 VPS $5.50/月起
指南 Matt Connor作者: Matt Connor

如何看懂廉價 VPS 方案:別只看價格

逐行拆解廉價 VPS 方案,檢查 vCPU 超賣、unlimited bandwidth 條款、NVMe 宣稱與續約價格,並在 30 分鐘退款期內完成驗收測試。

廉價 VPS 方案未揭露的內容

閱讀廉價 VPS 方案時,應反向檢視內容,因為頁面上的價格是最不具參考價值的數字。決定這台主機是否實用的,往往是方案未列出的部分:vCPU 數量背後的超賣比例、「unlimited」背後的合理使用條款、首期結束後的續約價格,以及備份與 IPv4 位址是否需要另外計費。本指南會逐行檢視方案內容,接著提供一套驗收測試,讓你仍可申請退款時在主機上執行。

這不代表低價一定是陷阱。較舊的硬體、更高的部署密度、自助式支援,以及較低的平台備援程度,都是低價得以成立的原因。你需要先了解自己接受了哪些取捨,避免讓使用者替你發現問題。以下所有操作均在 Ubuntu 24.04 上執行,使用 2026 年 8 月可取得的套件。

vCPU 不是核心

vCPU 是排程位置,不是一塊實體矽晶片。在 KVM(kernel-based virtual machine)中,每個 vCPU 都是主機上的一個執行緒。主機排程器輪到該執行緒時,才會將它安排到實體核心上執行。主機可以用 1 個實體核心配置 4 個 vCPU,而每個 guest 仍會在 nproc 中回報完整數量。方案頁面上的數字只是你可以要求的上限,並不表示這些資源會保留給你。

超賣比例是主機每個實體核心販售的 vCPU 數量。比例為 1:1 時,該核心只由你使用。低價方案通常採用更高的比例,而且幾乎不會公開這項資訊。因此,凡是未標示「dedicated core」或「dedicated vCPU」的方案,都應視為共享資源。共享資源足以應付大多數工作,因為多數伺服器大部分時間都處於閒置狀態。但當你的尖峰時段也正好是其他使用者的尖峰時段時,情況就會改變。

你可以在 guest 內測量這項影響。當 vCPU 已準備執行,但主機將實體核心交給其他 guest 時,這段等待時間會計入 steal time,也就是 vmstat 中的 st 欄位,以及 top 中的 %stSteal time 會在你自己的指標中反映出鄰居工作負載的影響。這是本指南中最有用的數值,因為方案頁面無法偽造它。

Dedicated core 仍會以其他方式共享資源。記憶體頻寬、末級快取與儲存路徑都屬於整台主機。「Dedicated vCPU」只會消除最大的效能變異來源,並不能消除所有變異。

也要使用 lscpu 檢查 CPU 型號。兩個方案都可能標示為「4 vCPU」,但單執行緒速度可能相差 2 倍,因為其中一台主機使用的 CPU 世代老了好幾代。以低價使用舊款實體硬體,對 build agent 來說是合理的取捨,但不適合 checkout 頁面。

「Unlimited bandwidth」至少代表 4 種不同的產品

流量通常有 4 種描述方式,而且不能互相替換。

  • 計量配額。方案會列出數字,例如「每月 2 TB」或類似內容。重點在於超過配額後會發生什麼事:每增加 1 TB 收取超額費用,或將速度降到非常慢,直到下個月重新計算。請在需要知道之前先確認是哪一種。
  • 附帶合理使用條款的不限量方案。不會計算流量,acceptable use policy 會以文字而非數字設定限制。請在該文件中搜尋「fair use」、「sustained」、「excessive」和「abuse」。
  • 連接埠速度上限。100 Mbit/s 的連接埠會受物理條件限制,與流量政策的內容無關。
  • 前兩者的組合:不限量流量,但使用低速連接埠。這是低價方案最常見的形式;只要閱讀連接埠速度,這就是誠實的方案。
ChartTraffic ceiling set by port speed alone, 30 days at full rate
The data behind this chart
[
  {
    "label": "100 Mbit/s",
    "tb_ceiling_30d": 32,
    "hours_per_tb": 22.2
  },
  {
    "label": "200 Mbit/s",
    "tb_ceiling_30d": 65,
    "hours_per_tb": 11.1
  },
  {
    "label": "500 Mbit/s",
    "tb_ceiling_30d": 162,
    "hours_per_tb": 4.4
  },
  {
    "label": "1 Gbit/s",
    "tb_ceiling_30d": 324,
    "hours_per_tb": 2.2
  }
]

連接埠速度是硬性上限,計算方式很簡單。100 Mbit/s 等於每秒 12.5 megabytes,因此該連接埠以全速運作 30 天,約可傳輸 32 TB。同樣的 30 天使用 1 Gbit/s 連接埠,約可傳輸 324 TB。這裡的 TB 代表 10^12 bytes,也就是主機商計費時使用的單位。這是算術結果,不是測量值;實際上沒有伺服器會讓連接埠連續 1 個月全速運作。

第二欄才是會改變方案選擇的資訊。在 100 Mbit/s 連接埠上傳輸 1 TB,約需 22.2 小時;在 gigabit 連接埠上則約需 2.2 小時。如果你的復原計畫是「下載備份後重新開始」,這個數字就是復原時間。

這行規格中還隱藏了 2 個細節。「1 Gbit/s shared」表示該連接埠與其他客戶共用,因此上面的上限是最佳情況,不是保證值。有些主機商也不是依總流量計費,而是依取樣速率的 95th percentile 計費;在這種情況下,穩定的負載會比尖峰負載付出低得多的費用。

無論方案如何標示,都應測量自己的使用量。vnstat 會讀取介面計數器並保留歷史紀錄。

sudo apt install -y vnstat
sudo systemctl enable --now vnstat
vnstat -d
vnstat -m

安裝後立即執行時,vnstat 會顯示 Not enough data available yet.,因為其資料庫尚未取得任何樣本。隔天再查看,vnstat -m 會提供每月總量,讓你與所付費方案的配額比較。

NVMe 的宣稱是否可信?如何檢查?

lsblk -d -o NAME,ROTA,SIZE,MODEL

ROTA 為 0 表示系統已被告知該裝置不是旋轉式磁碟。這個值來自 hypervisor,因此描述的是主機對外宣告的裝置特性,而不是底層媒體。對於 /dev/vda 這類 virtio 磁碟,MODEL 欄通常是空白;對於以 SCSI 連接的磁碟,則會顯示通用的 QEMU HARDDISK。你檢查的是虛擬磁碟,因此這個標籤無法證明任何事情。

值得檢查的屬性是延遲,而真正的差異在於本機 NVMe 與網路連接的儲存區。網路儲存區可能呈現很高的循序傳輸量,但實際使用仍然緩慢,因為傳輸量是在有大量並行請求時測得;資料庫則必須一次等待一個小型寫入完成。先以佇列深度 1 測量延遲,再以較深的佇列測量 IOPS(每秒輸入/輸出操作數)。

sudo apt install -y fio
fio --name=lat --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randread --bs=4k --iodepth=1 --numjobs=1 --runtime=60 --time_based --group_reporting
fio --name=iops --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randread --bs=4k --iodepth=32 --numjobs=1 --runtime=60 --time_based --group_reporting
rm -f fiotest

讀取 clat percentiles 區塊,尤其是第 99.00 行。這是最慢 1% 請求所遇到的完成延遲,也是使用者感受到卡頓的地方。粗略而言,本機 NVMe 在佇列深度 1 下通常會在數百微秒內回應,而網路連接的儲存區通常需要數毫秒。請比較你自己的兩次測試結果,不要只依賴任何單一公開數據;並在一天內分 3 次執行這組測試,因為與其他租戶共用的磁碟,在 03:00 和 20:00 的表現可能不同。

fio 會先在磁碟上建立 1 GB 檔案,因此請預留足夠的磁碟空間,也要注意測試會消耗方案所套用的 IOPS 額度。只想快速讀取結果時,ioping -c 20 . 會在單行中提供延遲。基準測試只有能夠重複執行才有價值,因此請儲存完整的命令列與輸出,並附上日期。

包含項目與額外計費項目

  • IPv4。通常會包含 1 個位址。有些低價方案會在 NAT(network address translation)後方提供共用位址,並只轉送少數連接埠。這表示您無法在自己的伺服器上使用 443 埠。請使用 ip -4 addr show scope globalcurl -4 https://icanhazip.com 檢查。兩者結果不同,表示您位於 NAT 後方。
  • IPv6。路由至您的 /64 會提供容器及任何需要從外部連線的項目使用的位址。單一 /128 僅能處理輸出流量,其他用途有限。
  • 備份。自動備份通常是付費加購項目。Snapshot 通常免費,但 Snapshot 與其複製的磁碟位於相同基礎架構,因此只能防範您自身的操作錯誤,無法防範主機遺失。無論方案包含哪些項目,都應在伺服器外保留 1 份副本。
  • DDoS 處理。許多主機商遇到 volumetric attack(distributed denial of service)時,會在固定期間將您的 IP 位址進行 null routing。伺服器本身仍正常運作,只是無法從網際網路連線。請確認觸發門檻,以及 null route 會持續多久。
  • 支援範圍。在 unmanaged 方案中,您就是系統管理員,主機商的責任範圍只到 hypervisor 和網路。這是兩個規格相同方案之間,實際成本差異最大的地方。
  • 授權與控制面板。Control panel、商業作業系統或 mail add-on 每月費用可能高於伺服器本身。

你要購買哪種虛擬化類型?

systemd-detect-virt

kvmqemu 代表完整虛擬化:你有自己的 kernel,也能選擇要載入的模組。lxclxc-libvirtopenvz 代表與主機共用 kernel 的容器。none 代表 bare metal。

共用 kernel 時,差異會直接影響功能。sudo modprobe wireguard 會失敗,而 ip link add dev wg0 type wireguard 會回傳 RTNETLINK answers: Operation not supported,因為容器無法載入主機尚未載入的 kernel module。缺少 lxcfs 時,free -h 可能會回報主機的記憶體,而不是你的記憶體,因此監控讀到的數值與你的伺服器無關。Swap 通常會與其他容器共用,而且在 VPS 內執行虛擬機器完全不可行。容器方案價格較低是有原因的;但對靜態網站或小型應用程式而言,仍然是合適的選擇。

續費價格是多少?

廣告價格通常只適用於第一個合約期間。請在訂購頁面尋找「renews at」字樣,並確認折扣適用的期間。只維持 1 年的折扣,與在方案存續期間固定不變的折扣,是首張發票金額相同但內容不同的產品。

退款條款也應同樣仔細閱讀。確認退款期限有多長、期限是從下單日還是服務開通日開始計算、額外 IP 位址等附加項目是否可退款,以及年度預付費用是否按比例退還。接著在續費日前 1 週於行事曆設定提醒,因為要離開服務的最佳時機是在發票開立前。

之後再轉換服務也不是免費的。搬移數百 GB 的資料、重建設定、等待 DNS(domain name system)的 TTL 值生效,以及郵件伺服器重建 IP reputation,可能會耗去整個週末。當節省的費用看似很可觀時,也要把這個週末的成本計算在內。VPS 一整年的實際成本才是應比較的數字,而不是第一個月的費用。

30 分鐘驗收測試

在遷移任何資料前,先在新的主機上執行這項測試,並趁退款期限尚未結束時完成。先進行安全設定:新 VPS 的前 10 分鐘涵蓋使用者帳號、金鑰與防火牆。接著安裝工具。

sudo apt update
sudo apt install -y sysbench fio ioping sysstat stress-ng vnstat mtr-tiny curl

檢查 1:實際拿到的是什麼?

systemd-detect-virt
nproc
lscpu | grep -E 'Model name|MHz|Hypervisor'
free -h
lsblk -d -o NAME,ROTA,SIZE,MODEL
ip -4 addr show scope global
curl -4 -s https://icanhazip.com

您應該會看到虛擬化類型、CPU 型號,以及與購買方案相差幾個百分點內的記憶體數值。free -h 回報的 RAM 遠高於方案提供的容量,表示這是未搭配 lxcfs 的容器,不是額外贈送的資源。來自 curl 的公開位址若從未出現在 ip -4 addr,表示這個 IPv4 位址是共用的。

檢查 2:單一執行緒有多快?負載下有多少 steal?

sysbench cpu --cpu-max-prime=20000 --threads=1 run

記錄 events per second 那一行。單一執行緒速度會影響頁面呈現速度與建置所需時間,也是廉價方案之間差異最大的項目。現在讓每個 vCPU 都承受負載,觀察排程器實際分配給您的資源。

stress-ng --cpu 0 --timeout 300s &
vmstat 1 30
mpstat -P ALL 1 10

--cpu 0 會為每個線上 CPU 啟動一個 worker。在 vmstat 中查看 st 欄位,並在 mpstat 中查看 %steal。共用方案偶爾出現個位數是正常的。Steal 持續數分鐘維持在兩位數,表示實體核心超額配置,因此您的工作會排在其他租戶後面。保持負載時再次執行 sysbench:若單一執行緒分數大幅下降,表示各個 vCPU 彼此競爭,通常代表它們是同一核心上的 sibling threads,而不是分開的核心。另一種情況是分數偏低但 steal 接近 0,表示主機套用了 CPU 上限;這項限制無法直接從 guest 內部查看。

檢查 3:磁碟在 queue depth 1 下的表現如何?

執行 NVMe 章節中的 2 個 fio 指令,並保留 2 項結果:queue depth 1 下的第 99 百分位延遲,以及 depth 32 下的 IOPS。接著檢查寫入效能,因為許多 volume 在寫入方向的速度會慢得多。

fio --name=wlat --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randwrite --bs=4k --iodepth=1 --numjobs=1 --runtime=30 --time_based --group_reporting
rm -f fiotest

dd 的循序傳輸數值是方案清單最喜歡引用、也是您能收集到的最不實用數值,因為資料庫或繁忙的 Web 應用程式平常並不是以循序串流為主。若要進行比較,仍可收集這項數值。請以延遲作為判斷依據。

檢查 4:從使用者所在位置看,網路表現如何?

先將大型檔案下載到 VPS。

curl -o /dev/null -w 'in: %{speed_download} bytes/s\n' https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xz

這只能測試通往伺服器的其中一條路徑,無法代表其他情況。真正重要的方向是使用者所經過的路徑,因此請在伺服器上提供檔案,再從使用者附近的機器下載。

fallocate -l 100M /var/tmp/100mb.bin
python3 -m http.server 8080 --directory /var/tmp

接著,在靠近使用者群體的筆電或伺服器上執行:

curl -o /dev/null -w 'down: %{speed_download} bytes/s\n' http://YOUR_SERVER_IP:8080/100mb.bin
mtr --report --report-cycles 50 YOUR_SERVER_IP

測試期間必須在防火牆中開放 port 8080。完成後關閉該 port 並刪除檔案,再使用 Ctrl+C 停止 Python server。在 mtr 的輸出中,查看最後一行的 loss 欄位。中間某個 hop 出現 loss、但目的地沒有 loss,是正常現象,因為 router 會以低優先級回應 mtr 所依賴的 ICMP(internet control message protocol)訊息,這不代表您的網路流量遺失。最後一行出現 loss 才是實際的封包遺失。

在使用者流量最高的時段重複網路測試。02:00 的單次取樣只能反映網路較為閒置時的狀況。

將全部 4 項結果連同日期儲存到檔案中,並在 1 個月後重新執行。第 1 天表現良好、第 6 週卻變慢的方案,表示主機已經塞滿;保留第 1 天的數據,才能確認這點,而不是只能猜測。

便宜 VPS 適用的情況

低價格代表實際取得了一些條件,也代表必須承擔實際的限制。較舊的 CPU、較高的超賣比例、較慢的網路儲存、自助式支援,以及較薄弱的備援,都是價格較低的原因。請依工作負載選擇。

對開發環境、CI runner、VPN endpoint、監控節點、備份目標或靜態網站而言,便宜方案是正確選擇。這些用途即使偶爾變慢一分鐘,通常也不會造成問題。若延遲本身就是產品的一部分,例如結帳頁面、互動式 API、遊戲伺服器,或其他服務必須等待回應的資料庫,選擇便宜方案就不是好的取捨。上述測試能告訴你實際購買的是哪一種方案,而且在修正選擇仍不需要付出成本時,就能取得答案。

FAQ

便宜 VPS 方案中的 vCPU 是什麼意思?

vCPU 是提供給 guest 的虛擬處理器。條件允許時,主機排程器會將它對應到實體核心上的執行緒。它代表可要求的 CPU 時間配額,而不是保留的硬體,除非方案明確標示「dedicated core」或「dedicated vCPU」。主機商銷售的 vCPU 數量通常多於實體核心數量,而且很少公開超額配置比例,因此應自行測量。執行 stress-ng --cpu 0 --timeout 300s,並在 vmstat 1 中觀察 st 欄位。Steal time 持續為兩位數,表示你正在等待其他 guest 使用中的核心。

「unlimited bandwidth」真的代表無限嗎?

不代表。限制通常存在於方案說明以外的兩個地方。acceptable use policy 會以文字設定合理使用上限,而連接埠速度則會以位元組設定硬性上限。100 Mbit/s 的連接埠即使持續滿速傳輸,30 天內也無法超過約 32 TB,因此應詢問連接埠速度,並在政策中查找「fair use」和「sustained」等字樣。接著使用 vnstat -m 追蹤實際傳送量,再與配額比較。

如何確認 VPS 是否真的使用 NVMe?

你無法從 guest 內部確認實體儲存媒體,因為 lsblk 只會回報 hypervisor 宣告的資訊:ROTA 為 0,以及空白或通用的 model 字串。你能測量的是實際效能。使用 --direct=1 執行 fio,並在 --iodepth=1 下讀取 99.00th percentile 的完成延遲。Local NVMe 的回應時間通常是數百微秒,而 network attached volume 即使循序傳輸量看起來很高,回應時間仍會以毫秒計算。一天中應在不同時段重複測試幾次,因為 shared disk 在 03:00 和 20:00 的效能不一定相同。

refund window 結束前應測試哪些項目?

依下列順序測試 4 項。透過 systemd-detect-virtlscpufree -h 確認這台主機的實際配置。透過 sysbench cpu --cpu-max-prime=20000 --threads=1 run 測量單執行緒速度。對系統施加完整負載,並使用 vmstat 1 觀察 stress-ng --cpu 0 的 steal time。使用 queue depth 1 執行 fio,測量磁碟延遲。接著從靠近使用者的機器使用 mtr 測量網路,並下載由這台主機提供的檔案。30 分鐘足以完成全部測試。在遷移任何內容前完成測試,可保留 refund window 作為退費依據。