Our Products:   CompleteFTP  edtFTPnet/Free  edtFTPnet/PRO  edtFTPj/Free  edtFTPj/PRO
0 votes
in Java FTP by (180 points)
We are using the SecureFileTransferClient class to send files to various FTP servers.  We came across an instance where using edtFTPj FTP is roughly 10 times slower than a transfer executed by the native OS's FTP client.

We are running the clients on AIX 7.1 and transferring to another AIX 7.1 FTP server.  There are no hops between the servers.  Both transfers are done using passive mode.  Active mode is strangely 3 times slower than passive mode for the edt client where as active and passive mode have similar rates when using the AIX FTP client.  The rate for the edt client in passive mode is strangely capped at around 7MB/sec.

We've another AIX 7.1 server to test a transfer to, however, the transfer rates for AIX vs edt are comprable (fast) and don't appear capped.  We compared network card settings between the two and the buffers on the slower setup are small than the buffers in the faster setup. MTU for each setup is 1500.  There aren't any other OS-related rate governors enabled.

The edt buffers are not modified from their default settings.  We are on version 4.7.0 running on Java 7.  We have a debugging trace turned on to examine the FTP server interactions and edt client settings.  

We've not sure of what to look at next in terms of comparing the two systems.  Is there any setting in the edt library we can examine or tweak that could give us a hint at what to look at next?  Any other techniques for resolving transfer rate differences?
by (158k points)
I suppose the first thing to do is to change the network card buffers so they are the same to see if that resolves the issue.

You could also use tcpdump to capture the traffic and then analyze with Wireshark - that might show you what the differences are.
by (180 points)
Comparing the tcpdumps of the EDT client and the AIX client shows me that EDT seems to max-out at 32768 bytes per packet of data whereas the AIX client maxes-out at 65160.

The default network buffer size is 131072 for the EDT client.  When I change it to 2097152, the tcpdump shows that the bytes per data packet gets to 65160 like the AIX FTP client.  So it seems like increasing the network buffer size improves the transfer rate when connecting this particular FTP server.  

While this seems obvious, it does not explain why connecting to a different FTP server yields a fast transfer rate when using the default 131072 buffer.

What network settings on the client or server system should you consider when finding a suitable value for the network buffer ?
by (158k points)
Nowadays our recommendation is to stick with the OS defaults unless there's an obvious problem. Many OS's are able to automatically adjust network buffer settings, so setting them isn't really necessary much of the time. In your situation like yours where this is inadequate, trying out a range of values seems to be the best approach.
by (180 points)
I don't think the EDT client defaults are the OS defaults since it is the same when I run it on different systems.  What should be the OS default?  How do I find this out?
by (158k points)
We've recently changed the code so that the defaults are used unless they are set explicitly.  That change is in 5.0.

Please log in or register to answer this question.