VPS Showdown – December 2019 – DigitalOcean vs. Lightsail vs. Linode vs. UpCloud vs. Vultr

Figured for my final VPS Showdown of 2019, to go back to where it all began with
a $10 Showdown post.

Since last month, Linode has released their own flavor of “Object Storage” so I
thought it would be good to start including some additional products in the
overview section.

Since the pricing of everybody’s Object Storage offerings varied so much and can
be quite involved, I simply listed whether or now the product was available or
not.

Same deal with managed databases, which isn’t nearly as prevalent as a product
offering and in my opinion starts to paint a picture that some VPS providers are
trying to compete more with AWS/Azure/Google Cloud than with other VPS
providers.

As per usual, I spun up 3 instances with each provider at the specified price
point ($12 for Vultr since their High Frequency plans are so much better than
their standard offering). Each instance is running Ubuntu 18.04 LTS and the
results are averaged together.

Overview

  DigitalOcean Lightsail Linode UpCloud Vultr
Location New York 1 Virginia, Zone A Newark, NJ Chicago 1 New Jersey
RAM 2 GB 2 GB 2 GB 2 GB 2 GB
CPU 1 Core 1 Core 1 Core 1 Core 1 Core
Storage 50 GB SSD 60 GB SSD 50 GB SSD 50 GB SSD 64GB NVMe
Transfer 2 TB 3 TB 2 TB 2 TB 2 TB
Base Price $10/month $10/month $10/month $10/month $12/month
Backups $2/month N/A $2.50/month $0.06/GB $2.40/month
Transfer Overage $0.01/GB $0.09/GB $0.02/GB $0.056/GB $0.01/GB
Load Balancer $10/month $18/month $10/month N/A N/A
Block Storage $0.10/GB $0.10/GB $0.10/GB $0.223/GB $0.10/GB
Object Storage Yes Yes Yes No Yes
Managed Databases Yes Yes No No No

Usually Lightsail is the front runner when it comes to both transfer and
storage, even against Vultr’s slightly higher priced tier. While this is still
the case at the $5 price point, once you move up to $10 Vultr squeaks by with a
bit more storage.

Linode was a bit later to the part in regard to Object Storage, but considering
UpCloud currently doesn’t offer it at all, it’s better late than never. I’ve
mentioned it before, even though Linode tends to be a bit behind in regard to
their feature set, they always catch up, and tend to come out quite strong when
they do.

Managed databases are still a bit lacking across the board. DigitalOcean is
definitely positioning themselves to be a solid AWS alternative when it comes to
their managed offerings.

CPU Info

  DigitalOcean Lightsail Linode UpCloud Vultr
CPU MHz 2231.53 2400.06 2400.00 2995.32 3792.00
Cache Size (KB) 28928.00 30720.00 11093.33 16384.00 16384.00
BogoMips 2933.00 3200.33 3133.00 3995.00 5056.33

Nothing too shocking here, Vultr’s High Frequency instances have consistently
boasted higher CPU clocks.

What’s really interesting is that both Lightsail and Linode clocked in at such
even numbers. That tends to be a good indication that ALL of the instances I
spun up had the same exact specs.

I’ve mentioned it in the past, it’s always worth it to spin up multiple servers
with a provider as you will probably end up with slightly different rolls
depending on which physical host you end up on.

CPU

  DigitalOcean Lightsail Linode UpCloud Vultr
Events per Second 855.49 864.68 933.91 1197.50 1334.14
Minimum (ms) 1.04 1.14 1.07 0.82 0.74
Average (ms) 1.17 1.16 1.14 0.84 0.75
Maximum (ms) 3.42 2.04 12.77 3.84 1.16

Actually a bit surprised here as Lightsail is pretty much always in the last
place position for CPU events per second.

Looking back at previous months, it’s interesting to see that nearly all of the
providers performed about the same as they did at the lower price point.

Memory (Read)

  DigitalOcean Lightsail Linode UpCloud Vultr
Ops per Second 3449456.87 820377.89 3408382.62 4752188.36 5477554.06
Minimum (ms) 0.00 0.00 0.00 0.00 0.00
Average (ms) 0.00 0.00 0.00 0.00 0.00
Maximum (ms) 2.13 4.16 6.93 3.73 0.28

Vultr not only put up killer ops per second, but also boasted a considerably
lower maximum operation time than the rest.

Memory (Write)

  DigitalOcean Lightsail Linode UpCloud Vultr
Ops per Second 3442023.86 822935.83 3476763.65 4802455.21 5489945.21
Minimum (ms) 0.00 0.00 0.00 0.00 0.00
Average (ms) 0.00 0.00 0.00 0.00 0.00
Maximum (ms) 1.82 1.62 3.35 1.75 0.29

Fairly consistent results when writing to memory as we saw with reading from
memory.

File I/O

  DigitalOcean Lightsail Linode UpCloud Vultr
Reads per Second 1336.68 1493.42 1589.91 4961.09 6906.06
Writes per Second 891.12 995.58 1059.92 3307.39 4604.03
Fsyncs per Second 2844.56 3181.03 3382.92 10577.76 14728.71
Minimum (ms) 0.00 0.00 0.00 0.00 0.00
Average (ms) 0.24 0.18 0.18 0.05 0.04
Maximum (ms) 18.28 106.43 29.13 72.08 3.09

Not surprising to see Vultr take this category as well, seeing as they are
offering up NVMe for their High Frequency plans.

Yet another category where DigitalOcean and Linode seem to be under performing
their $5 counterparts.

MySQL

  DigitalOcean Lightsail Linode UpCloud Vultr
Transactions per Second 1631.00 2178.33 2455.67 5602.00 6357.00
Queries per Second 32620.00 43566.67 49113.33 112040.00 127140.00
Minimum (ms) 3.65 2.92 2.32 1.26 1.20
Average (ms) 6.86 4.68 4.31 1.83 1.57
Maximum (ms) 40.81 45.89 42.36 18.78 12.17

MySQL stats usually marries up with how the file I/O performs. Nothing shocking
here.

Redis

  DigitalOcean Lightsail Linode UpCloud Vultr
PING_INLINE 38705.75 54564.34 49291.20 73823.34 61121.81
PING_BULK 39129.40 54054.26 48058.28 73248.82 60089.35
SET 41174.93 55039.09 48435.62 75190.05 61189.91
GET 40973.44 54136.95 49095.09 77525.72 61018.79
INCR 41462.75 54784.45 47424.47 77702.58 61255.83
LPUSH 39505.64 52427.19 48239.62 73254.18 61916.49
RPUSH 38006.79 54501.33 51497.20 73739.55 62016.61
LPOP 39972.13 54062.26 50567.88 75809.26 61078.55
RPOP 38203.11 54561.01 52630.27 73541.13 62307.18
SADD 40322.67 54898.97 50954.85 75131.25 61412.88
HSET 40083.61 53162.57 51267.62 75993.57 62930.44
SPOP 40474.81 54728.95 47413.87 76885.00 62125.20
LRANGE_100 (first 100 elements) 22550.57 29483.32 21807.45 40009.34 36882.51
LRANGE_300 (first 300 elements) 9720.49 11549.69 9032.51 16604.67 16488.05
LRANGE_500 (first 500 elements) 7046.98 8153.16 5871.80 11274.26 11916.15
LRANGE_600 (first 600 elements) 5827.72 6514.03 4624.98 8565.44 9524.82
MSET (10 keys) 34448.82 39355.52 37957.77 58336.60 56706.35

This one’s been perplexing me for a while now. Even though Vultr excels in
nearly every category, UpCloud has consistently outperformed everybody in this
particular category.

Redis is an in-memory data store, so I would think this would marry up with the
memory reads and writes. Since it doesn’t, my only other thought is that because
Redis is single-threaded that perhaps, even though Vultr has a “better” CPU that
it’s being throttled differently under the load than UpCloud is.

Speed Test

  DigitalOcean Lightsail Linode UpCloud Vultr
Distance (km) 2435.00 2090.30 2348.81 1456.73 2390.98
Latency (ms) 45.394 40.387 50.204 34.836 46.688
Download (Mbit/s) 988.56 63.30 124.28 399.79 80.55
Upload (Mbit/s) 479.45 100.86 399.50 418.56 387.28

This (and the Apache Benchmarks) tend to be high controversial. This month is no
exception as Vultr (usually a front runner) fell down to the crappy speeds that
Lightsail has consistently offered up.

Apache Benchmark (against nginx on the servers)

  DigitalOcean Lightsail Linode UpCloud Vultr
Requests per Second 298.57 185.59 300.83 298.08 300.75
Time per Request (ms) (mean) 1674.84 2983.42 1662.06 1677.38 1663.46
Transfer Rate (Kbyte/sec) 250.46 155.68 252.36 250.05 252.29

More controversial still, since my own Internet provider and home network factor
in heavily, are the results from ab.

That said, Linode’s actually been fairly consistent in out performing the rest
of the pack, even if Vultr does boast the faster network. I think this month is
too close to call though, as the differences ended up being a tenths of a
second.

Conclusion

Extremely impressed with the seeming consistency of Vultr’s maximum operation
times across most of the benchmarks. Granted, if you’re more interested in
managed services offerings, DigitalOcean’s still the clear pick.

As always, it’s highly recommended that you do your own research and run your
own benchmarks on the provider / data center / price point you’re interest in
running your application on.

If you found this post helpful, please consider using one of my referral links
below to sign up. Catch ya next year!


If you have found these posts informative and helpful in searching for a new hosting provider, please consider using one of the links below when signing up:

  • DigitalOcean, new accounts receive $200 in credit (good for 60 days)
  • Linode, new accounts receive $100 in credit (also good for 60 days)
  • Vultr, new accounts also receive $100 in credit (good for only 14 days)
  • UpCloud, new accounts receive €25 in credit (yes, that’s in Euros)
Josh Sherman - The Man, The Myth, The Avatar

About Josh

Husband. Father. Pug dad. Musician. Founder of Holiday API, Head of Engineering and Emoji Specialist at Mailshake, and author of the best damn Lorem Ipsum Library for PHP.


If you found this article helpful, please consider buying me a coffee.