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

Josh Sherman
13 min read
VPS Showdown
HEADS-UP: A ton has changed since this post was originally published!
Why not check out the latest comparison?

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!

Or if you’re feeling really generous, show off your favorite tech stack by picking up a shirt!

Join the Conversation

Good stuff? Want more?

Weekly emails about technology, development, and sometimes sauerkraut.

100% Fresh, Grade A Content, Never Spam.

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.

Currently Reading

Parasie Eve

Previous Reads

Buy Me a Coffee Become a Sponsor

Related Articles