如何選擇適合遊戲伺服器的 VPS?
遊戲伺服器 VPS 應優先考慮單核心速度與 RAM,並正確規劃容量、連接埠、systemd 重啟與備份;延遲主要取決於伺服器位置。
您指的是哪一類 gaming VPS?
用於遊戲伺服器的 VPS 適合一種用途:在 VPS 上執行 dedicated server,讓您與朋友從各自的電腦連線。若您指的是另一種常見用途,也就是透過 remote desktop 直接在 VPS 上遊玩遊戲,VPS 就不適合。這兩種用途需要的硬體完全不同。dedicated server 需要單核心效能高的 CPU,以及足以容納遊戲世界的 RAM。遊玩遊戲則需要 GPU(graphics processing unit),而標準 VPS 方案通常不提供 GPU。
以下內容都針對第一種用途。第二種用途值得您花兩分鐘先確認,因為許多人會因此買錯伺服器。
為什麼無法在 VPS 上玩遊戲
標準 VPS 只提供虛擬 CPU 核心,不提供顯示卡。實體主機不會將任何硬體直通給 VPS,因此遊戲沒有可使用的硬體渲染器。你可以查看實際取得的裝置:
sudo apt install -y pciutils
lspci | grep -iE "vga|3d"答案是虛擬顯示介面卡,例如 Cirrus Logic 或 virtio GPU 裝置。它的用途是讓供應商的 Web 主控台顯示畫面,背後沒有 3D 加速功能。在此基礎上安裝桌面環境與 VNC server 後,glxinfo -B 會將其渲染器回報為 llvmpipe,也就是 Mesa 在 CPU 上執行的軟體渲染器。由 CPU 執行現代 3D 遊戲的繪圖時,每秒只能產生數個畫格,因此在任何資料離開這台主機前,遊戲就已經無法遊玩。Windows instance 也會遇到相同限制,只是表現方式不同。許多遊戲在啟動時會抱怨無法建立 Direct3D 裝置並直接結束,因為沒有顯示介面卡可供建立裝置。
第二個問題是資料傳回你的裝置。透過遠端主機遊玩時,每個畫格都必須編碼成影片,經由網際網路傳送,再在你的螢幕上解碼。除了遊戲本身的輸入延遲之外,還會增加編碼與解碼所需的時間;而 RDP 與 VNC 原本是為桌面操作設計,不是為每秒 60 個畫格的動態影像設計。雲端遊戲服務透過實體 GPU 與專用串流協定解決這些問題。一般 VPS 兩者皆不具備。若要遊玩,請租用 GPU 運算時間。若要架設服務,請繼續閱讀。
專用遊戲伺服器實際需要的條件
遊戲伺服器是模擬迴圈。它將遊戲世界保留在記憶體中,並以每秒固定次數更新世界狀態。接著,伺服器會將每位已連線玩家可看到的部分傳送給該玩家。
這種運作方式決定了硬體需求。迴圈主要使用單一執行緒,因此核心速度比核心數量重要。遊戲世界存放在記憶體中,因此 RAM 通常是最先達到的限制。遊玩期間磁碟負載較低,但載入與儲存時會較為忙碌。網路路徑決定 ping,升級方案等級也無法改變這點。
單核心速度優於核心數量
多數遊戲伺服器會在一條主要執行緒上推進遊戲世界。Minecraft 的 tick loop 與 Source engine 的伺服器 frame 都採用這種方式。每個 tick 都有完成期限。Minecraft Java 每秒執行 20 次 tick,因此每個 tick 只有 50 毫秒的可用時間。工作量超出期限時,伺服器會準確輸出以下訊息:
[12:04:51] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2547ms or 50 ticks behind這表示其中一條執行緒沒有在期限內完成工作。增加核心不會讓這條執行緒獲得更多時間。配備 2 個高速 vCPU 的方案,能維持某個 tick rate;配備 8 個低速 vCPU 的方案卻可能無法維持,因為那 8 個核心中,只有 1 個負責實際的主要工作。
在決定方案前,先測量單執行緒速度:
sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run查看 events per second 行。這個數字單獨看沒有意義,只有拿來比較才有用,因此請在 2 個候選方案上執行,並將結果並排比較。完整的 VPS benchmark 執行會以相同方式涵蓋磁碟與網路。
額外核心仍然有其用途。它們可以執行第二個遊戲伺服器、資料庫、每晚備份及 chunk 預先產生器,而不會搶占 tick 執行緒的時間。伺服器軟體也逐漸能夠分散工作;Paper 這個熱門的 Minecraft server fork,會將部分工作移出主要 tick 執行緒。因此,應選擇少量高速核心,而不是大量低速核心。
方案頁面上永遠不會顯示一個數字,但它會決定你付費購買的高速核心是否真的由你使用:
vmstat 1 5st 欄位表示虛擬 CPU 準備執行、但實體主機將該核心交給其他使用者的時間百分比。st 長期高於幾個百分點,表示主機超額配置。玩家會感受到卡頓,即使你主機上的 top 仍顯示 CPU 閒置,因為那段閒置時間並不屬於你,無法由你使用。
遊戲伺服器需要多少 RAM?
The data behind this chart
[
{
"label": "Minecraft Java, vanilla",
"players": 10,
"ram_gb": 2
},
{
"label": "Minecraft Java, large modpack",
"players": 10,
"ram_gb": 8
},
{
"label": "Valheim",
"players": 10,
"ram_gb": 4
},
{
"label": "Palworld",
"players": 32,
"ram_gb": 16
}
]以下是遊戲與模組包文件截至 August 2026 公布的起始配置。這些數值是參考值,不是於單一伺服器實測所得。Vanilla Minecraft Java 在約 10 名玩家的情況下,使用 2 GB heap 通常足夠。相同玩家人數若使用大型模組包,則需要 8 GB,因為模組會增加 entity 與產生的結構,這些資料都會載入該 heap。Valheim 列出的最低需求是 2 GB,但使用小型世界的管理員回報,程序穩定後通常接近 3 GB,因此從 4 GB 開始較為合理。Palworld 是例外,其 32 名玩家上限需要 16 GB,這也是 Pocketpair 的建議值。
RAM 不會隨連線數量等比例增加,而是取決於已載入的世界內容。每名玩家都會讓附近的區域保持載入,因此兩名玩家站在一起,所需資源遠低於兩名玩家探索地圖的相對兩端。這就是為什麼「每名玩家所需的 RAM」只能作為粗略參考,而「每個作用中區域所需的 RAM」才是實際的主要因素。小型群組若經常探索,所需資源可能超過原本按照兩倍玩家人數規劃的方案。
Java 伺服器還需要遵守兩項規則。將 heap 的最小值與最大值設為相同數值,讓 JVM 不必暫停來調整 heap 大小:
java -Xms4G -Xmx4G -jar server.jar nogui接著保留足夠的餘裕。JVM 會在指定的 heap 之外使用記憶體,例如 thread stack 與 native buffer;kernel 也需要 page cache,才能快速讀取世界檔案。在 6 GB 的主機上,設定 4 GB heap 是合理的,設定 6 GB heap 則不合適。
兩種記憶體不足的錯誤外觀完全不同,因此應記住這兩段訊息。heap 太小時,錯誤會在 Java 內部發生,而伺服器通常仍會勉強運作:
java.lang.OutOfMemoryError: Java heap space若 heap 大於主機可提供的記憶體,整個程序會由外部終止。主控台只會顯示 Killed,相關證據則位於 kernel log:
sudo dmesg -T | grep -i "out of memory"增加 swap 只能避免程序遭到終止,無法修正根本問題。tick loop 若必須從 swap 讀回世界資料,就會錯過每個期限,因此玩家看到的會是停頓的伺服器,而不是已當機的伺服器。
版本注意事項,截至 August 2026 仍適用:Minecraft Java 1.20.5 及後續版本需要 Java 21。較舊的 runtime 會啟動,接著因 unsupported class file version error 而失敗。這段訊息看起來像 compiler message,第一次遇到時通常會讓人困惑。
sudo apt install -y openjdk-21-jre-headless
java -version遊戲伺服器的磁碟速度重要嗎?
遊戲進行期間,磁碟速度的重要性低於多數人的預期;但在兩個特定時機則非常重要。伺服器啟動時會將世界載入記憶體,執行自動儲存時則會將資料寫回磁碟。因此,磁碟速度會反映在啟動緩慢,以及執行儲存時的暫停。除此之外,大多數讀取都由 RAM 處理。
有兩個因素會讓磁碟的重要性高於上述概括。玩家移動並探索時,伺服器會從磁碟載入新的區塊或區域,而這項讀取會占用 tick 預算。大型世界執行自動儲存時會一次寫入大量資料;在速度較慢的磁碟區上,寫入可能讓迴圈阻塞足夠長的時間,因而輸出上方的 "Can't keep up" 警告。這兩者都是延遲問題,而不是吞吐量問題。因此,VPS 上 NVMe 與 SATA SSD 的差距在此比標示的每秒 MB 數更重要。真正需要關注的是單次小型操作需要多久才能完成。
請依成長需求規劃磁碟區大小。每當有人探索新的位置,世界就會增長;備份則會將這些資料量複製多份。每週執行一次 du -sh world,持續一個月後,就能得知實際的成長速率。
tick rate、ping,以及兩者的差異
tick rate 是伺服器每秒重新計算遊戲世界的次數。Minecraft Java 的 tick rate 為 20。Source engine 伺服器通常為 64。Minecraft 無法透過購買硬體提高這個數值,因為 tick rate 屬於遊戲設計的一部分。因此,目標是維持 20,而不是超過這個數值。
ping 是單一玩家與伺服器之間的往返延遲。這兩種情況會產生不同的問題,因此在花錢升級前,應先區分兩者。伺服器漏掉 tick 時,所有玩家會在同一時間發生 rubber-band,伺服器日誌也會以明確文字記錄這個問題。若某一名玩家的網路路徑較長,只有該玩家會延遲,其他玩家仍能正常遊玩。升級 CPU 永遠無法解決第二種情況。
延遲取決於地理位置,而不是方案等級
光在光纖中的傳輸速度約為每毫秒 200 公里。往返一次需要行經兩倍距離,因此玩家與伺服器每相距 100 km,理論下限約為 1 ms。沒有任何供應商能突破這個限制,升級方案也無法改變它。
The data behind this chart
[
{
"label": "Toronto to New York",
"distance_km": 550,
"rtt_floor_ms": 5.5
},
{
"label": "Dallas to Chicago",
"distance_km": 1290,
"rtt_floor_ms": 12.9
},
{
"label": "Dallas to Los Angeles",
"distance_km": 1990,
"rtt_floor_ms": 19.9
},
{
"label": "New York to London",
"distance_km": 5570,
"rtt_floor_ms": 55.7
},
{
"label": "Los Angeles to Sydney",
"distance_km": 12070,
"rtt_floor_ms": 120.7
}
]這些下限是依大圓距離計算的。實際光纖路徑不會筆直延伸,而且路徑上的每台路由器都會增加少量延遲,因此良好的實際結果通常約為理論下限的兩倍。位於 Toronto 的玩家連線到 New York 的伺服器時,兩者相距 550 km,理論下限為 5.5 ms,通常會看到十幾 ms 的延遲。Los Angeles 到 Sydney 的路徑理論下限為 120.7 ms,再多的費用也無法縮短這段距離。
因此,請將伺服器設在玩家附近。如果玩家群組分隔在海洋兩側,就會有人必須走較長的路徑;通常最公平的做法,是選擇大多數玩家所在的區域。
請測量網路路徑,不要靠猜測:
sudo apt install -y mtr-tiny
mtr -rwzc 100 203.0.113.10先查看最後一行。該行代表伺服器,其封包遺失率與延遲才是決定遊戲體感的數值。若中間某一跳顯示封包遺失,但最後一跳正常,幾乎總是該路由器限制了 ICMP 回應速率。路由器會降低探測封包回覆的優先順序,但仍會正常轉送實際流量。請每位玩家都對伺服器執行測試,因為每個人使用的路徑都不同。
往返延遲下限的計算方式
光在玻璃中的速度約為真空光速的三分之二,換算後接近每毫秒 200 km。往返一次需要行經兩倍距離,因此以毫秒表示的延遲下限,就是單程距離(公里)除以 100。New York 到 London 的距離為 5,570 km,5570 除以 100 等於 55.7 ms。所有實測數值都會高於這個結果,因為海底電纜會沿著海岸線鋪設,路由器也需要時間處理封包。
只開放遊戲需要的連接埠
遊戲伺服器只需要開放 1 或 2 個連接埠,不應開放其他連接埠。常見的預設值如下:
- Minecraft Java Edition:TCP 25565
- Minecraft Bedrock Edition:UDP 19132
- Valheim:UDP 2456 和 UDP 2457
- Palworld:UDP 8211
- Counter-Strike 2 等 Source engine 遊戲:UDP 27015
請查閱遊戲本身的文件,因為有些遊戲會使用額外的查詢連接埠。Valheim 是最明顯的例子:2456 傳輸遊戲流量,2457 回應 Steam server query,讓伺服器顯示在瀏覽器清單中。若以 TCP 開放這些連接埠,不會產生任何效果,因為 Valheim 只使用 UDP。
啟用防火牆前,先允許 SSH,否則會將自己鎖在伺服器外:
sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status verbose許多服務供應商也會在控制面板中提供獨立於伺服器本機防火牆的網路防火牆。在 ufw 中開放但在該防火牆中關閉的連接埠,仍會拒絕連線。從外部看起來,兩種情況的症狀完全相同,因此開始修改設定檔前,請先檢查這兩處。
從另一台機器檢查 TCP 連接埠很簡單:
sudo apt install -y netcat-openbsd
nc -vz 203.0.113.10 25565UDP 無法用相同方式測試。關閉的 UDP 連接埠通常不會回應,因此探測沒有收到回覆時,完全無法判斷原因。請改從伺服器端確認,並查看遊戲程序是否繫結到預期的連接埠:
sudo ss -lunp | grep 2456絕對不要將 RCON(遠端主控台通訊協定)暴露到網際網路。RCON 預設使用連接埠 25575,且只會透過純文字連線傳送單一密碼。請將它繫結至 127.0.0.1,並透過 SSH tunnel 連線。遊戲伺服器也應以專用的非特權使用者執行,這樣 mod 中的錯誤就無法存取機器的其他部分。新 VPS 的前 10 分鐘涵蓋本節預設你已完成的使用者帳號與 SSH 強化設定。
讓伺服器由 systemd 執行並在中斷後重新啟動
在 SSH 工作階段中手動啟動的伺服器,工作階段關閉時會終止,重新開機後也不會自行啟動。systemd 可以同時解決這兩個問題。建立 /etc/systemd/system/minecraft.service:
[Unit]
Description=Minecraft Java server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar server.jar nogui
Restart=on-failure
RestartSec=15
TimeoutStopSec=180
[Install]
WantedBy=multi-user.targetRestart=on-failure 會在伺服器崩潰後重新啟動,正常停止時則保持停止狀態,這正是所需行為。Restart=always 會在你刻意停止伺服器時持續重新啟動,造成干擾。TimeoutStopSec=180 的重要性通常超出預期。systemctl stop 會傳送 SIGTERM;原版 Minecraft 伺服器會接收此訊號,在結束前儲存世界。逾時後,systemd 會改送 SIGKILL。大型世界可能需要超過預設的 90 秒才能完成寫入,而 SIGKILL 發生時尚未寫入磁碟的內容都會遺失。
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo journalctl -u minecraft -f正常啟動時,最後會出現類似 Done (12.345s)! For help, type "help" 的行。如果 unit 在 activating 與 failed 之間反覆切換,journalctl -u minecraft -n 50 會提供原因。通常是 WorkingDirectory 中的路徑錯誤,或 heap 大於主機可用的記憶體。
systemd 不提供互動式主控台,因此應預先規劃。可在 localhost 上使用 RCON 執行命令,或在 tmux 工作階段中執行伺服器;這也能讓 長時間執行的 Claude Code 工作階段在 VPS 上持續運作,不受登入狀態影響。
透過 Steam 發行的遊戲需要先安裝 SteamCMD。Ubuntu 套件是 32 位元二進位檔,因此設定中需要加入架構那一行。略過該行後,apt 會回報找不到可安裝的候選套件:
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd有些遊戲伺服器執行時間越長,記憶體使用量越高。與其視為修正方法,通常會在使用量較低的時段排程重新啟動。由 systemd timer 呼叫 systemctl restart,比使用 cron 項目更容易管理,因為 systemctl list-timers 會清楚顯示下次觸發的時間。
依排程備份世界
遊戲伺服器上的所有內容都可以重新建立,只有世界目錄與玩家資料例外。重新安裝遊戲只需幾分鐘,但重建群組花費數月打造的內容,可能需要數月。
安全的備份應在沒有任何程序寫入資料時進行。將伺服器停止 1 分鐘,是最簡單且最可靠的確保方式:
sudo systemctl stop minecraft
sudo tar czf /var/backups/mc-$(date +%F).tgz -C /opt/minecraft world world_nether world_the_end
sudo systemctl start minecraft如果無法接受每晚暫停伺服器,也可以先 flush 世界資料。在 Minecraft 主控台中,save-off 會停用自動儲存,save-all flush 會寫入所有尚未完成的資料,複製完成後再以 save-on 重新啟用自動儲存。伺服器正在寫入時複製世界,可能會取得只寫入一半的 region file。等到需要還原時,才會發現備份已損毀。
至少保留 1 份備份在伺服器以外的位置。同一磁碟上的備份無法在磁碟故障時保留,而 provider snapshot 只是便利功能,不是真正的備份,因為它仍位於你可能失去的同一個帳戶中。將 restic 備份排程至異地儲存 可處理保留政策與重複資料刪除,因此每晚備份 1 個月的世界副本,也不會填滿你的磁碟區。
接著實際還原 1 次。從未還原過的備份只能算是猜測。將昨晚的封存檔解壓縮到備用目錄,讓測試伺服器使用該目錄,並確認世界可以載入,且建築物仍位於原本的位置。
正式決定前先確認
先購買 1 個月,不要一次購買 1 年,並與實際玩家測試一個晚上。執行單執行緒 sysbench 測試,接著讓每位玩家執行 mtr 連線到伺服器。完整的 VPS 效能測試流程會逐步說明這些工具,並展示不良結果的樣子;VPS 每月實際成本則能協助你確認,付費取得的是限制伺服器效能的資源,而不是方案頁面上標示數值最大的資源。
另外兩篇文章會延續本文未完成的內容。在 VPS 上建置 Minecraft 伺服器是上述內容的逐步版本,並以多數人最先接觸的遊戲為例。若你希望這台伺服器在遊戲之夜以外的時間也能執行實用服務,值得閱讀VPS 可執行的更多服務。
FAQ
我可以在 VPS 上玩遊戲,而不用購買電競電腦嗎?
不行。標準 VPS 沒有 GPU,只有供應商主控台使用的虛擬顯示介面。因此安裝桌面環境後,glxinfo -B 會回報軟體渲染器 llvmpipe,3D 遊戲的執行速度通常只有每秒幾個影格。即使掛載 GPU,遠端遊玩仍會讓每個影格的往返都增加影片編碼與解碼處理,而 RDP 和 VNC 原本就不是為此設計。VPS 適合用來代管群組連線的 dedicated server。如果你的需求是遊玩遊戲,請租用 GPU 運算時間或使用 cloud gaming 服務。
遊戲伺服器需要多少 CPU 核心?
對大多數遊戲而言,2 個高速核心勝過 8 個低速核心,因為世界模擬會在單一主執行緒上運作,額外核心無法協助該執行緒在 50 ms 的期限內完成工作。使用 sysbench cpu --cpu-max-prime=20000 --threads=1 run 比較候選方案,並查看每秒事件數。若同一台機器還要執行第二個伺服器或資料庫,額外核心就值得購買,因為這些工作負載可以在不搶占 tick 執行緒時間的情況下執行。
Minecraft 伺服器需要多少 RAM?
對約有 10 名玩家的 vanilla 世界,需要約 2 GB heap;相同玩家人數下的大型 modpack 則需要 8 GB。將 -Xms 和 -Xmx 設為相同值,並保留 1 GB 至 2 GB 記憶體給作業系統,因為 JVM 會在 heap 之外使用記憶體,而 kernel 也需要 page cache。若 heap 大於機器可用記憶體,kernel 會終止該程序;dmesg 會顯示 out of memory 訊息,而不是 Java 錯誤。
為什麼伺服器還有剩餘 CPU 和 RAM 時,玩家仍會延遲?
有 2 個原因符合這種情況。檢查伺服器日誌中的 Can't keep up! Is the server overloaded?。這表示其他核心閒置時,單一主執行緒仍未能在 50 ms 的 tick 預算內完成工作。若沒有這行訊息,問題就出在網路路徑。請每位玩家針對你的伺服器位址執行 mtr -rwzc 100 203.0.113.10,並查看最後一行。此外,請檢查 vmstat 1 中的 st 欄位:steal time 超過幾個百分點,表示主機過度超售,因此你看到的閒置 CPU 實際上無法使用。
遊戲伺服器需要開放哪些連接埠?
只需要開放遊戲本身使用的連接埠,以及 SSH。Minecraft Java 使用 TCP 25565,Minecraft Bedrock 使用 UDP 19132,Valheim 使用 UDP 2456 和 2457,而 Palworld 使用 UDP 8211。執行 ufw enable 前,先加入 SSH 規則,否則會失去對該機器的存取權。請注意,許多供應商會在控制面板中另外提供一層防火牆,因此連接埠必須在兩處都開放。切勿將 RCON 的 25575 連接埠開放到網際網路,因為它只使用一組以明文傳送的密碼。