2つのシステム間でネットワークを介して大量のデータを転送する最良の方法を見つけようとしています。現在、FTP、HTTP、またはRSyncのいずれかを検討していますが、どちらが最も速いのか疑問に思っています。いくつかの回答をオンラインで探したところ、次のサイトが見つかりました。
問題は、これらが古く、プロトコルの通信方法の理論的な違いについて詳しく説明していることです。実際のベンチマークにもっと興味があります。つまり、特定のセットアップでは、さまざまなサイズのファイルを転送するとき、1つのプロトコルが他のプロトコルよりもx%高速です。
誰かがこれらをテストし、結果をどこかに投稿しましたか?
それでは、次のテストをセットアップします。
次のファイルグループを各サーバーにアップロードしました。
複数の実行で次の平均結果を得ました(秒単位の数値):
|-----------+---------+----------|
| File Size | FTP (s) | HTTP (s) |
|-----------+---------+----------|
| 100M | 8 | 9 |
| 10M | 8 | 9 |
| 1M | 8 | 9 |
| 100K | 14 | 12 |
| 10K | 46 | 41 |
|-----------+---------+----------|
したがって、大きなファイルではFTPがわずかに速く、多くの小さなファイルではHTTPが少し速いようです。全体として、それらは同等であり、サーバーの実装はプロトコルよりもはるかに重要だと思います。
両端のマシンがかなり強力な場合(つまり、ネットブック、NASボックス、トースターなどではない場合)、TCPで動作するすべてのプロトコルがほぼ同じ速度になると思います。バルクデータの転送時。アプリケーションプロトコルの仕事は、TCPが転送するためにバッファを一杯にすることです。したがって、TCPがいっぱいになるようにペースを設定します。
圧縮または暗号化を行うプロトコルは、性能の低いマシンのCPUでボトルネックになる場合があります。私のネットブックはSCPよりもはるかに高速にFTPを実行します。
rsyncはインクリメンタルな変更を迅速に送信するために巧妙なことを行いますが、バルク転送の場合は、dumbプロトコルよりも利点はありません。
考慮すべきもう1つのユーティリティはbbcpです。 http://www.slac.stanford.edu/~abh/bbcp/ 。
これを使用するための優れた、しかし古くなったチュートリアルは、ここにあります: http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm bbcpは大きなファイル(複数のGB)の転送に非常に優れていることがわかりました。私の経験では、平均してrsyncよりも高速です。
ニーズと設定に対する答えを知りたい場合は、より具体的にするか、独自のパフォーマンス(および信頼性)テストを行う必要があります。問題のプロトコルとその通信について少なくとも初歩的な理解を得るのに役立ちますので、引用されている記事は有用なリソースであると考えます。また、これらのプロトコルの初期の発明者が直面した制限を知るのに役立ちます-ネットワークへの影響を低く抑えることを目的としたのか、メモリ不足に陥るのか、CPUサイクルをカウントする必要があるのか?状況に応じた回答を取得したい場合、考慮または回答すべき事項をいくつか示します。
考慮すべきことがたくさんありますが、リストは完全ではありません。