【问题标题】:SecureFileTransferClient performance improvementsSecureFileTransferClient 性能改进
【发布时间】:2016-12-30 11:53:57
【问题描述】:

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

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

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

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

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

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

com.enterprisedt.net.ftp.ssh.SSHFTPClient

其他问题:-

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

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

5) 有什么其他机制可以提高性能?

【问题讨论】:

    标签: java ftp sftp ftp-client enterprisedt


    【解决方案1】:

    供读者参考,本文涉及商业Java文件传输客户端edtFTPj/PRO

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

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

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

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

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

    【讨论】:

    • 谢谢!我可以在 SSHFTPClient 中看到 setParallelMode 方法,但在 SecureFileTransferClient 上看不到。 setMaxPacketSize、setAlgorithmEnabled 方法也一样。目前我们主要在SecureFileTransferClient中使用uploadByteArray,是否使用Async?
    • 是的,uploadByteArray 调用uploadByteArrayAsync,如果这就是你的要求。
    猜你喜欢
    • 2019-12-25
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 2010-11-01
    相关资源
    最近更新 更多