2012-03-14 20 views
18

2つのシステム間で大量のデータをネットワーク経由で転送する最善の方法を見つけようとしています。私は現在、FTP、HTTP、またはRSyncのいずれかを調べていますが、どちらが最速であるか不思議です。私はいくつかの答えをオンラインで見て、以下のサイトを見つけた:ネットワーク経由でファイルを転送する最も速い方法(FTP、HTTP、RSyncなど)

問題は、これらが古いということです、そしてどのようにプロトコル間の理論的な違いについて詳しく説明し通信する。私は実際のベンチマークにもっと興味を持っています。具体的な設定では、さまざまなサイズのファイルを転送するときに、あるプロトコルはx%高速で、他のプロトコルは高速です。

誰かがこれをテストし、結果をどこかに投稿しましたか?

+4

多くの小さなファイルでは、FTPは常に非常に遅いです。 – kirilloid

答えて

30

さてさて、私のセットアップので、次のテスト:

  • ハードウェア:2は、RAMの4Gで、インテルCore Duo搭載のCPUの@ 2.33GHzをデスクトップ。
  • OS:両方のマシンのUbuntu 11.10
  • ネットワーク:100Mb専用スイッチ、両方のマシンが接続されています。
  • ソフトウェア:

私は、各サーバーへのファイルの次のグループをアップロード:

  1. 1 100Mファイルを。
  2. 10個のファイルが10個あります。
  3. 100個のファイル。
  4. 1,000,000個のファイルがあります。
  5. 10,000個の10Kファイル。

私は複数の実行(秒単位の数字)に比べて次の平均結果だ:だから

|-----------+---------+----------| 
| File Size | FTP (s) | HTTP (s) | 
|-----------+---------+----------| 
|  100M |  8 |  9 | 
|  10M |  8 |  9 | 
|  1M |  8 |  9 | 
|  100K |  14 |  12 | 
|  10K |  46 |  41 | 
|-----------+---------+----------| 

を、FTPが大きなファイルで若干速いようですし、HTTPは少し速く、多くの小規模ですファイル。全体として、私はそれらが匹敵していると思うし、サーバーの実装はプロトコルよりずっと重要です。

+7

は、scpとrsyncのいくつかの亜種を見るのがいいでしょう。(圧縮の有無、--inplaceなど... :) – ashwoods

+0

また、上記のプロトコルに関することを覚えておいてください。例えばUDPのようなプロトコルのオーバヘッドであり、信頼性の高いネットワーク転送があれば、それはずっと高速になります。ここにStackOverflowの議論があります:http://stackoverflow.com/questions/47903/udp-vs-tcp-how-much-faster-is-it – Mandrake

+0

何年も後、この答えとあなたの努力をありがとうございます。 – rath

3

rsyncは、オプションでデータを圧縮します。これにより、通常は転送が大幅に高速化されます。 rsync -zを参照してください。

scpについては言及していませんでしたが、scp -Cも圧縮されています。

CPUとネットワークリンクの速度によっては、圧縮により転送速度が遅くなる場合があります(または)。 (リンクが遅くCPUが速いほど圧縮は良いアイデアとなり、リンクが速くなりCPUが遅くなると圧縮が悪くなる)最適化と同様に、自分の環境で結果を測定する。

+0

HTTPとFTP;) –

+2

FTPがオプションでデータを圧縮する方法について詳しく教えてください。私はそれに慣れていない。 –

+0

MODE Z –

6

両端のマシンがかなり強力であれば(ネットブック、NASボックス、トースターなどではない)、TCPを介して動作するすべてのプロトコルは、大量のデータを転送する際にほぼ同じ速度で動作することが期待されます。アプリケーションプロトコルの仕事は、実際にTCPを転送するためのバッファを満たすだけなので、TCPをフルに保つことができる限り、TCPはペースを設定します。

圧縮または暗号化を行うプロトコルは、強力でないマシンのCPUでボトルネックになる可能性があります。私のネットブックはSCPよりもはるかに高速にFTPを実行します。

rsyncはインクリメンタルな変更をすばやく送信することを巧妙に行いますが、バルク転送の場合は、ダンベルプロトコルよりも利点がありません。

2

あなたのニーズと設定の答えを知りたい場合は、より具体的にするか、独自のパフォーマンス(信頼性)テストを行う必要があります。それは問題のプロトコルとそれらのコミュニケーションの少なくとも初歩的な理解を持つのに役立ちます、私はあなたが有用なリソースを引用してきた記事を検討するでしょう。これらのプロトコルの初期の発明者がネットワークの影響を低く抑えること、記憶が枯渇していること、CPUサイクルを数えなければならないことなどの制約を知ることもできます。

  • OS /ファイルシステム関連:
    • あなたが同じOS/FSの組み合わせの間でコピーしているか、あなたが持っているんここでは、あなたの状況に合わせた答えを取得したい場合は考えるか答えるためにいくつかのことです受信側で同等のファイルタイプがないなど、非互換性について心配する必要はありませんか?
    • I.e.あなたは輸送に特別なものはありますか?メタデータ、リソース・フォーク、拡張属性、ファイル権限は、選択したプロトコル/ツールでは転送されないか、受信側で無意味である可能性があります。
    • スパースファイルについても同じことが起こり、コピーのもう一方の端でフルサイズに膨らんで、サイジングに関するすべての計画が破損する可能性があります。関連
  • 物理的な制約:
    • ネットワークへの影響
    • CPU負荷は:現代のCPUが倍以下、最も転送プロトコルでは、これらのバックよりも圧縮によって挑戦されているので、今日では、圧縮は、「安い」くらいです設計された。
    • 耐障害性 - 中断された転送があなたを去った場所、または新たに開始したい場所を選択できる必要がありますか?
    • 増分転送、または完全転送?インクリメンタル転送では大きな節約効果がありますか、とにかくタスクの設計によって転送が完全に行われていますか?後者の場合、転送を開始する前に転送リストを構築するためのレイテンシとメモリへの影響は、あまり望ましくないトレードオフになります。
    • 基礎となるネットワークプロトコルで利用できるMTUを利用する際のプロトコルはどれくらい良いですか?
    • テープドライブを受信側でストリーミングするなど、安定したデータストリームを維持する必要がありますか?

考慮すべき事柄がたくさん、と私は上場も完全ではないと確信しています。

4

もう1つのユーティリティは、bbcp:http://www.slac.stanford.edu/~abh/bbcp/です。

いいえ、日付は、それを使用するチュートリアルはここにあります:http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm。私は、bbcpが大容量のファイル(複数のGB)を転送するのに非常に優れていることを発見しました。私の経験では、平均的にrsyncより高速です。

+1

私は十分な評判がなかったので、この余分なリンクを早く追加できませんでした。 これは私がそれについて知ったところです:http://moo.nac.uci.edu/~hjm/HOWTO_move_data.html。このリンクでは、さまざまなプログラムとその長所/短所をお互いに説明しています。 – kadal