Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I have a home Ubuntu server that I use for storage. I have mounted a sftp share on my laptop to access my server but the upload speed I get is very slow (~400kb/s) compared to speeds I usually get when downloading through Bittorrent (~800kb/s). It's kind of weird... I should get higher speeds on a LAN than on the Internet...

How can I speed up uploads to my server and how can I troubleshoot where the bottleneck is?

share|improve this question
add comment

3 Answers

Transfer speeds are hindered by three factors. Bandwidth, Protocol, and Disk speeds.

Bandwidth

This really doesn't seem to to be the issue - as you've mentioned you're on a LAN - ideally there isn't much to go wrong on a LAN except for other users taking more bandwidth on the network or poor reception (be it WIFI or long distance cable).

Protocol

This is where more overhead comes into play. You compared speeds of Bittorrent and SFTP - well those protocols differ extremely. Bittorrent is a highly compressed, multi-threaded, multi-seed (multi-peer) file transfer protocol. SFTP is FTP over SSH which can add some overhead especially when paired with and Bandwidth issues.

Disk

Hard drives are the last thing people suspect with talking about download or upload speeds. However, you can only save (and write) data as fast as your hard drives can spin (unless you're using an SSD (Solid State Disk) in which case this does not pertain to you).

I noticed you mentioned that you can download from Bittorrent to your laptop and experience poor uplink speeds to your server. Have you tried to run speed tests from Internet to your home server? That should help you benchmark speeds from "Internet" to server. Secondly, ensure you don't have any other major traffic on your network when you're running these tests (like having Bittorrent open) as it'll produce invalid results.

share|improve this answer
add comment

It's very possible that you're being limited by the capabilities of the network devices you are using. Keep in mind that given two devices, transfers (upstream or downstream) are going to be limited to the slowest system.

You can look at the output of the ethtool command, which comes from the ethtool package, to see the current state of association and speed for the system and interface you are using. NetworkManager also displays that information in Connection Information...

To speed up transfers, you may also choose to disable compression, disable encryption, or any of such tweaks to ssh/sftp to try to reduce the use of CPU for purposes other than network so that the transfers can go faster.

share|improve this answer
add comment

SSH (and SCP, SFTP) can be very CPU intensive. Check how much CPU is being used by either the client or the server. If they're anywhere near 100%, this is likely the main source of the bottleneck.

You can try using FTP or rsync to compare the results, which will not use encryption for the file transfer.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.