Very slow upload speed

We've a user having an upload performance issues. Using other FTP clients they are getting roughly three times better upload speeds. All tests have been done on the same client machine, with the same FTP server, same network, and the same FTP settings (passive, no encryption or compression, no throttling), and at the same time (to avoid network lag being a factor). The only difference is the FTP client. Several tests where done, all showing the same results. They tried the same tests using the SmartFTP client and got the same results as when using our software which uses the SmartFTP library (v1.5.8.11).

Here are the logs when a non-SmartFTP library client is used:

220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------<EOL>
220-You are user number 1 of 25 allowed.<EOL>
220-Local time is now 01:38. Server port: 21.<EOL>
220-This is a private system - No anonymous login<EOL>
220 You will be disconnected after 2 minutes of inactivity.<EOL>
USER gmxtech<EOL>
331 User gmxtech OK. Password required<EOL>
PASS XXXXXXX<EOL>
230-User gmxtech has group access to: 1000 <EOL>
230 OK. Current restricted directory is /<EOL>
FEAT<EOL>
211-Extensions supported:<EOL> EPRT<EOL> IDLE<EOL> MDTM<EOL> SIZE<EOL> REST STREAM<EOL> MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*;<EOL> MLSD<EOL> ESTP<EOL> PASV<EOL> EPSV<EOL> SPSV<CR><EOL>211 End.<EOL>
TYPE I<EOL>
200 TYPE is now 8-bit binary<EOL>
SYST<EOL>
215 UNIX Type: L8<EOL>
OPTS UTF8 ON<EOL>
500 Unknown command<EOL>
SITE UTF8<EOL>
500 SITE UTF8 is an unknown extension<EOL>
CWD /cmdline<EOL>
250 OK. Current directory is /cmdline<EOL>
PASV<EOL>
227 Entering Passive Mode (XXX,251,98,30,15,188)<EOL>
STOR 10-Velvet_Revolver-You_Got_No_Right.mp3<EOL>
150 Accepted data connection<EOL>
226-File successfully transferred<EOL>
226 21.330 seconds (measured here), 368.59 Kbytes per second<EOL>


Here are the logs when the SmartFTP library is used:


220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 25 allowed.
220-Local time is now 01:43. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 2 minutes of inactivity.
USER gmxtech
331 User gmxtech OK. Password required
PASS (hidden)
230-User gmxtech has group access to: 1000
230 OK. Current restricted directory is /
SYST
215 UNIX Type: L8
FEAT
211-Extensions supported:
EPRT
IDLE
MDTM
SIZE
REST STREAM
MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*;
MLSD
ESTP
PASV
EPSV
SPSV
211 End.
CWD /cmdline
250 OK. Current directory is /cmdline
TYPE I
200 TYPE is now 8-bit binary
PASV
227 Entering Passive Mode (XXX,251,98,30,15,197)
Opening data connection to XXX.251.98.30 Port: 4037
STOR SBSE____.TMP
150 Accepted data connection
8050690 bytes transferred. (117 KB/s) (00:01:07)
226-File successfully transferred
226 67.172 seconds (measured here), 117.04 Kbytes per second


I provided them with a version of our software so they could change the send block size. Here are the results:

buffer size: 2048
8371683 bytes, 118.40KB/sec
8050690 bytes, 118.20KB/sec
5962348 bytes, 118.82KB/sec
5709076 bytes, 118.59KB/sec

buffer size: 4096
8371683 bytes, 122.21KB/sec
8050690 bytes, 122.57KB/sec
5962348 bytes, 123.12KB/sec
5709076 bytes, 121.50KB/sec

buffer size: 8192
8371683 bytes, 163.93KB/sec
8050690 bytes, 169.75KB/sec
5962348 bytes, 165.09KB/sec
5709076 bytes, 167.72KB/sec

buffer size: 16384
8371683 bytes, 195.01KB/sec
8050690 bytes, 194.98KB/sec
5962348 bytes, 194.02KB/sec
5709076 bytes, 194.83KB/sec

buffer size: 24576
8371683 bytes, 195.23KB/sec
8050690 bytes, 194.98KB/sec
5962348 bytes, 194.98KB/sec
5709076 bytes, 195.10KB/sec

buffer size: 32768
8371683 bytes, 118.89KB/sec
8050690 bytes, 118.74KB/sec
5962348 bytes, 118.81KB/sec
5709076 bytes, 118.33KB/sec


So it seems changing the buffer size to 16K does improve performance, but it's still a long way off being optimal. Any ideas what could be causing this?

Thanks

But as I've shown, even after changing the send size it's still a long way off from being optimal. Also, I cannot seriously change the GlobalMaxTcpWindowSize value in the registry (the other FTP clients haven't so I don't see that as a fix).

Hello ..

Try to set the Send Buffer Size and the File Buffer Size to 256KB. In your stats you posted I could only see that you have changed one buffer. But you have to change both.

Regards,
-Mat
SmartFTP

Hi, they ran another test with both changed to the same value and got the same result. Since then we've had yet another person complain about exactly the same problem: it should be uploading at 200K but its 57K, and the problem does not occur with other FTP clients. It cannot be related to the GlobalMaxTcpWindowSize value otherwise all the FTP clients would have the same problem.

If they get back to us (often they just go looking for other software instead of helping us find and fix it) what information do you need to resolve this? What can we ask them to do to help locate the source of the problem?