VPS 速度テスト:iperf3・Speedtest CLI・curl でサーバーの帯域幅とレイテンシを測定する方法

9 分で読めます 7 回閲覧 0
目次

きちんとした VPS 速度テストでは、サーバーがどれだけの帯域幅で送受信できるか、そしてサーバーとユーザーの間をパケットがどれくらいの速さで往復するかの 2 点を確認します。このガイドでは、Debian/Ubuntu または CentOS/Rocky/AlmaLinux の JUSTG クラウドサーバー・専用サーバーで、iperf3 の双方向テスト、Speedtest CLI、curl によるダウンロードを使って帯域幅とレイテンシを測定する方法と、ヨハネスブルグ・モスクワ・東京・ソウルのクラウドサーバーで一般的な 500Mbps ポートを基準にした結果の読み方を説明します。

ステップ1:2 台間の帯域幅テスト用に iperf3 をインストール

iperf3 は、自分で管理する 2 台のホスト間の TCP スループットを、Web サイトや CDN を介さずに測定します。JUSTG サーバーと、テスト元のマシン(別のサーバーや手元の PC。Windows 版の iperf3 もあります)の両方に必要です。

# 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        receiver
テストが終わったら Ctrl+C で iperf3 を停止し、5201 番ポートを再び閉じてください(例:ufw delete allow 5201/tcp)。テスト用サービスをインターネットに開いたままにしないためです。

ステップ3:Speedtest CLI(Ookla)または speedtest-cli を使う

2 台目のマシンがない場合は、公開スピードテストサーバーを使うのが手軽です。公式の 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

結果は選んだテストサーバーに大きく左右されます。混雑したノードや遠いノードでは、ポートに問題がなくても低い数値が出ることがあります。ユーザーに近いノードを含め、2〜3 か所で試しましょう。

ステップ4:curl でダウンロード速度をテスト

実際のファイルダウンロードでは、1 本の 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.xz

curl の表示はバイト毎秒です。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 出ていればポートを使い切っています。
  • 単一ストリームと並列:長距離の経路では、1 本の 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 なのに Speedtest で 200 Mbps しか出ません。異常ですか?

必ずしもそうではありません。別のテストサーバーを試し、自分で管理するマシンへ iperf3 の -P 4 で測定し、逆方向も確認してください。複数の方法でポート速度を大きく下回る場合は、出力を添えてサポートへご連絡ください。

中国からのダウンロードがヨーロッパより遅いのはなぜですか?

遅延が大きく、国際回線が混雑しているため、1 本の接続の速度が制限されます。ピーク時とオフピーク時を比較し、MTR で経路も確認しましょう。

iperf3 を常時起動したままにしてもよいですか?

おすすめしません。テスト中だけ起動し、終わったらポートを閉じてください。

それでも解決しない場合は、テスト結果と実施時刻を添えてチケットを送信し、JUSTG テクニカルサポートにお問い合わせください。

この回答は役に立ちましたか?