I found myself in a place where the basic and plus hosting accounts were providing extreme sub-par service, with no SSL. I had two options, move up to the $15 dollar a month (on sale) “Pro” hosting account, or jump ship. I jumped to a $10/month Digital Ocean Droplet and I couldn’t be happier!
- Faster performance
- SSL for free, thanks to Let’s Encrypt
- Free reign to monitor and tune system
- Complete control over security policies and patching
Note, all of these things come with a varying levels of responsibility, which should not be taken lightly. There are plenty of tutorials out there on how to harden a servers and configure web services. If you go down this road, I highly suggest you do your research first.
While that short bit on the “why” is imporant, I really wrote this to share some performance data! I used Apache Benchmark against my old hosting account and my new VM. Honestly, I don’t get that many hits, so load on my own server is negligible. In order to give both hosts a shot, I performed these tests between 12:00 am and 2 am CST. I used the same theme and the same config options. I’m unable to modify the my.cnf file on my shared hosting provider, so I left the defaults in place on my new host. I did create an apache virtual host, otherwise I left the apache configs alone for similar reasons. My site runs wordpress, and I made sure both sites were running the same plugins with the same options using the same theme. At the time, LightWord, Akismet, Jetpack, SyntaxHighlighter Evolved, Ultimate Google Analytics.
Test #1 – 1,000 gets against the main page, single thread:
There is a slight difference in the total bytes and the filesize transferred. I’ve identified this to be the difference between a custom footer and the standard. It was a negligible change, and the tests took a while to complete, so I’ve left it alone. Also, the hostname was different, because I chose to run the tests at the same time, using a sub-domain to point to the new host.
Example Command: ab -n 1000 -e digitalocean.csv -g digitalocean_gnuplot.tsv http://do.ryanveach.com/
|Host Type:||Shared||Virtual Machine||Virtual Machine|
|Host Provider||Bluehost||Digital Ocean||Digital Ocean|
|Document Length:||88453 bytes||84502 bytes||84502 bytes|
|Time taken for tests:||1380.997 seconds||265.789 seconds||399.775 seconds|
|Total transferred:||88714000 bytes||84824000 bytes||84524000 bytes|
|HTML transferred:||88453000 bytes||84502000 bytes||84203000 bytes|
|Requests per second (mean):||0.72 [#/sec]||3.76 [#/sec]||2.50 [#/sec]|
|Time per request (mean):||1380.997 [ms]||265.789 [ms]||399.775 [ms]|
|Transfer rate:||62.73 [Kbytes/sec]||311.66 [Kbytes/sec]||206.47 [Kbytes/sec]|
Mean Connection Times (ms):
Max Connection Times (ms):
Bluehost Shared Host:
Digital Ocean VM (http):
Digital Ocean VM (https):
Test #2 – 10,000 gets against the main page, 5 threads:
This test was not run against the new VM using ssl.
|Host Type:||Shared||Virtual Machine|
|Host Provider||Bluehost||Digital Ocean|
|Document Length:||88453 bytes||84502 bytes|
|Time taken for tests:||5836.646 seconds||2148.119 seconds|
|Total transferred:||887140000 bytes||874940000 bytes|
|HTML transferred:||884530000 bytes||871720000 bytes|
|Requests per second (mean):||1.71 [#/sec]||4.66 [#/sec]|
|Time per request (mean):||2918.323 [ms]||1074.059 [ms]|
| Time per request (mean,
across all concurrent requests):
|583.665 [ms]||214.812 [ms]|
|Transfer rate:||148.43 [Kbytes/sec]||397.76 [Kbytes/sec]|
Needless to say, I’m sold on performance alone, and there are a multitude of management options that they offer. I won’t go into it, because they can describe it so much better.