2016-08-23 5 views
1

SFTPプロトコルを使用してファイルを転送するには、SecureFileTransferClientを使用しています。ファイル転送にはパフォーマンス上の問題があります(時間がかかります)。パフォーマンスを改善するソリューションを探しています。SecureFileTransferClientのパフォーマンス改善

クラス:com.enterprisedt.net.ftp.SecureFileTransferClient(バージョン4.0.0ジャー)

クライアントオブジェクト(SecureFileTransferClient)を作成している間、私たちは、タイムアウト、ユーザー名、パスワードなどの基本的なパラメータを設定していますプロトコル、リモートホストなど

質問1:パフォーマンス(転送速度)を向上させるために設定できる他のパラメータはありますか?

質問2: 代わりに、私はSSHFTPClientクラスを見て、テストプログラムを使ってファイルを転送することができます。 SSHFTPClientクラスをSecureFileTransferClientクラスと比較して使用する必要があるかどうかはわかりません。 SSHFTPClientクラスを使用すると、パフォーマンスを改善できるかどうか

私の要件はSFTPを使用することです。だから私はSecureFileTransferClient(setProtocolメソッドを呼び出すなど)で非常に簡単なプロトコルを変更する必要はありません。 SSHFTPClientではなくSecureFileTransferClientを使用する利点はありますか?

com.enterprisedt.net.ftp.ssh.SSHFTPClient

その他の質問: -

3)SecureFileTransferClientで使用されるデフォルトの暗号化とは何ですか?最速暗号化対数を設定するオプションはありますか?

4)バッファサイズを設定するオプションはありますか?

5)パフォーマンスを向上させるための他のメカニズムはありますか?

答えて

1

読者の情報に関しては、市販のJavaファイル転送クライアントであるedtFTPj/PROに関するものです。

最初には、パフォーマンス上の問題があることを確認します。つまり、FilezillaやWinSCPなどの他のクライアントと比較して確認します。パフォーマンスに大きな差がある場合は、そのことについて何かできるはずです。

SecureFileTransferClientはSFTPにSSHFTPClientを使用しているため、最終的にはこれらの2つのクラスのパフォーマンスが同一でなければなりません。 SecureFileTransferClientは接続プーリングと非同期メソッドを提供します。したがって、これらの機能を必要としない場合は、SSHFTPClientを単独で使用すると問題ありません。

パフォーマンスの最大の向上は、アップロードの並列書き込みを許可することです。いずれかのクラスでこれを設定することができます(ただし、デフォルトと思われます)。チェックする価値があります。

デフォルトの暗号化が使用されます。たとえば、Blowfishは3DESよりも高速です。 SSHFTPClientでは、setAlgorithmEnabledを使用して暗号を有効/無効にします。 disableAllAlgorithms(SSHFTPAlgorithm.CIPHER)を使用してすべての暗号を無効にし、Blowfishを有効にします。サーバーはもちろんBlowfishもサポートしなければなりません。

実際には、バッファサイズを変更すると、パフォーマンスにほとんど差がないようです。しかし、SSHパケットサイズが影響を与える可能性があります - 実験にはsetMaxPacketSize()を使用してください。サイズを500から64000まで試してください。

+0

ありがとう!私はSSHFTPClientではsetParallelModeメソッドを見ることができますが、SecureFileTransferClientでは見ることができません。 setMaxPacketSize、setAlgorithmEnabledメソッドと同じです。現在、私たちは主にSecureFileTransferClientでuploadByteArrayを使用していますが、Asyncを使用していますか? – notionquest

+0

はい、あなたが求めているのであれば、uploadByteArrayはuploadByteArrayAsyncを呼び出します。 – HansA

関連する問題