Test your server's upload and download speed

Discussion in 'Tutorials and Guides' started by black, Sep 25, 2013.

  1. black

    black New Member

    39
    13
    Sep 25, 2013
    wget dl.getipaddr.net/speedtest.sh 2>/dev/null -O- | bash

    or

    curl -s dl.getipaddr.net/speedtest.sh -o- | bash

    I decided to create a script that tests the server's download speed as well as upload. To me, this has been something that's long overdue and I'm surprised that no one has done it yet.

    Unlike speedtestcli (the python script) which interfaces with speedtest.net, this one uses way less RAM.

    There's a few options like force 100MB file size tests instead, instructions on how to do that can be found here.

    Let me know if you guys have any issues. If it's security related, please send it to me via PM.
     
    Last edited by a moderator: Sep 25, 2013
    MannDude likes this.
  2. drmike

    drmike 100% Tier-1 Gogent

    8,573
    2,709
    May 13, 2013
    Thanks! Interesting new script.

    Folks will need to install bc and curl....     The script notes this at runtime  :)

    So far, unimpressed with speeds I am seeing.  Unsure about to test other locations to see how the results compare.
     
    Last edited by a moderator: Sep 25, 2013
  3. NodeBytes

    NodeBytes Dedi Addict

    687
    92
    May 15, 2013
    Testing US locations

    Speedtest from Houston, TX, USA on a shared 1 Gbps port

    Download Speed: 4.66 MB/sec

    Upload speed: 9.14 MB/sec

    Speedtest from Los Angeles, CA, USA [ generously donated by http://maximumvps.net ] on a shared 1 Gbps port

    Download Speed: 6.34 MB/sec

    Upload speed: 5.67 MB/sec

    Speedtest from Dallas, TX, USA on a shared 4x1 Gbps port

    Download Speed: 5.77 MB/sec

    Upload speed: 10.72 MB/sec

     

    Testing EU locations

    Speedtest from Tallinn, Estonia on a shared 1 Gbps port

    Download Speed: 1.38 MB/sec

    Upload speed: 3.29 MB/sec
     
  4. black

    black New Member

    39
    13
    Sep 25, 2013
    Correct. Bc was needed for accuracy to 2 decimal places; Bash's built in only has integer division. I only have 2 spare VPSes dedicated to this. If are people willing to donate a container, I'd be happy to add it to the list.
     
    Last edited by a moderator: Sep 25, 2013
    drmike likes this.
  5. NodeBytes

    NodeBytes Dedi Addict

    687
    92
    May 15, 2013
    I'll donate one. PM Me.
     
    black likes this.
  6. KuJoe

    KuJoe New Member Verified Provider

    1,759
    1,318
    May 17, 2013
    Typo in the script. ;)
     

    Not a big deal but just an FYI for those OCD peoples out there.  :wacko:
     
    Last edited by a moderator: Sep 25, 2013
    drmike likes this.
  7. KuJoe

    KuJoe New Member Verified Provider

    1,759
    1,318
    May 17, 2013
    Code:
    
    Forcing 100MB speed test
    Testing US locations
    Speedtest from Houston, TX, USA on a shared 1 Gbps port
            Download Speed: 17.27 MB/sec
            Upload speed: 28.48 MB/sec
    Speedtest from Los Angeles, CA, USA [ generously donated by http://maximumvps.net ] on a shared 1 Gbps port
            Download Speed: 13.05 MB/sec
            Upload speed: 13.61 MB/sec
    Speedtest from Dallas, TX, USA on a shared 4x1 Gbps port
            Download Speed: 20.78 MB/sec
            Upload speed: 41.04 MB/sec
     
    Testing EU locations
    Speedtest from Tallinn, Estonia on a shared 1 Gbps port
            Download Speed: 5.04 MB/sec
            Upload speed: 7.56 MB/sec
    
     
    Last edited by a moderator: Sep 25, 2013
  8. black

    black New Member

    39
    13
    Sep 25, 2013
    I happen to be one of those OCD people :p

    Correct. It's probably easier if someone does a local touch instead of me serving them a blank file. I'll update the options page to reflect that. Thanks!
     
    Last edited by a moderator: Sep 25, 2013
  9. blergh

    blergh New Member Verified Provider

    654
    209
    Apr 10, 2013
    Interesting script indeed, good work!

    Is this list of the providers used for the mirrors correct?

    vmPort - Houston, TX

    maximumvps - Los Angeles, CA

    Incero - Dallas, TX

    WaveCom - Tallin, EE
     
    Last edited by a moderator: Sep 25, 2013
  10. KuJoe

    KuJoe New Member Verified Provider

    1,759
    1,318
    May 17, 2013
    The IPs are in the file if you want to do a whois on them.
     
  11. Enterprisevpssolutions

    Enterprisevpssolutions Article Submitter Verified Provider

    242
    29
    May 22, 2013
    spun up a quick centos 6.4. Not bad you can also use the server-bear scripts for testing the whole vps system not just network speed. https://github.com/Crowd9/Benchmark
     
  12. black

    black New Member

    39
    13
    Sep 25, 2013
    Correct. Serverbear incorporates various benchmark tools that are known and outputs it a user-friendly format. What I aimed to achieve with this script is to get a complete picture of the network utilization. I believe that VPS owners have a false sense of their network capabilities if they are only testing the download speed.

    In the US on a residential plan for an ISP, the download speed far exceeds the upload speed. That's because the ISP expects an end user to be downloading content more often than uploading, which suggests that download speeds are more important. Conversely, shouldn't a server's upload speed be more important than the download one, or at least as equal as the download speed, since it's purpose is to serve content? Yet people still think "well, my wget to cachefly is good, my network speed must be good."
     
    Aldryic C'boas likes this.
  13. drmike

    drmike 100% Tier-1 Gogent

    8,573
    2,709
    May 13, 2013
    Any reason why this script should perform poorly on say a Debian install inside OpenVZ?

    Speeds I am getting from a number of providers under such environment are disturbingly slow.

    In contrast, a dedicated server:

    touch FORCE100MBFILESPEEDTEST && wget dl.getipaddr.net/speedtest.sh 2>/dev/null -O- | bash
    Forcing 100MB speed test
    Testing US locations
    Speedtest from Houston, TX, USA on a shared 1 Gbps port
    Download Speed: 29.35 MB/sec
    Upload speed: 42.33 MB/sec
    Speedtest from Los Angeles, CA, USA [ generously donated by http://maximumvps.net ] on a shared 1 Gbps port
    Download Speed: 23.89 MB/sec
    Upload speed: 28.86 MB/sec
    Speedtest from South Bend, Indiana, USA [ generously donated by NodeBytes ] on a shared 100 Mbps port
    Download Speed: 12.11 MB/sec
    Upload speed: 19.78 MB/sec
    Speedtest from Dallas, TX, USA on a shared 4x1 Gbps port
    Download Speed: 31.93 MB/sec
    Upload speed: 64.31 MB/sec

    Testing EU locations
    Speedtest from Tallinn, Estonia on a shared 1 Gbps port
    Download Speed: 5.47 MB/sec
    Upload speed: 8.14 MB/sec
     
  14. black

    black New Member

    39
    13
    Sep 25, 2013
    I looked into this.

    From my tinyvz container


    Forcing 100MB speed test
    Testing US locations
    Speedtest from Houston, TX, USA on a shared 1 Gbps port
    Download Speed: 28.32 MB/sec
    Upload speed: 22.35 MB/sec
    Speedtest from Los Angeles, CA, USA [ generously donated by http://maximumvps.net ] on a shared 1 Gbps port
    Download Speed: 28.77 MB/sec
    Upload speed: 9.80 MB/sec
    Speedtest from South Bend, Indiana, USA [ generously donated by NodeBytes ] on a shared 100 Mbps port
    Download Speed: 12.10 MB/sec
    Upload speed: 12.71 MB/sec
    Speedtest from Dallas, TX, USA on a shared 4x1 Gbps port
    Download Speed: 23.63 MB/sec
    Upload speed: 36.06 MB/sec

    Testing EU locations
    Speedtest from Tallinn, Estonia on a shared 1 Gbps port
    Download Speed: 5.83 MB/sec
    Upload speed: 6.38 MB/sec

    Results seem ok. Tinyvz doesn't use solusVM as their control panel and I remember solus having ways to throttle your connection so there might be something there? There might be some host OS tcp tuning?

    My tinyvz container runs on debian 6 with kernel 2.6.27 #1 SMP Mon May 9 13:27:11 CEST 2011 i686 GNU/Linux.

    Remember that this is all done via http, a higher layer on the OSI model so the speed test servers make no distinction between which visualization you use (simply because it doesn't know).

    The problem would most likely reside in the ovz container or the host node of your ovz container. It's also a good bet that since the speedtest servers are giving you low results, your clients (the people you're serving on that particular openvz container) are getting those speeds as well.
     
    Last edited by a moderator: Sep 26, 2013
  15. bizzard

    bizzard Active Member

    238
    46
    May 16, 2013
    This is what I get on my BlueVM VPS at located at CA, USA


     
  16. WSWD

    WSWD Active Member Verified Provider

    217
    103
    May 30, 2013
    Honestly, the servers being used as test servers don't appear to be the greatest, or are being overloaded with all of us testing.  Even my in-network speeds (Incero - Incero, Quadranet - Quadranet) aren't terribly great, and I know it's not my servers! ;)

    Doesn't explain the Debian issue though...
     
    Last edited by a moderator: Sep 26, 2013
  17. black

    black New Member

    39
    13
    Sep 25, 2013
    I wish I had money for dedicated pipes :(
     
  18. WSWD

    WSWD Active Member Verified Provider

    217
    103
    May 30, 2013
    I hear ya!  My only point is that if people are actually using this script to troubleshoot their own servers or get much useful information, don't.  From my limited testing yesterday, the numbers are simply not realistic, I'm guessing due to the overload.  It's just not a realistic speed test.
     
  19. IslandGalPal

    IslandGalPal New Member

    1
    0
    Oct 5, 2013
    Hi there, I'm in Idaho, Speedtest Seattle. Sorry I'm new. Can't seem to attach a file -  anyway

    my download was 46.53Mbps and upload was 2.37Mbps
     
    Last edited by a moderator: Oct 5, 2013
  20. black

    black New Member

    39
    13
    Sep 25, 2013
    The speedtest VM container that was donated to me in Idaho said it was 100 Mbps connection so that's what I put in the script. Is that what you were referring to?