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 🙂