2つのDebian Linuxマシンを1ギガビットLANで接続しています。これは、wget
を使用した生のHTTPファイル転送で測定できます。これは、どちらの方向でも約100MB /秒です。
現在scp
を使用している場合、圧縮なしの最大値は約15MB/sです。 -C
フラグを使用して圧縮を有効にすると、内容に応じて最大50MB/sが得られます。
それでもlot帯域幅が無駄になっているようです。非常に大規模なログファイル転送について本当に考えなければならず、scp
がいかに奇妙に遅いかを理解するまで、長い間気にしていませんでした。 scp
を使用するのは自然なことです。会社の環境でも、すべてのインフラストラクチャがセットアップされているためです。
Scpのパフォーマンスをそれほど制限するものは何ですか?暗号化のためにCPUバウンドですか? htop
を使用すると、マルチコアCPUを使用しないようです。4つのCPUのうちの1つだけが最大です。
スループットを上げる方法はありますか?私はHTTPサーバーとsambaを利用できますが、Linuxマシン間でファイルを移動するには、通常はSSHを使用するだけです。しかし、これは今私にそれについて考えさせます、私は大量のデータのための他の転送方法を考慮する必要があるようです。
HTTPはPHP/Java /何でも特定のアプリケーションにのみ使用され、sambaはWindowsマシンからのアクセスが必要な特別な理由で使用されます。
おそらくそれは暗号化です。異なる暗号でscpを試すことができます。次に例を示します。
scp -c arcfour src dest
使用可能な暗号については、ssh_configのマニュアルページを確認してください。 RC4(arcfour)は高速の暗号ですが、おそらくいくつかの代替案ほど安全ではありません。
その一部は、OpenSSHの内部実装に関係している可能性があります。ボトルネックの1つの理由によるきちんとした説明については HPN-SSH を見てください。OpenSSHにパッチを適用してそれを解決できます(ソースからパッチを適用して再構築する場合)。