サーバーにとって、高品質な回線はマシンとローカルネットワークの接続の上限を確保します。ネットワーク環境が異なるため、同じサーバーのパフォーマンスには明らかな違いがある可能性があります。したがって、最良の体験を得るためには、ローカルでネットワークテストを行い、総合的に比較する必要があります。ネットワークテストは 2 つのカテゴリに分けられます:
- 瞬時のテスト、遅延、パケットロス、ジッター(揺らぎ)、上下行帯域幅を含む
- 長期的なテスト、日、月、年の周期でネットワークの状況を確認でき、遅延、パケットロス、ジッター(揺らぎ)を含む
以下はネットワーク状況を測定するための主要な指標です。
- 帯域幅(Bandwidth):特定の時間範囲内で、ある点から別の点にデータを伝送できる最大速度を指し、通常はビット毎秒(bps)で測定されます。帯域幅が高いほど、より多くのデータを伝送でき、データ集約型サービスにとって特に重要です。
- スループット(Throughput):単位時間内に成功裏に伝送されたデータ量を指し、ネットワークの帯域幅やその他の要因(例えばエラーレート、ノイズや干渉などによって引き起こされるエラーパケットの比率)に制約されます。
上下行帯域幅は iperf3 を使用してテストすることができ、または操作が簡単な LibreSpeed を使用することもできます。
- 遅延(Latency):遅延はデータがソースから目的地に送信されるのにかかる時間を示し、通常はミリ秒(ms)で測定されます。低遅延は、リアルタイム反応を必要とするアプリケーション(オンラインゲーム、音声またはビデオ通話など)にとって非常に重要です。
- 往復時間(Round Trip Time, RTT):往復時間は、データパケットが送信者から受信者に送信され、再び受信者から送信者に戻るのにかかる総時間です。
- パケットロス率(Packet Loss Rate):パケットロス率は、送信側から受信側にかけて失われたデータパケットの割合を指します。高いパケットロス率は、ネットワーク接続の不安定さを引き起こし、データ伝送の完全性に影響を与える可能性があります。
- ジッター(Jitter):遅延の変動量を指し、データパケットの到着時間の不一致性を示します。
- 可用性(Availability):ネットワークが正常に機能し、サービスを提供できる時間の比率を指します。高い可用性は、ネットワークサービスがより信頼性が高く、ダウンタイムが減少することを意味します。
遅延、パケットロス、ジッターは長期的なデータがより価値があり、ネットワークの状況をピーク時と谷間時のパフォーマンスの変化を確認できます。これを実現するために SmokePing を使用できます。
具体的なアプリケーションシナリオやニーズに応じて、特定の指標が他の指標よりも重要になる場合があります。例えば、リアルタイム通信においては、遅延とジッターの重要性が帯域幅よりも高くなります。一方、ファイル転送においては、帯域幅とスループットがより重要です。
iPerf3#
iPerf3 は専門的なネットワークテストツールで、TCP/IP および UDP/IP プロトコルに基づいて、2 つのネットワークノード間の TCP および UDP ポートのネットワーク帯域幅を測定し、ネットワーク遅延、パケットロス率などの統計情報を提供します。
iPerf3 が動作する際、テストの両端の一方がサーバーとして、もう一方がクライアントとして機能します。プログラム起動のコマンドは同じですが、異なるパラメータを使用してどのような動作モードで実行するかを区別します。通常、最初にサーバー側を起動し、iPerf が特定のポートでリスニングするようにします。その後、クライアント側で対応するコマンドを実行してテストを開始します。
インストール#
テストが必要な 2 台のマシンにそれぞれ iperf3 をインストールします。
すべてのプラットフォームのダウンロードリンク:iPerf - Download iPerf3 and original iPerf pre-compiled binaries
Windows版の iPerf はダウンロードして解凍後、コマンドプロンプトで直接実行できます。
Linux
sudo apt-get install -y iperf3
ダイモードとして実行するかどうかを尋ねられますので、いいえを選択します。
基本的な動作原理に慣れた後は、資料を検索せずに直接パラメータの説明を見れば十分です。
iperf3 --help
iPerf3 サーバー側の使用#
iperf3 サーバーを起動します。
iperf3 --server -i 10 -p 19302
-s, --server
:iperf3 をサーバー側として実行します。-i 10
:レポート間隔を 10 秒に設定し、10 秒ごとにテスト結果を出力します。-p 19302
:使用するポート番号を 19302 に指定します。必要に応じてこのポート番号を変更できます。
複数のクライアントを同時にテストすることはできません。
バックグラウンドで実行し、SSH を切断しても使用できます。
iperf3 --server -D -i 10 -p 19302 --logfile ./iperf.log
-D, --daemon
:バックグラウンドでデーモンモードで iperf3 を実行します。--logfile ./iperf.log
:iperf3 の出力ログを指定したパスのファイル./iperf.log
に記録します。
iPerf3 クライアント側の使用#
iperf3 を実行し、サーバーにデータをアップロードしてテストを行います。60 秒間実行します。
iperf3 --client 192.168.1.51 -p 19302 -t 60 -f M -P 1 --get-server-output
-c, --client 192.168.0.18
:IP アドレス 192.168.0.18 のサーバーに接続します。-p 19302
:使用するポート番号を 19302 に指定します。-t 60
:テストの持続時間を 60 秒に設定します。-f M
:帯域幅の単位をメガバイト(Mbps)に設定します。-P 1
:1 つの同時接続を使用してテストを行います。--get-server-output
:サーバー側の出力情報を取得します。
実際の使用では、変数を先に設定してからテストを行うことを好みます。これにより、サーバーの IP とポートを簡単に変更できます。
server_ip=52.16.84.15
server_port=19302
iperf3 -c ${server_ip} -p ${server_port} -t 60 -f M -P 1 # サーバーにアップロード
このコマンドは最初のコマンドに似ていますが、-R
パラメータを追加することで、逆方向のテストを実行し、サーバーからクライアントへのアップロード速度テストを行います。
iperf3 -c ${server_ip} -p ${server_port} -t 60 -f M -P 1 -R # サーバーからダウンロード
-R
:逆方向のテスト、すなわちサーバーからクライアントへのアップロード速度テストを実行します。クライアントがダウンロード時の速度に相当します。
LibreSpeed#
ブラウザを使用して、現在のネットワークと VPS 間のダウンロード速度、アップロード速度、ping、ジッター(揺らぎ)を検出できます。ブラウザがあるデバイスであれば、どれでも使用できます。
DockerHub:adolfintel/speedtest - Docker Image | Docker Hub 、上記プロジェクトに基づいて構築されたものです。
事前に Docker をインストールし、次のコマンドを実行するだけです:
docker run -d -e MODE=standalone -p 88:80 -it --name speedtest adolfintel/speedtest:latest
http://ip_addr:88
にアクセスし、ブラウザを通じてローカルネットワークとサーバーネットワークの接続品質を測定します。ip_addr
を監視サーバーのアドレスに置き換えます。
テストが完了したら、コンテナを停止し、コンテナとイメージ(478MB、なぜこんなに大きいのか (〝▼皿▼) )を削除します。
docker stop speedtest && docker rm speedtest && docker rmi adolfintel/speedtest
SmokePing#
SmokePing は強力で柔軟なネットワーク遅延監視ツールで、ウェブページで結果を確認できます。AhFei は「随身サーバー」にインストールして使用しており、どこに行っても現在のネットワークと VPS のネットワーク状況を検出できます。
公式サイト:SmokePing - About SmokePing (oetiker.ch)
GitHub:oetiker/SmokePing: The Active Monitoring System (github.com)
linuxserver が構築した Docker イメージ:
- GitHub:linuxserver/docker-smokeping (github.com)
- Dockerhub:linuxserver/smokeping - Docker Image | Docker Hub
Ping だけでなく、SmokePing は多くのツールを使用してネットワークをテストできます。以下は一般的に使用されるものです:
- FPing:ICMP Echo リクエストの遅延を測定するための ping で、最も一般的でデフォルトのプローブです。
- EchoPingHttp:FPing に似ていますが、HTTP リクエストの遅延も測定できます。
- SSH:リモートサーバーに SSH で接続し、接続の遅延を測定します。SSH はブロックされることもあり、時には SSH が接続できないこともありますが、ウェブページはスムーズに開けます。
- DNS:DNS 解決の遅延を測定します。
- SMTP:SMTP メール送信の遅延を測定します。
- TCP:TCP ポートの可用性と応答時間を測定します。
- cURL:HTTP、HTTPS、FTP など、さらに多くのカスタマイズ設定、リクエストヘッダーなどがあります。
- FPing6:IPv6。
単独モード#
インストール手順:ネットワーク遅延監視ツール SmokePing のインストールと設定 - 技焉洲 (vfly2.com)
マスター・スレーブモード#
マスター・スレーブモードでは、スレーブ側はウェブインターフェースを起動せず、マスター側の設定を同期し、マスター側でスレーブのテスト結果を確認できます。
使用説明:LinuxServer イメージに基づく SmokePing マスター・スレーブモードガイド - 技焉洲 (vfly2.com)
下の 2 つ目の
from Home to vfly2
は、家庭サーバーにデプロイされたスレーブ smokeping の監視データです。
原文リンク:https://technique.vfly2.com/2023/07/vps-network-testing-long-term-monitoring/
版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用CC BY-NC-SA 4.0许可协议。转载请注明来源技焉洲 (technique.vfly2.com)。
更新を維持します٩(・̤̀ᵕ・̤́๑)ᵒᵏᵎᵎᵎᵎ明確で実用的なスキルを提供し、RSSで購読するか、ActivityPub をサポートするプラットフォームで@[email protected]
をフォローして新しい記事の通知を受け取ってください。コメントやインタラクションがあればさらに良いです。