After over two years with Bluehost a very sad thing had happened to me and I didn’t even know it. I lowered my expectations of webhosting. It happened slowly, a gradual change that I didn’t even notice until one day this site taking 10-15 seconds to load was normal. Even worse, I almost let my webhost (Bluehost) convince me it was my fault. After many calls to support over the last six months the diagnosis was always the same: “The server looks fine, your sites are the problem. Here are some resources to help you speed up your site.” Followed by links to optimize WordPress.
Let’s backup a minute. It wasn’t always this way. I moved from GoDaddy’s hosting over to Bluehost a little more than two years ago. It’s not specifically clear in my memory, but I recall it being a fairly uneventful move. For a year, my sites performed decently. Nothing to write home about, but there wasn’t much downtime to speak of. Then things slowly started to change.
I started to get notifications from my uptime monitors that this site was down once or twice a day. Then, three or four times and finally before the move I setup more intense monitors at PingDom, which revealed it to be more like 15-20 times a day. The site would often slow to a crawl and the WordPress admin panel was almost unusable. I called these issues into to support many times over the last few months. They finally advised that I upgrade from the standard account to the professional account. I did and my issues persisted. They again tried to pawn it off on me. I had a bit of time between projects and figured an experiment was in order.
Bluehost vs. Amazon Web Services
If you haven’t heard of AWS yet, prepare to be amazed. To be honest, I don’t even comprehend the full breadth of what AWS is capable of. I do know that you can virtualize just about anything in their cloud and it is amazingly fast, redundant, and highly available. Did I mention that they have a FREE tier? Well, they do, and it includes a Virtual Private Server (VPS) with 30GB of storage on SDD hard drives!
Sold. I build an EC2 Micro instance with Ubuntu Linux and created an exact duplicate of my site for comparison. Here are the Apache Bench test results of the sites side by side:
First, the Bluehost site:
root@XXXXXX:~# ab -c 10 -n 1000 https://www.freewheelings.com/ This is ApacheBench, Version 2.3 <$Revision: 1528965 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.freewheelings.com (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: Apache Server Hostname: www.freewheelings.com Server Port: 80 Document Path: / Document Length: 46200 bytes Concurrency Level: 10 Time taken for tests: 501.149 seconds Complete requests: 1000 Failed requests: 141 (Connect: 0, Receive: 0, Length: 141, Exceptions: 0) Non-2xx responses: 1 Total transferred: 46584207 bytes HTML transferred: 46154215 bytes Requests per second: 2.00 [#/sec] (mean) Time per request: 5011.491 [ms] (mean) Time per request: 501.149 [ms] (mean, across all concurrent requests) Transfer rate: 90.78 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 6 30.1 1 635 Processing: 1346 4998 9984.0 2650 94801 Waiting: 1135 4693 9644.0 2382 92987 Total: 1346 5004 9983.3 2651 94807 Percentage of the requests served within a certain time (ms) 50% 2651 66% 3071 75% 3439 80% 3643 90% 4640 95% 20271 98% 46326 99% 59211 100% 94807 (longest request) root@XXXXXXX:~# ---------------------------------------------------
A few interesting things there. First, the entire test took 500+ seconds to complete. This is primarily because 5% of the requests took in excess of 20 seconds to serve. This is the exact same behavior I see regularly on my site. It is generally slow, but usable. Then, all of a sudden requests slow to a crawl, the site becomes unusable, and my monitors report it down. Every day this happened.
Now, let’s take a look at the exact same test on my FREE AWS account:
root@AXXXXXX:~# ab -c 10 -n 1000 http://amazon.freewheelings.com/ This is ApacheBench, Version 2.3 <$Revision: 1528965 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking amazon.freewheelings.com (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: Apache/2.4.7 Server Hostname: amazon.freewheelings.com Server Port: 80 Document Path: / Document Length: 46926 bytes Concurrency Level: 10 Time taken for tests: 23.932 seconds Complete requests: 1000 Failed requests: 19 (Connect: 0, Receive: 0, Length: 19, Exceptions: 0) Total transferred: 47235168 bytes HTML transferred: 46925281 bytes Requests per second: 41.78 [#/sec] (mean) Time per request: 239.321 [ms] (mean) Time per request: 23.932 [ms] (mean, across all concurrent requests) Transfer rate: 1927.45 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 2 5.3 0 60 Processing: 160 233 276.3 180 3220 Waiting: 75 137 278.3 89 3111 Total: 160 234 279.1 182 3221 Percentage of the requests served within a certain time (ms) 50% 182 66% 198 75% 205 80% 208 90% 217 95% 230 98% 1642 99% 1727 100% 3221 (longest request) root@XXXXXXX:~#
Notice the total time on this test is less than 24 seconds compared to the Bluehost server’s almost 10 minutes? 99% of the response times on the AWS server are faster (by a lot) than the Bluehost server’s single fastest response time. Also notice that the longest response time on AWS is 3221 (milliseconds) compared to Bluehost’s 94807.
We found the problem. What do we do about it?
We move, of course. But it’s a lot easier said than done to move a half dozen sites with DNS, SSL Certificates, email and webhosting. It becomes complicated even further when you give up the comfort of cPanel. So where do you put all that stuff?
Amazon Web Services – This is where I’ve moved the sites
Technical Disclaimer: cPanel is a thing of the past. At AWS you’re a building your own Virtual Private Server (VPS). You are responsible for everything from installing Apache to setting up MySQL to taking care of backups and server updates. This route is not for everyone and requires a high level of technical competence. If you need help Freewheelings does provide Consulting Services.
Google Domains – Who knew? Google Domains BETA is providing registrar service. It’s $12 / year for a .com, which is probably cheaper than your current host. The best thing about this service is that they provide free email forwarding for up to 100 addresses per domain. Email / DNS / Domain registration problems solved. FREE. And mind-blowingly easy to use.
Even if you’re moving your domain hosting elsewhere I highly recommend moving your domain registration over to Google. The idea behind Google Voice is: The last phone number you’ll ever need. I think we should look at Google Domains the same way. Why do we drag our domain registrations from webhost to webhost with our websites? It just doesn’t make any sense.
NameCheap – Remember how your webhost used to charge you some insane amount of money ($50) for SSL certificates? At NameCheap a standard SSL certificate is $9, yes, $9. Of course, you have to install it yourself and get Apache configured and all of that fun stuff, but it’s worth the extra effort.
This is how I did away with my ~$300/year Professional hosting account at Bluehost and doubled my site speed in the process. I imagine it’s a steep learning curve making the jump to AWS and the command line from cPanel, but results are results.