為作業系統、持久性服務與具餘裕的真實並行度選擇記憶體。在測量哪些工作繁忙、是否平行執行,以及使用者實際經歷哪些延遲之後,再選擇 CPU。
分別描述正常工作與尖峰工作
單憑訪客人數是薄弱的規模規劃輸入。一個請求可能提供快取的檔案,另一個則產生報告或查詢許多資料表。列出將共用 VPS 的 Web worker、資料庫、快取、佇列消費者與維護工作。描述正常並行度與預期最繁忙的操作。納入排定的匯出、套件更新與部署,而不是將它們視為隱形的背景活動。
對於現有專案,收集包含尖峰時窗的具代表性期間。將回應時間與錯誤連同資源使用量一併記錄。對於新專案,建立具有真實請求形態與資料大小的小型測試。你的初始估計不會完美;有用的目標是一個有文件記載的起點,可在交付後與實測行為比較。
在新增處理程序之前建立記憶體預算
記憶體需求來自系統、持久性應用程式服務、每個 worker 的使用量與臨時操作。將 worker 的佔用量乘以規劃的並行度是粗略的規劃工具,不是保證,因為共用記憶體與快取會使總量變得複雜。在負載下觀察實際處理程序。留下足夠空間,讓維護工作不會迫使應用程式爭奪每一個剩餘分頁。
資料庫設定可能意外地倍增記憶體使用量。PostgreSQL 的文件說明 work_mem 適用於查詢操作,而多個操作或工作階段可能同時執行。因此,單獨看起來不大的設定可能對系統造成更大的影響。閱讀你的資料庫自身指引、測試真實並行度,並避免將每個廣告中的 GB 都分配給單一快取。
區分 CPU 使用率與有效平行度
處理器數量告訴你呈現給客體多少執行資源,而不是你的軟體能多有效率地使用它們。一個繁忙的執行緒可能限制應用程式,而其他核心仍保持安靜。增加 worker 有助於獨立請求,但也可能增加資料庫競爭與記憶體需求。在假設核心數加倍就能讓輸送量加倍之前,先檢查應用程式的並行模型。
KVM 為虛擬機器提供自己的虛擬硬體。它不會讓每個 vCPU 標示在不同主機與處理器世代之間成為相同的基準。在可取得時比較列出的 CPU 型號與配置條款,然後以自己的工作負載評估服務。避免從與應用程式不相像的簡短合成分數得出採購結論。
尋找壓力與等待,而不只是平均值
系統可能感覺緩慢,卻沒有維持很高的平均 CPU 百分比。處理程序可能等待儲存、記憶體回收或另一個服務。在支援的系統上,Linux 核心的 Pressure Stall Information 會揭露 CPU、記憶體與 I/O 停滯資訊。這些訊號可協助連同正常使用率指標與應用程式計時一起辨識資源競爭。
一起閱讀各項指標。持續的記憶體壓力、交換、配置失敗與緩慢請求所指向的干預措施,與單一繁忙的運算 worker 不同。儲存等待可能需要調整查詢或不同的磁碟設定檔。外部 API 延遲不會因為增加本機 RAM 而修復。在選擇要增加哪項資源之前,先說明觀察到的限制。
| 觀察到的行為 | 要調查的問題 | 可能的下一步 |
|---|---|---|
| 一個執行緒繁忙,備用核心安靜 | 這項工作可以平行執行嗎? | 改善工作或變更 worker 設計 |
| 產生報告期間的記憶體壓力 | 有多少操作重疊? | 限制並行度或增加經過測試的餘裕 |
| 請求緩慢且有 I/O 等待 | 哪些讀取或寫入被延遲? | 檢查查詢與儲存行為 |
| CPU 與記憶體偏低,請求緩慢 | 是否有相依性延遲回應? | 測量下游呼叫 |
附有明確假設的規劃範例
想像一個小型應用程式,有兩個 Web worker、一個資料庫與一個佇列消費者。團隊在一般請求與產生報告的工作期間測量這些服務。它發現允許同時產生四份報告會大幅提高記憶體需求,同時延遲正常流量。團隊沒有立即購買最大的方案,而是限制報告並行度並再次測量結果。
如果調整後的工作負載仍需要更多記憶體,升級現在就能回應觀察到的需求。如果佇列仍受 CPU 限制,且獨立工作可以並行執行,更多執行資源可能合適。這些是示例決策,不是 SwissOctet 方案的效能數字。將你自己的測量與限制連同所選設定一併保留。
為下一次測量留下清楚的路徑
定義會觸發檢視的徵兆:回應時間變差、反覆出現記憶體壓力、佇列持續成長或工作負載改變。讓監控保持足夠輕量,以免它本身成為新的瓶頸。新增功能或大型資料集後重新評估,並避免在真正的問題是無界流程或慢查詢時反覆升級。
SwissOctet 的 VPS 系列會列出 CPU 與記憶體規格,以及可選的資源選項。新增額外項目後,請閱讀最終配置,包括計費週期與總計。在依賴升級安排之前,請與實際營運方確認。實用的 VPS 大小,是能在合理餘裕下執行實測工作負載,並有可理解的下一步。
您的實用檢查清單。
- 盤點服務與維護工作。
- 測量正常與尖峰時段的並行量。
- 為持久與臨時記憶體編列預算。
- 檢查 CPU 工作能否平行執行。
- 比較壓力、使用率與應用程式計時。
- 定義何時檢視配置。
重要細節。
我應該依每月訪客數來決定 VPS 的大小嗎?+
把訪客數當作背景資訊,然後測量請求複雜度、並行量、資料大小與背景工作。相同的訪客數可能產生不同的負載。
更多 RAM 一定讓服務更快嗎?+
不會。當記憶體是限制因素,或能實現有用的快取時,它會有幫助,但無法解決所有 CPU、儲存或外部相依性的延遲。
vCPU 數量加倍會讓效能加倍嗎?+
不會。平行處理、處理器特性、資源競爭與應用程式設計,決定額外容量有多少用處。
前往來源。
這些參考資料支持本指南中的技術概念。在變更生產系統之前,請遵循最新文件。
- Linux 核心:壓力停滯資訊 docs.kernel.org
- PostgreSQL:資源消耗 www.postgresql.org
- KVM 專案:核心虛擬機器 www.linux-kvm.org
由 SwissOctet 提供的編輯指引。範例僅供說明。服務規格、可用選項與合約條件必須另行驗證。