Why not check out the latest comparison?
Expanding upon last month, this month’s VPS Showdown features another, more expensive plan, at the ~$40 mark (Vultr being the outlier as their High Frequency plans are 20% more expensive, but seemingly worth it from the sheer metrics perspective).
Notable changes since last month, Vultr introduced managed load balancers for only $10 per month (comparable to most of the other providers). Also, DigitalOcean had some restructuring / lay offs that were published as being related to long term goals of the company and not because they are bleeding money or anything.
Something else worth noting, since it always comes up. I tried out, OVH this last month, well I tried at least. The thing is, I’m extremely accustomed to ease of use of the providers in this post, even if some of them take a few more clicks than others to spin up a new box. With OVH, I found myself so extremely lost and confused, that I wasn’t even able to spin up a service.
Nothing about OVH felt familiar. Perhaps it’s just that I’m used to other providers, but I’d like to think I’m a fairly smart and resourceful individual. With that, nothing clicked for me with OVH, so I’m not entirely sure if they will ever end up being included in these posts.
Also turns out that it was my second time giving them a shot, with the same exact results. There’s something to be said about clicking a big ol’ plus sign and being able to add a new server with ease.
That said, as per usual, this month’s post features server instances in or around the New York area, running Ubuntu 18.04 LTS. Each provider (at the ~$40 price point / 8 GB product offering) had 3 instances spun up and the results averaged, when applicable.
Overview
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Location | New York 1 | Virginia, Zone A | Newark, NJ | Chicago 1 | New Jersey |
RAM | 8 GB | 8 GB | 8 GB | 8 GB | 8 GB |
CPU | 4 Cores | 2 Cores | 4 Cores | 4 Cores | 3 Cores |
Storage | 160 GB SSD | 160 GB SSD | 160 GB SSD | 160 GB SSD | 256GB NVMe |
Transfer | 5 TB | 5 TB | 5 TB | 5 TB | 4 TB |
Base Price | $40/month | $40/month | $40/month | $40/month | $48/month |
Backups | $8/month | N/A | $10/month | $0.06/GB | $9.60/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 | $10/month |
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 | On 2020 Roadmap | No | No |
2FA/MFA | Yes | Yes | Yes | Yes | Yes |
One-click Apps | Yes | Yes | Yes | No | Yes |
Custom Images | Yes | No | Yes | Yes | Yes |
CPU Info
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
CPU MHz | 2233.33 | 2299.96 | 2000.00 | 3000.00 | 3792.00 |
Cache Size (KB) | 28928.00 | 46080.00 | 512.00 | 16384.00 | 16384.00 |
BogoMips | 2933.00 | 3067.33 | 2666.67 | 4000.67 | 5057.00 |
CPU
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Events per Second | 838.64 | 916.08 | 1177.68 | 1006.29 | 1332.05 |
Minimum (ms) | 1.09 | 1.08 | 0.77 | 0.91 | 0.74 |
Average (ms) | 1.22 | 1.09 | 0.85 | 1.00 | 0.75 |
Maximum (ms) | 2.17 | 1.18 | 11.66 | 1.60 | 1.11 |
Memory (Read)
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Ops per Second | 3228691.04 | 822917.78 | 3512792.59 | 4068911.78 | 5459523.04 |
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.28 | 0.08 | 4.46 | 0.78 | 0.13 |
Memory (Write)
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Ops per Second | 3257556.49 | 822642.39 | 3457147.38 | 4073065.08 | 5455638.01 |
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) | 0.93 | 1.79 | 8.45 | 0.21 | 0.06 |
File I/O
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Reads per Second | 2202.51 | 2323.39 | 1400.52 | 4289.07 | 9456.95 |
Writes per Second | 1468.33 | 1548.93 | 933.69 | 2859.38 | 6304.63 |
Fsyncs per Second | 4692.05 | 4952.41 | 2980.10 | 9142.32 | 20167.63 |
Minimum (ms) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Average (ms) | 0.14 | 0.11 | 0.32 | 0.06 | 0.03 |
Maximum (ms) | 89.43 | 77.06 | 183.60 | 8.96 | 11.15 |
MySQL
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Transactions per Second | 1834.67 | 2401.00 | 1531.33 | 3642.67 | 6213.67 |
Queries per Second | 36693.33 | 48020.00 | 30626.67 | 72853.33 | 124273.33 |
Minimum (ms) | 3.67 | 2.35 | 2.94 | 1.75 | 1.16 |
Average (ms) | 6.53 | 4.18 | 8.70 | 2.82 | 1.61 |
Maximum (ms) | 300.14 | 81.22 | 59.75 | 18.95 | 15.70 |
Redis
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
PING_INLINE | 66028.23 | 99901.50 | 93659.80 | 88174.40 | 122300.36 |
PING_BULK | 67399.15 | 100269.42 | 88608.25 | 95086.97 | 122262.94 |
SET | 67855.40 | 99966.76 | 102941.73 | 94242.95 | 123643.40 |
GET | 67525.31 | 99701.36 | 97970.78 | 89797.37 | 124187.56 |
INCR | 69142.36 | 100571.41 | 102295.94 | 92523.85 | 124456.76 |
LPUSH | 66408.19 | 100543.08 | 100697.83 | 92061.43 | 126484.38 |
RPUSH | 68734.75 | 100709.90 | 100086.25 | 94955.96 | 125471.04 |
LPOP | 69178.83 | 100370.81 | 101888.10 | 95809.90 | 125002.08 |
RPOP | 70051.65 | 99735.12 | 105272.28 | 93058.78 | 125228.13 |
SADD | 67290.87 | 100170.72 | 109398.23 | 92614.04 | 124802.56 |
HSET | 71790.43 | 100741.56 | 98682.99 | 88122.89 | 125471.44 |
SPOP | 68397.49 | 100375.01 | 99317.44 | 91477.84 | 123716.68 |
LRANGE_100 (first 100 elements) | 39569.56 | 58241.63 | 52542.99 | 52789.14 | 73853.01 |
LRANGE_300 (first 300 elements) | 15864.63 | 21560.92 | 16117.05 | 20785.04 | 29271.86 |
LRANGE_500 (first 500 elements) | 10186.38 | 14099.91 | 10557.57 | 14106.24 | 19348.60 |
LRANGE_600 (first 600 elements) | 8125.10 | 10898.76 | 8091.21 | 10851.14 | 15163.52 |
MSET (10 keys) | 60294.77 | 78604.45 | 78092.78 | 85055.04 | 119332.53 |
Speed Test
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Distance (km) | 2435.00 | 2090.30 | 2386.06 | 1574.62 | 1353.06 |
Latency (ms) | 43.921 | 41.340 | 47.255 | 34.316 | 42.202 |
Download (Mbit/s) | 1090.76 | 169.98 | 71.06 | 134.97 | 423.33 |
Upload (Mbit/s) | 498.78 | 61.38 | 254.13 | 183.79 | 391.64 |
Apache Benchmark (against nginx
on the servers)
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Requests per Second | 202.90 | 260.69 | 261.88 | 254.73 | 270.27 |
Time per Request (ms) (mean) | 2698.88 | 2003.97 | 1919.50 | 1979.21 | 1870.44 |
Transfer Rate (Kbyte/sec) | 170.20 | 218.68 | 219.68 | 213.68 | 226.72 |
Conclusion
I think what was really interesting with this particular price point, is that there were some commonalities in regard to the number of cores, but then also some outliers with Lightsail providing half the cores, and Vultr offering 3, in contrast to everybody else providing 4 cores.
Even with one core shy of the norm, Vultr’s High Frequency instances (at $48, 20% more the rest of the pack) performed extremely well, taking the top slot across nearly every category, with the exception of the Speed Test.
Vultr has traditionally touted the fastest network, but in recently month’s that hasn’t necessarily been the case, with DigitalOcean starting to shine there more and more (even though they’ve been somewhat middle of the road in regard to other metrics).
Something also worth noting, as it’s not really covered by these benchmarks, Vultr has been experiencing a bit of downtime recently (as reported by one of my faithful readers).
Downtime sucks, but shit does happen, and not a single provider in these reviews advertises, or achieves 100% uptime. Sadly, when issues do arise, the events tend to be clustered up, so looking at a 30 day window can seem like the provider is crashing and burning, when in reality, they are pushing quite a few nines across years of service.
With that, if you are attempting to build a four or five nines architecture, putting all of your eggs into a single server instance is not going to get you there. Spreading your servers out across data centers, or even across providers is your best bet to combat the “unexpected” downtime which you should expect from time to time.
Because all providers have the potential to go down for any number of reasons, building resiliency into your infrastructure and assuming that at any given time, some or all of your cloud infrastructure may become unavailable is just as important (if not, more important) than picking the “best provider”.
As always, these benchmarks are my own and it’s always encouraged to run your own benchmarks. Obviously your mileage may vary, so taking your own application’s needs into consideration is your best bet when going over these metrics.
That all said, if you’ve found these posts helpful and are planning on signing up for one of the providers listed, please take a moment to use my referral links below.
Next month I’m hoping to get a new provider into the mix. I doubt it will be OVH since I can’t seem to make heads or tails of their UI, but I’m always open to suggestions. I have a shortlist of providers I want to cover, but I’d still love it if the comments box blew up with recommendations :)
- DigitalOcean, new accounts receive $100 in credit (good for 60 days).
- Linode, new accounts receive $100 in credit (good for 60 days).
- UpCloud, new accounts receive $25 in credit.
- Vultr, new accounts receive $100 in credit (good for 30 days).
Or if you’re feeling really generous, show off your favorite tech stack by picking up a shirt!