サーバーにとって、高品質な回線はマシンとローカルネットワークの接続の上限を確保します。ネットワーク環境の違いにより、同じサーバーのパフォーマンスには明らかな差が出る可能性があるため、最良の体験を得るためには、ローカルでネットワークテストを行い、総合的に比較する必要があります。ネットワークテストは 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: いわゆる ping で、ICMP Echo リクエストの遅延を測定するための最も一般的でデフォルトのプローブです。
- 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]
接收新文章的推送,如果能留言互动就更好了。