1

我们使用SecureFileTransferClient类来使用 SFTP 协议传输文件。文件传输中存在一些性能问题(即需要更长的时间)。我们正在寻找提高性能的解决方案。

类:com.enterprisedt.net.ftp.SecureFileTransferClient(版本 4.0.0 Jar)

在创建客户端对象(SecureFileTransferClient)时,我们正在设置基本参数,如超时、用户名、密码、协议、远程主机等。

问题1:是否可以设置其他参数来提高性能(即传输速度)?

问题 2: 作为替代方案,我查看了 SSHFTPClient 类,并且可以使用测试程序传输文件。与 SecureFileTransferClient 类相比,我不确定何时应该使用 SSHFTPClient 类。如果我们使用 SSHFTPClient 类是否可以提高性能?

我的要求是使用 SFTP。所以我不需要更改 SecureFileTransferClient 中非常容易的协议(即通过调用 setProtocol 方法)。使用 SecureFileTransferClient 而不是 SSHFTPClient 还有其他优势吗?

com.enterprisedt.net.ftp.ssh.SSHFTPClient

其他问题:-

3) SecureFileTransferClient 使用的默认加密是什么?是否有设置最快加密对数的选项?

4) 是否有设置缓冲区大小的选项?

5)还有其他提高性能的机制吗?

4

1 回答 1

1

供读者参考,这与商业 Java 文件传输客户端edtFTPj/PRO有关。

首先确认存在性能问题,即检查它与 Filezilla 和 WinSCP 等其他客户端的比较情况。如果存在显着的性能差异,那么应该可以采取一些措施。

SecureFileTransferClient 使用 SSHFTPClient 进行 SFTP,因此最终这两个类的性能应该相同。SecureFileTransferClient 提供连接池和异步方法,因此如果您不需要这些功能,SSHFTPClient 可以单独使用。

最大的性能增强将是允许并行写入上传。您可以使用任一类进行设置(但我认为这是默认设置)。值得检查它是否已启用。

使用的默认加密会产生影响,例如 Blowfish 比 3DES 快。在 SSHFTPClient 中使用 setAlgorithmEnabled 启用/禁用密码。使用 disableAllAlgorithms(SSHFTPAlgorithm.CIPHER) 禁用所有密码,然后启用 Blowfish。服务器当然也必须支持 Blowfish。

实际上,更改缓冲区大小似乎对性能几乎没有影响。但SSH 数据包大小可能会产生影响 - 使用 setMaxPacketSize() 进行实验。尝试从 500 到 64000 的尺寸。

于 2016-08-25T08:47:09.240 回答