獨立伺服器 · 月付起

兩條曲線對上了
再來選這臺裸機

$465 / 月起 · 128GB
開始租用
32 核 / 64 執行緒 DDR4 ECC

雲端主機什麼時候該換成整臺裸機?

先講結論。雲端主機和獨立伺服器、裸機和雲端主機、VPS 和獨立主機,這三組差別都收成尖峰時段的三條曲線:CPU 有沒有被同臺宿主上的其他用戶拿走、記憶體工作集有沒有頂到這臺雲端規格、硬碟佇列有沒有把資料庫 commit 拖慢。 五個工作日裡對上兩條,再把整臺月租和現在的雲端帳單放在一起。只閃幾分鐘,留在雲端。

結論:兩條成立,再算月租

整點那幾秒變慢,在共用宿主上很常見。為了這個尖峰換裸機,多半會買到一台填不滿的機器。 取樣放在平日尖峰,間隔 1 秒或 10 秒,至少蓋住五個工作日。凌晨備份另存,不要和午尖峰合成一句話。 兩條曲線都跟著介面 p95 走,才打開價目。只中一條,先在雲端加大規格,下週用同一個窗口再量。

搬家清掉的範圍

整臺拿走的是旁邊那位用戶。慢 SQL、缺索引、鎖等待都還在。用戶離機房很遠,往返也不會因為 steal 消失就縮短。先確認慢在算力和硬碟,再算月租。

三種名字,對到哪一欄

雲端主機

常見雲端主機是 KVM 這類虛擬機,宿主上還有別人。客戶機看得到 steal:vCPU 已經可以跑,這段時間卻分給了旁邊的用戶。 硬碟多半是網路磁碟,IOPS 按規格或點數計算。記憶體有規格上限,宿主還可能用 balloon 把暫時用不到的頁收回去。 雲端主機和獨立伺服器的差別,先看這三欄有沒有「別人」。

VPS

VPS 要先分是虛擬機還是容器。虛擬機型態的 VPS 和雲端主機同一套曲線,核數和記憶體上限通常更小。 容器沒有 steal 這一欄。CPU 被配額卡住時,數字在 cgroup 的節流次數;記憶體上限寫在記憶體控制器上。 把節流讀成「機器壞了」會判錯。讀成「規格到頂」,才和虛擬機的 steal 對得上。 VPS 和獨立主機的差別也在這裡:VPS 仍是從一台宿主切出來的一份,裸機把排程交給一個客戶。

裸機

這篇裡的裸機、實體機、獨立伺服器指同一件事:整臺交給一個客戶。 宿主作業系統裡,steal 應接近 0,因為佇列上沒有另一家。 硬碟是插在這臺機器上的 NVMe。記憶體是這臺上的實體條,容量在下單時選定。 裸機和雲端主機的差別,用這三欄就能核對。

三條曲線怎麼讀

CPU:steal 連著偏高

steal 是「我想跑,宿主把 CPU 給了別人」的時間。Linux 上 vmstat 的 st、top 的 %st 都是這個百分比。 Prometheus 取 node_cpu_seconds_total 的 steal 模式做 rate,再按核平均。 偶發幾秒到十幾秒,是旁邊用戶的短時突波,雲端主機可以留。 規格沒變、流量也沒變,尖峰裡 steal 多次爬到大約 10% 以上,每次維持好幾分鐘,p95 同時抬高:CPU 是被長期拿走的。這時加 vCPU 常常沒用,核更多,在已經擠滿的宿主上只是多排一次。

另一種尖峰要分開。user 加 sys 接近打滿,steal 接近 0:算力是你自己用完的,先在雲端加大 CPU。加大之後 steal 仍在營業時段反覆出現,再把換裸機放上桌面。 10% 是讀圖用的線,不是告警規範。延遲預算更緊,線就畫低;批次工作可以等,線就畫高。要一起成立的是連續多個工作日,而且 p95 同向。

容器 VPS 沒有 st。到 CPU 控制器的 cpu.stat 讀 nr_throttled 和 throttled_usec。 尖峰裡節流時間持續增加,就是配額到了。配額已經加到這家 VPS 的上限,節流還在,就和 steal 用同一條判斷。 裸機的宿主系統上,steal 應停在 0 附近。你若再切自己的虛擬機,客戶機裡仍會出現 steal,那是這 32 核在你自己的虛擬機之間分。

st vmstat 的 steal
約 10% 尖峰判讀線
5 日 至少覆蓋的工作日
p95 要和 steal 同向

記憶體:工作集頂到規格

工作集是這段時間反覆碰到、必須留在記憶體裡的頁。Linux 會把空閒記憶體拿去當快取。 MemAvailable 偏低、延遲卻穩,多半還在快取,繼續留在雲端。看到「記憶體使用率 90%」就換裸機,常常買到一塊用來裝快取的記憶體。

該記下的是這幾件一起出現。尖峰時 vmstat 的 si、so 持續不為 0。主要缺頁升高,資料庫延遲跟著走。核心日誌出現 OOM。 資料庫想要的緩衝池已經大於這臺雲端主機的記憶體上限,廠商規格表沒有更大一檔,或下一檔換成了你不能用的機型。 balloon 會讓客戶機在行程看起來還沒占滿時就感到壓力,因為宿主把頁收回去了。先確認壓力來自氣球還是工作集。

工作集大約 32GB、沒有 swap、沒有 OOM:在雲端加一檔記憶體即可。 工作集已經頂到這家雲賣給你的最大記憶體,才輪到裸機的兩檔。兩檔都是 DDR4-3200 ECC RDIMM,128GB 或 256GB。下單後不能加條。 按尖峰工作集,加上作業系統和頁面快取要留的餘裕來選。放不進 128GB,選 256GB,月租 $592。兩檔都放不下,這臺機器的記憶體上限也接不住。

硬碟:佇列拖住 commit

資料庫變慢時,先看資料碟的佇列,再看網卡。 iostat -xz 1 裡,aqu-sz 是平均佇列長度,w_await 是寫入等待。OLTP 在意提交時的 fsync。備份的循序讀速度說明不了下午的提交。

尖峰裡資料碟 aqu-sz 經常大於 1,w_await 走到幾十毫秒,慢日誌的 commit 一起變長:佇列已經在拖資料庫。這時吞吐可以仍然不高。 雲端的網路磁碟還會疊 IOPS 點數。點數用完,等待突然變長,過幾個小時又恢復。每天同一時段變慢、重啟應用也沒用,就是這條曲線。 IOPS 買到這家雲的最高檔,等待仍在工作日重複出現,限制在共用儲存上。

夜間備份把硬碟打滿、白天 w_await 正常:把備份挪到離峰。等待很低、慢查詢卻是鎖或全表掃描:先改 SQL。 NVMe 上 %util 接近 100,不要單獨當成飽和;佇列長度和寫入等待比較有用。換到裸機之後同樣用這兩欄。

快取、備份、尖峰要分開

可用記憶體低但延遲穩,先當快取。硬碟只在備份時忙,先挪備份。尖峰裡持續換頁、OOM,或佇列拖住 commit,才把那一條記成成立。

對照之後怎麼判

尖峰裡看到的 留在雲端 再算裸機
steal 只跳幾秒,p95 不動 維持現有規格 這條不成立
steal 多次到約 10% 並維持數分鐘,p95 同向;加 vCPU 後仍如此 加核已經試過 CPU 被旁邊的用戶拿走
user 加 sys 打滿,steal 接近 0 加大雲端 CPU 先留著
容器節流在尖峰持續增加,配額已到頂 與 steal 同一結論 配額到頂後仍節流
可用記憶體低,無換頁,延遲穩 當作快取留下 這條不成立
尖峰持續換頁或 OOM,緩衝池大於雲端記憶體上限 雲端已無更大記憶體 按工作集選 128GB 或 256GB
只有備份時段硬碟忙,白天寫入等待正常 挪開備份 這條不成立
資料碟佇列經常大於 1,寫入等待到幾十毫秒,commit 變慢,IOPS 已到頂 磁碟型號已經換過 佇列來自共用儲存

對上了也不必當天搬。延遲若主要來自用戶到機房的距離,裸機消掉 steal,消不掉那段往返。 實體機部署於日本東京。到日本及鄰近地區的路徑,和到更遠地區的路徑,要分開看。 應用鎖、缺索引、跨區呼叫,也不在這三條裡。

在現在這臺把數字抓下來

下面四步用的是你現在的雲端主機或 VPS。裸機還沒租的時候就能做完。指令只負責取樣。

  1. 1
    尖峰取樣,蓋住五個工作日

    每個尖峰跑 vmstat 1。留下 us、sy、st、si、so。同一窗口匯出 p95。備份時段另存。

  2. 2
    分開快取和工作集

    讀 MemAvailable,對照資料庫緩衝池和尖峰實際占用。有 OOM 就留下核心日誌。容器再讀記憶體上限。

  3. 3
    只記資料碟

    跑 iostat -xz 1。記下資料碟的 aqu-sz 和 w_await,並對照慢日誌的 commit。系統碟和備份碟分開。

  4. 4
    收成三行

    每行一條:有或沒有、落在哪些天、p95 是否同向。兩行「有」,再到設定頁比價。一行「有」,先在雲端改規格,下一週重測。

vmstat 1
iostat -xz 1

us 是使用者態,sy 是核心態,id 是閒置,wa 是等待磁碟,st 是 steal。si 和 so 是換入、換出。 容器另外記下 nr_throttled 的增量。缺這一欄,就不要給 CPU 下結論。

換到整臺之後,曲線該落到哪

兩條已經成立,接下來核的是裸機能不能接住。 CPU 是單路 AMD EPYC 7543P,32 核 / 64 執行緒,2.8–3.7 GHz。一個客戶使用這顆 CPU。 宿主系統裡,steal 應接近 0。你自己再切虛擬機時,客戶機裡的 steal 只反映這 32 核怎麼分。

記憶體兩檔:128GB 月租 $465,256GB 月租 $592,都是 DDR4-3200 ECC RDIMM。按尖峰工作集選。工作集清楚落在 128GB 以內,就選 128GB。

硬碟預設是 2 × 1TB NVMe,無硬體 RAID,碟獨立直連,可用容量按 2TB 理解。 佇列若來自網路磁碟,換到本機 NVMe 之後,寫入等待通常會先降下來。降不下來,再查 SQL,或看一顆碟是否不夠。 還可以加 0 到 2 顆 2TB,每顆月租 $83,同樣直連,不會自動併進陣列。要碟級冗餘就自己做軟 RAID,可用容量會回到大約 1TB。備份仍放到機外。

頻寬預設 250 Mbps,不限流量。硬碟佇列是儲存等待,先不要為了 fsync 把頻寬升到 1G(月加 $251)或 2G(月加 $749)。出口流量本身把 250M 打滿,再升頻寬。 預設含 1 個 IPv4。還要位址就按個加,每個月 $2,一臺合計最多 256 個,不按子網打包。 系統可以選 Ubuntu 24.04。要 Windows,再選 Standard,月加 $21,或 Datacenter,月加 $27。Linux 用 SSH,Windows 用 RDP。

月租等於機型價,加上加碟數乘 83、頻寬加價、額外 IP 個數乘 2、系統加價。 應付等於月租乘週期月數。月付、季付、半年付、年付都按這個乘。無安裝費。 實體機部署於日本東京。三條裡若只有硬碟佇列成立,CPU 和記憶體都安靜,仍先把雲端的碟型換到頂,再和 $465 起的月租比較。 工作集和佇列都輕的業務,留在雲端通常更合適。兩條對上,再打開設定頁選 128GB 或 256GB。

獨立伺服器 · 月付起

曲線對上了,到設定頁選記憶體

128GB 或 256GB。硬碟按 2×1TB 直連理解。未登入也可以下單。

$465 / 月起
CPUEPYC 7543P
核心32 核 / 64 執行緒
記憶體128 / 256GB ECC
硬碟2×1TB 直連
機房日本東京
接入SSH / RDP
安裝費無