why is WinSCP so slow

You might find the File transfer speed FAQ on the WinSCP site useful, I'll provide the basics:

The SSH code of WinSCP is based on PuTTY, so file transfers with the SSH-based protocols cannot be expeceted to be faster than PuTTY. So it might be worth trying a file transfer with PuTTY directly to see if it is comparable.

As well as bandwidth, they suggest that there are two common limiting factors in overall connection speed for WinSCP: CPU and Connection Latency.

CPU

Is important because everything that is sent has to be encrypted at one end and decrypted at the other (and potentially compressed as well if that is enabled). If either machine is slow enough (or happens to be working on other things) the overall connection speed will have to be reduced so that CPU can keep up with the encryption / decryption / compression procedures.

The suggestion here is to use a less intensive encryption method (they suggest that using Blowfish is usually faster than AES), try disabling compression and try moving down to SSH-1 if using SSH-2.

Connection Latency

They suggest trying the SCP, protocol instead of SFTP, as SCP is less affected by latency (and they suggestion turning on compression in this case).


See if you have a hard limit in 'transfer', in "preferences/Other preferences". Could happen if that machine have been used/configured by someone else. The VM config could be affecting, too.(or intermediate nodes)


For interest we switched from aes to blowfish and went from 250kb/s to 2mb/sec

our winscp script.txt

# Automatically abort script on errors
option batch abort
# Disable overwrite confirmations that conflict with the previous
option confirm off
# Connect using a password
open sftp://user@pass@server -rawsettings Compression=1 AgentFwd=1 SshProt=1 Cipher=blowfish,aes,3des,WARN,arcfour,des
# Change remote directory
cd /x
# Change local directory
lcd /y
# Force binary mode transfer
option transfer binary
# synchronize
synchronize remote -criteria=size \x /y
#done
exit

with the batch file

"c:\Program Files (x86)\Winscp\winscp" /script:script.txt %1 %2 %3 %4 %5 %6 %7 %8 %9

The best advises given on FAQ - WINSCP SPEED, PLUS - update the WINSCP to latest version.

quote:

When using SSH, file transfers in WinSCP are encrypted and it's CPU intensive. Blowfish is usually a lot faster than AES (so,try BLOWFISH). It may also help if you turn off compression, if you have turned it on before.

In case the speed is throttled by connection latency, it may help if you use SCP protocol instead of SFTP. SCP is less affected by latency. In this case, it may help if you turn on compression.


Use the IP address rather than the domain name when specifying host!

I had 150 KiB/s transfer speed despite transferring between same machines over torrent was 10+ MiB/s. After googling for a while, I got a hint on a forum that I should try specifying the IP address of my server rather than the domain name, I tried that, and voila:

enter image description here

It's now transferring full-throttle of my network capacity, hooray!