Wow, pretty big news week for DigitalOcean last week, after some strongly worded accusations about ruining somebody’s business.
If we learned anything, it’s that off-site backups are an absolute must, especially if you’re serving Fortune 500 companies and/or providing SLAs.
Okay, now that I got that out of the way, it’s June and I’ve been receiving a TON of great feedback on these posts. Obviously I can’t make everybody happy every month, but I am chipping away at some improvements.
First, I went ahead and expanded the overview to include pricing for the base
instances as well as some of the other services the providers offer.
The other big update is the inclusion of some benchmarks around Redis on the
instances. Nothing terribly fancy, just using redis-benchmark
. You can check
out the arguments I’m using as well as everything else I use in this post here.
As per usual, I try to keep the data centers are close together as possible and all server instances were running Ubuntu 18.04 LTS. The metrics presented below are the average of the benchmarks run on 3 different servers.
Overview
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Location | San Francisco 2 | Oregon, Zone A | Fremont, CA | San Jose #1 | Silicon Valley |
RAM | 1 GB | 1 GB | 1 GB | 1 GB | 1 GB |
CPU | 1 Core | 1 Core | 1 Core | 1 Core | 1 Core |
SSD | 25 GB | 40 GB | 25 GB | 25 GB | 25 GB |
Transfer | 1 TB | 2 TB | 1 TB | 1 TB | 1 TB |
Base Price | $5/month | $5/month | $5/month | $5/month | $5/month |
Backups | $1/month | N/A | $2/month | $0.06/GB | $1/month |
Transfer Overage | $0.01/GB | $0.09/GB | $0.02/GB | $0.056/GB | $0.01/GB |
Load Balancer | $10/month | $18/month | $20/month | N/A | N/A |
DigitalOcean does not appear to be charging for bandwidth in 2019, so the price is reflective of how much bandwidth overage costs will be starting next year.
Bandwidth overage prices are reflective of North American traffic and depending on the provider, the price could be a bit more depending on where your traffic is coming from.
Amazon is generous enough to include automatic backups with 7 days of retention for free. Manual backups, which persist until you delete them, carry a $0.05/GB per month price tag.
UpCloud offers a bit more flexibility with their backup offering. They charge for the storage of your backup instead of a flat rate, meaning you could go ham and have hourly snapshots if you wanted. Doing the math, if you kept a single backup of a 25 GB instance, you’d paying $1.50.
Even though Vultr and UpCloud don’t offer managed load balancers, you could
still very well run your own load balancer on one of their servers.
CPU Info
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
CPU MHz | 1964.87 | 2398.12 | 2666.65 | 2992.96 | 2394.45 |
Cache Size (KB) | 28928.00 | 30720.00 | 16384.00 | 16384.00 | 16384.00 |
BogoMips | 2729.67 | 3200.33 | 3466.67 | 3990.33 | 3192.33 |
CPU
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Events per Second | 749.88 | 855.11 | 950.52 | 1242.90 | 789.21 |
Minimum (ms) | 1.29 | 1.03 | 1.05 | 0.78 | 1.13 |
Average (ms) | 1.38 | 1.17 | 1.06 | 0.81 | 1.27 |
Maximum (ms) | 2.52 | 4.50 | 3.45 | 3.02 | 4.99 |
Memory (Read)
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Ops per Second | 3119722.43 | 819953.92 | 4070253.66 | 4994342.68 | 3370248.55 |
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.24 | 0.12 | 0.59 | 0.64 | 1.49 |
Memory (Write)
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Ops per Second | 3148524.02 | 821609.44 | 4054193.90 | 4966030.07 | 3369760.53 |
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.24 | 0.26 | 1.99 | 1.37 | 0.96 |
File I/O
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Reads per Second | 1964.39 | 1321.71 | 2292.23 | 4491.83 | 1866.17 |
Writes per Second | 1309.56 | 881.14 | 1528.13 | 2994.54 | 1244.09 |
Fsyncs per Second | 4184.08 | 2817.11 | 4884.25 | 9573.40 | 3970.54 |
Minimum (ms) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Average (ms) | 0.17 | 0.20 | 0.12 | 0.06 | 0.15 |
Maximum (ms) | 25.53 | 19.90 | 6.59 | 15.15 | 57.08 |
MySQL
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Transactions per Second | 2180.33 | 2229.00 | 4185.67 | 5961.33 | 2775.00 |
Queries per Second | 43606.67 | 44580.00 | 83713.33 | 119226.67 | 55500.00 |
Minimum (ms) | 3.20 | 2.34 | 1.98 | 1.17 | 2.30 |
Average (ms) | 4.92 | 4.49 | 2.59 | 1.68 | 4.18 |
Maximum (ms) | 24.91 | 74.62 | 14.82 | 16.66 | 33.26 |
Redis
The following values are the number of requests per second for the command
listed on the left.
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
PING_INLINE | 38570.61 | 56221.91 | 53548.89 | 85036.87 | 45619.48 |
PING_BULK | 37920.24 | 55618.78 | 53183.38 | 84795.25 | 46550.52 |
SET | 37006.22 | 55425.01 | 53980.93 | 85590.89 | 45027.32 |
GET | 35227.28 | 55847.77 | 53678.08 | 84608.88 | 46855.76 |
INCR | 36165.32 | 56614.77 | 53807.19 | 84624.78 | 47364.20 |
LPUSH | 37539.02 | 55002.21 | 54666.79 | 85602.36 | 47035.52 |
RPUSH | 37015.88 | 55989.36 | 54376.68 | 86264.85 | 46667.61 |
LPOP | 36583.93 | 55261.27 | 54100.95 | 86322.57 | 44900.69 |
RPOP | 35949.94 | 55927.76 | 54118.35 | 85757.17 | 46101.50 |
SADD | 35660.86 | 56255.05 | 53819.37 | 85425.37 | 46490.59 |
HSET | 37246.60 | 53286.84 | 54464.13 | 86070.90 | 44894.60 |
SPOP | 36647.92 | 56518.59 | 53548.75 | 85268.15 | 45384.79 |
LRANGE_100 (first 100 elements) | 17750.45 | 30085.04 | 26318.10 | 44071.95 | 24997.12 |
LRANGE_300 (first 300 elements) | 7919.01 | 11916.44 | 10031.25 | 18463.97 | 10000.44 |
LRANGE_500 (first 500 elements) | 5519.06 | 8347.04 | 6913.31 | 12650.73 | 7138.74 |
LRANGE_600 (first 600 elements) | 4369.84 | 6659.40 | 5398.09 | 9966.12 | 5571.45 |
MSET (10 keys) | 30952.14 | 40932.22 | 43373.69 | 71083.92 | 35029.50 |
Speed Test
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Distance (km) | 2365.29 | 2573.93 | 2372.79 | 2412.86 | 2357.97 |
Latency (ms) | 50.652 | 74.852 | 62.023 | 62.486 | 55.638 |
Download (Mbit/s) | 1268.17 | 300.81 | 513.86 | 357.79 | 1178.45 |
Upload (Mbit/s) | 496.37 | 220.13 | 431.78 | 281.29 | 495.16 |
Apache Benchmark (against nginx
on the servers)
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Requests per Second | 178.23 | 175.22 | 196.30 | 191.04 | 158.77 |
Time per Request (ms) (mean) | 2813.56 | 2872.78 | 2550.25 | 2651.99 | 3158.55 |
Transfer Rate (Kbyte/sec) | 149.51 | 146.99 | 164.67 | 160.26 | 133.16 |
Conclusion
The last few months have been pretty consistent with UpCloud taking the crown in just about every category. This month the speed tests weren’t nearly as favorable with upload and downloads speeds nearly as slow as that of Lightsail.
I know raw metrics aren’t always a good indicator of how good a provider is, so
factoring in things like managed services and overage pricing, DigitalOcean is still standing tall as a good mix of performance and platform offerings.
As always, YMMV so it’s always encouraged to run your own benchmarks and weigh your needs before making a decision on providers.