VPS 網速測試:用 iperf3、Speedtest CLI 與 curl 測試伺服器頻寬與延遲
完整的 VPS 網速測試要回答兩個問題:伺服器能收發多少頻寬,以及封包在伺服器與使用者之間傳輸要多久。本文說明如何在執行 Debian/Ubuntu 或 CentOS/Rocky/AlmaLinux 的 JUSTG 雲伺服器或獨立伺服器上,使用 iperf3 雙向測試、Speedtest CLI 與 curl 下載來測試伺服器頻寬與延遲,並以 JUSTG 約翰尼斯堡、莫斯科、東京、首爾雲伺服器常見的 500Mbps 連接埠為基準判讀結果。
步驟 1:安裝 iperf3,進行兩台機器間的頻寬測試
iperf3 直接量測兩台您可控制的主機之間的 TCP 吞吐量,中間不經過任何網站或 CDN。JUSTG 伺服器與測試端(另一台伺服器或您的電腦,iperf3 也有 Windows 版)都需要安裝:
# Debian / Ubuntu
apt update && apt install -y iperf3
# CentOS / Rocky Linux / AlmaLinux
dnf install -y iperf3步驟 2:啟動 iperf3 伺服端,並用 -R 測試雙向
在 JUSTG 伺服器上開放 TCP 5201 連接埠,並以伺服端模式啟動 iperf3:
# Debian / Ubuntu with UFW
ufw allow 5201/tcp
# CentOS / Rocky / AlmaLinux with firewalld (until next reload)
firewall-cmd --add-port=5201/tcp
# start the iperf3 server (Ctrl+C to stop)
iperf3 -s在另一台機器執行用戶端。預設由用戶端傳送資料到伺服器(從用戶端看是上傳)。加上 -R 會反轉方向,改由伺服器傳給您,這正是訪客下載網頁與檔案時的方向。-P 4 代表 4 條並行連線,-t 30 代表測試 30 秒。
# upload test: your machine -> JUSTG server
iperf3 -c 203.0.113.10 -P 4 -t 30
# download test: JUSTG server -> your machine (reverse mode)
iperf3 -c 203.0.113.10 -P 4 -t 30 -R請看最後的 [SUM] 行,receiver 的數值才是實際吞吐量,Retr 欄位是 TCP 重傳次數。
[SUM] 0.00-30.00 sec 1.64 GBytes 470 Mbits/sec 15 sender
[SUM] 0.00-30.03 sec 1.64 GBytes 469 Mbits/sec receiverufw delete allow 5201/tcp),避免測試服務長期對外開放。步驟 3:使用 Speedtest CLI(Ookla)或 speedtest-cli
如果沒有第二台機器,連到公開測速伺服器是最快的方法。官方 Ookla Speedtest CLI 需從 Ookla 的套件庫安裝:
# Debian / Ubuntu
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | bash
apt install -y speedtest
# CentOS / Rocky Linux / AlmaLinux
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh | bash
dnf install -y speedtest
# run a test (nearest server), list servers, or pick one by ID
speedtest --accept-license --accept-gdpr
speedtest -L
speedtest -s 12345也可以使用較舊的 Python 工具 speedtest-cli。在 Debian/Ubuntu 上兩者指令名稱相近,請先移除其中一個再安裝另一個。
# Debian / Ubuntu
apt install -y speedtest-cli
# any distribution with Python 3
pip3 install speedtest-cli
speedtest-cli --simple
speedtest-cli --list | head -n 20
speedtest-cli --server 12345 --simple結果很大程度取決於所選的測速節點:忙碌或距離遠的節點即使連接埠正常也可能顯示偏低。建議多試兩三個節點,其中包含靠近使用者的節點。
步驟 4:用 curl 進行下載測速
實際下載檔案可以看出單一 HTTP 連線的速度。從連線良好的鏡像站下載大檔案並直接丟棄:
curl -o /dev/null -w "avg speed: %{speed_download} bytes/s, total: %{time_total}s\n" \
https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xz
# wget prints the speed in MB/s at the end
wget -O /dev/null https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xzcurl 顯示的是每秒位元組數,除以 1,000,000 即為 MB/s,MB/s 乘以 8 即為 Mbps。
步驟 5:對照 500Mbps 連接埠判讀測速結果
- 單位:500Mbps(百萬位元)理論上等於 62.5 MB/s(百萬位元組)。扣除 TCP/IP 開銷後,iperf3 達到約 470 至 480 Mbps,或下載約 55 至 59 MB/s,就代表連接埠已跑滿。
- 單線程與多線程:長距離路徑上,單一 TCP 連線會受延遲限制。若
-P 4明顯比單線程快,表示連接埠正常,瓶頸在往返延遲。 - 方向:上傳與下載的路由不同,速度也可能不同,務必分別測試有無
-R的結果。 - 延遲:iperf3 不量測延遲,請用
ping -c 50測到使用者所在地區,觀察平均值與抖動,而不只是最佳值。 - 另一端:家用網路、Wi-Fi 或忙碌的公開測速節點,常常才是真正的瓶頸。
步驟 6:在尖峰時段測試
國際線路在使用者當地晚上最繁忙。請在該時段重複測試,並與離峰時段比較。以下迴圈可記錄多次結果:
# three tests, 10 minutes apart, saved to a log file
for i in 1 2 3; do date; speedtest-cli --simple; sleep 600; done | tee -a speedtest.log常見問題
500Mbps 的 VPS 測速只有 200 Mbps,是不是有問題?
不一定。請換其他測速節點、用 iperf3 加上 -P 4 測到您可控制的機器,並測反方向。若多種方法都遠低於連接埠速率,請附上輸出結果聯絡技術支援。
為什麼從中國大陸下載比從歐洲慢?
較高的延遲與繁忙的跨境線路會限制單一連線速度。請比較尖峰與離峰結果,並以 MTR 檢查路由。
iperf3 可以一直開著嗎?
建議不要。只在測試時啟動,測完就關閉連接埠。
如仍無法解決,請提交工單聯絡 JUSTG 技術支援,並附上測試輸出與測試時間。