我们使用 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)提高绩效的其他任何机制?
答案 0 :(得分:1)
有关读者的信息,这适用于商业Java文件传输客户端edtFTPj/PRO。
首先确认存在性能问题,即检查它与其他客户端(如Filezilla和WinSCP)的比较。如果存在显着的性能差异,那么应该可以做一些事情。
SecureFileTransferClient使用SSHFTPClient进行SFTP,因此最终这两个类的性能应该相同。 SecureFileTransferClient提供连接池和异步方法,因此如果您不需要这些功能,SSHFTPClient可以单独使用。
最大的性能提升将允许上传的并行写入。您可以使用任一类设置它(但我认为这是默认值)。值得检查它已启用。
使用的默认加密会产生影响,例如Blowfish比3DES更快。在SSHFTPClient中,使用setAlgorithmEnabled启用/禁用密码。使用disableAllAlgorithms(SSHFTPAlgorithm.CIPHER)禁用所有密码,然后启用Blowfish。服务器当然也必须支持Blowfish。
实际上,更改缓冲区大小似乎对性能的影响非常小。但 SSH数据包大小会产生影响 - 使用setMaxPacketSize()进行实验。尝试从500到64000的大小。