Amazon AWS EC2 vs Linode vs Digitalocean: Cloudserver showdown

I have experience with amazon’s AWS cloudservices for years now, but still have problems with EBS (=amazon network storage) performance.  It is not very fast and if you just want to run a simple LAMP server it requires a lot of work and experience to set it up the right way. But how fast is it? How does it compare to the offerings from Linode and the new kid on the block: digitalocean?  Both have their advantages: Linode has it’s standard 8 core architecture and RAID. digitalocean has fast SSD disks. But how do they stack up against amazon?

Compare same-priced offerings.

To compare apples with apples instead of oranges, I decided to test the following offerings:

– Amazon Small instance –  (with high-utilisation reserved instance) $24 per month.

– Linode 1Gb plan – Costs $20 per month

– Digitalocean $20 plan.

What do they offer for this price?

Amazon: 1.7 GiB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of local instance storage. But the local storage can not be used for permanent storage, as it is ephemeral (destroyed upon server termination). So you need additional EBS storage attached to your instance, which adds to the cost. Also this is with only 1Gb outgoing data transfer, additional data costs $0.12 per Gb. EBS storage is $0.10 per Gb per month, so add $2 per month for 20Gb of EBS.

Linode: 1Gb of memory, 24 GB RAID Storage, 8 cores with lowest priority, 2Tb data transfer included. additional data at $0.10 per Gb

Digitalocean: 2G memory, 2 cores, 40Gb SSD storage, 3Tb transfer included, additional data transfer $0.02 per Gb

Note that amazon can cost a lot more if your data transfer is higher. If you really need 2T outgoing traffic, amazon bills you a hefty $240 additional cost.

Benchmarking

For this test I used Amazon Linux (fedora style distro) for EC2 and Centos 6.4 for Linode and DigitalOcean. Apache 2.2.x, php 5.3.x, mysql and ApacheBench (ab) on a separate client machine to saturate the server.

I requested a php page that shows a calender of events, which it fetches from the database, does some layouting and shows the result. It is build upon Laravel 3.

I did multiple AB tests.

  1. 100 requests and a concurrency of 10. (ab -n 100 -c 10)
  2. 500 requests with a concurrency of 10 (ab -n 500 -c 10)
  3. 1000 requests with a concurrency of 20 (ab -n 1000 -c 20)
  4. 2000 requests from 2 different machines each with a concurrency of 40. (ab -n 2000 -c 40 on both machines at the same time)

The tests were run from an independent server hosted by another company.

These are the results:

test Req/sec Time/req transferrate load
linode -n 500 -c 10 66,47 150 2743
linode -n 100 -c 10 60,25 165 2529
linode -n 100 -c 10 53,73 186 2254
linode -n 500 -c 10 67,25 148 2778
linode -n 100 -c 10 64,12 156 2655
linode -n 1000 -c 20 78,52 254 3243 3,22
linode -n 2000 -c 40 42,23 947 1743 14,95
test Req/sec Time/req transferrate load
amazon -n 100 -c 10 4,51 2216 190
amazon -n 100 -c 10 4,39 2280 185
amazon -n 500 -c 10 4,59 2177 193 8,15
amazon -n 1000 -c 20 4,51 2435 190 17,06
amazon -n 2000 -c 40 2,24 17830 94 18,5
test Req/sec Time/req transferrate load
digitalocean -n 100 -c 10 26,4 378 1107
digitalocean -n 500 -c 10 34,09 293 1407
digitalocean -n 100 -c 10 28,24 354 1165
digitalocean -n 500 -c 10 33,94 294 1401 6,53
digitalocean -n 100 -c 10 29,26 341 1207
digitalocean -n 1000 -c 20 32,7 611 1345 12,45
digitalocean -n 2000 -c 40 18,2 2112 712 14,35

During the tests I run top on each server and wrote down the highest server loads for the bigger tests.

Conclusion

Well, amazon just sucks. At only 4.5 request per second it is about 15 times SLOWER than the linode box. Is this due to the slow EBS volumes or is this due to their 1 ECU compute unit?  Looking at the high load figures, the problem seems CPU-bound in amazons case.

Digital ocean is about half the speed of Linode, in spite of their fast SSD disks. But they are stilll 6 times faster than amazon.

But the winner without any doubt is Linode. Their 8 core server really rocks in this case.

Of course each of these providers offer larger instances at a higher cost. But this test was designed to target the $20/month price point.

I have to rethink my amazon strategy. Is amazon overpriced? do I need expensive high-CPU instances to compete with the linode performance? It seems linode has the best cards in this space currently, and the differences are too big to ignore.

Update may 2014

Since a few weeks Linode changed their offering to SSD, faster CPUs, double Ram but you get strict core isolation now. You now get 2 cores for $20 instead of 8. So I upgraded (?) my linode servers and did the test again:

test Req/sec Time/req transferrate  max load
linode -n 500 -c 10 26,59 376 516
linode -n 100 -c 10 23,77 420 497
linode -n 100 -c 10 24,10 414 468
linode -n 500 -c 10 22,20 450 430
linode -n 100 -c 10 25,51 392 495
linode -n 1000 -c 20 24,98 801 485 10,12
linode -n 2000 -c 40 22,13 1807 430 16,12

The previous linode machine had far better result, just because they did not have strict isolation. I just took over the whole machine and became a “noisy neighbour” for my fellow tenants as Evan pointed out (see comments). The test is now more realistic, and the linode results are now comparable with digitalocean. But still amazon is the slow kid on the block. I agree that amazon has a lot to offer, but their offerings are overpriced. And while linode upgrades their hardware at a pace of about once a year (the $20 offering went from 512Mb to 1G to 2G, got SSD and new CPUs the last 2 years), Amazon is still using the same hardware that they offered years ago. Did they lose their edge to innovate?
 

 


  • http://nrwebdev.com/ Nick Rich

    Have you looked at Amazons recent upgrades..? Might need to write a new article with the updates, t2.small1Variable2EBS Only$0.026 per Hour

    “Amazon EBS provides three volume types to best meet the needs of your workloads: General Purpose (SSD), Provisioned IOPS (SSD), and Magnetic. General Purpose (SSD) is the new, SSD-backed, general purpose EBS volume type that we recommend as the default choice for customers. General Purpose (SSD) volumes are suitable for a broad range of workloads, including small to medium sized databases, development and test environments, and boot volumes. Provisioned IOPS (SSD) volumes offer storage with consistent and low-latency performance, and are designed for I/O intensive applications such as large relational or NoSQL databases. Magnetic volumes provide the lowest cost per gigabyte of all EBS volume types. Magnetic volumes are ideal for workloads where data is accessed infrequently, and applications where the lowest storage cost is important.”

    Data Transfer OUT From Amazon EC2 To InternetFirst 1 GB / month$0.00 per GBUp to 10 TB / month$0.09 per GBNext 40 TB / month$0.085 per GB

    • http://www.alanchavez.com/ Alan Chavez

      I don’t know about that — I have a web application that I initially hosted it in Amazon because I thought it was the best. With only a few dozen of users it was working fine on a Medium machine costing me around ~$30 (could be less, I don’t remember the numbers off the top of my head, and I don’t feel like checking the billing page).

      As soon as I kicked new customer acquisition channels, and doubled my application’s usage, everybody started to complain about the slowness of the application. Within 2 – 3 weeks I was using a small instance for cron jobs and stuff, and two medium instances, and I was spending about ~$75/mo for 3 instances. I was constantly monitoring my servers, and the problem was always CPU bound, which sucks. I guess I was the noisy neighbor in this case.

      During peak hours, even if I wanted to deploy something it would take as much as 20 minutes to deploy a relatively small project; whereas the same project in other server I have was usually deployed < 30s

      Then I started shopping around more seriously, and ended up switching to Softlayer, and I'm currently spending pretty much the same thing as with Amazon, but I've almost 3x the users, and the app hasn't had any slowness so far.

      It goes without saying that I'm not an expert system administrator either, so I might as well be doing something terribly wrong. But the same setup with another company worked pretty well.

  • WestSidePirate

    I use both Digital ocean and Linode with my preference being Linode. Linode has gotten better over the years. Digital ocean seems to be marketing more to people with less experience. I’m often asked by clients about managed servers and I’m planning on giving clowdways a try. They manages on top of a digitalocean or amazon vps. There’s also a new company in the same market Vultr which currently has better performance than either Linode or DigitalOcean. I tried to do a comparison of them over at my blog if you’re interested in checking it out. https://odinsql.com/2014/12/linode-vs-digitalocean-vs-vultr-vs-ramnode/

  • Matthiieu

    Here is a link for 10$ free credit: https://www.digitalocean.com/?refcode=25058944bd77

  • Alexf

    Now that Linode offers KVM, maybe it’s time to run the benchmarks again?

  • soyez

    No doubt AWS EC2 instances are the best one out there. AWS server performance easily outperforms others. I have been using AWS and DO on Cloudways managed hosting platform and I found that my website had better response time on AWS.

  • aot2002

    Linode upgrades memory. You should run tests again.

  • hakkikonu

    you should update your post because, now Linode offers min 2GB plans.