2BrightSparks
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
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