How to make transfers faster

Everyone wants fast transfers, and edtFTPj/PRO is configured by default to support fast transfers in most situations. There will, however, be times when particular situations require some performance tuning.

It should be noted that the FTP/FTPS protocols operate very differently to SFTP, and so what works for FTP/FTPS may not work for SFTP. SFTP is message based, so all reads and writes of remote files are sent as messages that require acknowledgements. FTP/FTPS simply writes data to or reads data from a socket in a continuous stream. It might be that different settings are necessary to optimize different protocols.

Before attempting to tune edtFTPj/PRO, it is worth trying a few other FTP clients to get an indication of whether improvements are possible. Filezilla, WinSCP and Unix clients such as lftp and ncftp can be used for comparison. If speeds are comparable, large improvements are not to be expected.

Logging and monitoring

To ensure maximum performance, the logging level should be set to INFO rather than DEBUG or ALL. This applies to all protocols - in particular the ALL level can slow transfers down considerably. If the monitor interval is set too low via setMonitorInterval, this could also impact performance.

Application buffers

Data is read from sockets and files into transfer buffers, and the size of these buffers can be adjusted via setTransferBufferSize. If transfers seem too slow, it is worth trying values from 2^12 (4096) up to 2^19 (524288).

TCP/IP buffers

TCP/IP socket buffer sizes can have a considerable effect on transfer speeds for high performance (GBbs) networks. For these networks it may be necessary to increase the read and write buffer sizes via setNetworkBufferSize. Try values from 2^16 (65536) up to 2^19 (524288). Note that currently these methods are not available for SFTP.

SFTP Settings

There are some specific settings for SFTP which should be tried if transfers seem too slow. By default, parallel writes are used (setParallelMode), speeding up transfers, but there are some servers that cannot cope with parallel writes and require this setting to be disabled. The SSH packet size can be varied, from the default of 32K up to 64K and down to much smaller values, e.g. 4096 (setMaxPacketSize).