{"id":902,"date":"2016-03-23T22:50:40","date_gmt":"2016-03-23T22:50:40","guid":{"rendered":"http:\/\/www.andrewwhyman.com\/blog\/?p=902"},"modified":"2016-03-23T22:50:40","modified_gmt":"2016-03-23T22:50:40","slug":"solution-to-slow-ftp-server-speeds-filezilla-and-others","status":"publish","type":"post","link":"http:\/\/www.andrewwhyman.com\/blog\/servers\/solution-to-slow-ftp-server-speeds-filezilla-and-others\/","title":{"rendered":"Solution to slow FTP Server speeds (Filezilla and others)"},"content":{"rendered":"<p>I recently found that despite having a 70Mbps (8.75MB\/s) internet connection and a 1Gbps (125MB\/s) dedicated server to download from, I could only seem to download from the FTP server at about\u00a016.8Mbps (2.1MB\/s) on a single thread. However over HTTP I could easily manage about 65.6Mbps (8.2MB\/s) on a single thread. This confused me, as there should be no reason why the speeds should differ so wildly. I&#8217;d expect a little difference, but not that much.<\/p>\n<p>After some\u00a0forum discussions on Beta Archive regarding this (I looked into things\u00a0after a user complained about slow speeds), a user told me that he uses IIS FTP Server with no such speed issues. This instantly told me that something wasn&#8217;t implemented or optimised properly on Filezilla and Gene6 FTP Server (the two servers I use). I started looking at the possibilities and quickly found the solution.<\/p>\n<h3>Solution!<\/h3>\n<p>The &#8220;internal transfer buffer size&#8221; and the &#8220;socket buffer size&#8221; values were set quite small on the server at just 32KB and 64KB. There is a notice that says too low or too high can affect transfer speeds. So I did what anyone would do&#8230; I bumped it up about 10 notches to 512KB on both of them! Instantly my transfer speeds hit 65.6Mbps (8.2MB\/s), the same as I was getting over HTTP. Perfect!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-904\" src=\"http:\/\/www.andrewwhyman.com\/blog\/wp-content\/uploads\/2016\/03\/filezilla_ftp_socket_and_buffer_size_options.png\" alt=\"filezilla_ftp_socket_and_buffer_size_options\" width=\"599\" height=\"408\" srcset=\"http:\/\/www.andrewwhyman.com\/blog\/wp-content\/uploads\/2016\/03\/filezilla_ftp_socket_and_buffer_size_options.png 599w, http:\/\/www.andrewwhyman.com\/blog\/wp-content\/uploads\/2016\/03\/filezilla_ftp_socket_and_buffer_size_options-300x204.png 300w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><\/p>\n<h3>More tests<\/h3>\n<p>I did a few more tests to make sure that I didn&#8217;t set it too high or too low, but it seemed OK. Going from 64KB to 128KB made the speed hit about 46.4Mbps (5.8MB\/s). Better, but not good enough. 256KB buffer allowed me to hit 65.6Mbps (8.2MB\/s), which is the maximum I&#8217;m likely to get due to protocol overheads.<\/p>\n<p>Assuming that the buffer size doubling also doubles the speed, a buffer of 512KB should allow up to about 192Mbps (24MB\/s) which really is more than enough for the things I need it to do. Given my connection is much slower than this, and broadband in the UK doesn&#8217;t really hit those speeds either, it should be plenty for now.<\/p>\n<p>Filezilla only allows a maximum buffer size of 999,999 (almost 1024KB or 1MB) so the maximum it should allow (again assuming that the buffer doubling = speed doubling) is about 384Mbps (48MB\/s). Other software might allow higher so by all means use it if you need to.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently found that despite having a 70Mbps (8.75MB\/s) internet connection and a 1Gbps (125MB\/s) dedicated server to download from, I could only seem to download from the FTP server at about\u00a016.8Mbps (2.1MB\/s) on a single thread. However over HTTP I could easily manage about 65.6Mbps (8.2MB\/s) on a single thread. This confused me, as [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"amp_status":"","footnotes":""},"categories":[10],"tags":[],"class_list":["post-902","post","type-post","status-publish","format-standard","hentry","category-servers"],"_links":{"self":[{"href":"http:\/\/www.andrewwhyman.com\/blog\/wp-json\/wp\/v2\/posts\/902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.andrewwhyman.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andrewwhyman.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andrewwhyman.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andrewwhyman.com\/blog\/wp-json\/wp\/v2\/comments?post=902"}],"version-history":[{"count":4,"href":"http:\/\/www.andrewwhyman.com\/blog\/wp-json\/wp\/v2\/posts\/902\/revisions"}],"predecessor-version":[{"id":908,"href":"http:\/\/www.andrewwhyman.com\/blog\/wp-json\/wp\/v2\/posts\/902\/revisions\/908"}],"wp:attachment":[{"href":"http:\/\/www.andrewwhyman.com\/blog\/wp-json\/wp\/v2\/media?parent=902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andrewwhyman.com\/blog\/wp-json\/wp\/v2\/categories?post=902"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andrewwhyman.com\/blog\/wp-json\/wp\/v2\/tags?post=902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}