As a long time Dreamhost customer, I never thought I’d see the day where this small blog would exceed Dreamhost’s offerings but after a year of poor uptime and unhelpful support I knew it was time to change. Through Googling issues relating to Dreamhost over the year, I’ve often come across people complaining about the poor speed of Dreamhost in a similar boat to me. During this post I will refer to my affiliate code where you earn $10 of free credit with my new provider, Digital Ocean but that isn’t the point of this article. It’s entirely up to you whether you wish to use it. Instead I hope people will stumble across this article and change to Digital Ocean or another provider. Don’t do what I did and put up with Dreamhost. Make the change.
[box]Sign up for DigitalOcean and receive a $10 credit and at the same time giving me a $25 credit – we all win[/box]
Around 12+ months ago my blog started creeping to a halt with intermittent outages of 10-15 minutes increasing as time went on.. Admittedly, this isn’t helped when your blog posts are image heavy and not optimised for web but for a blog averaging only 18,000-20,000 views per month on average, this was unacceptable. I increasingly became tired of Dreamhost when the ‘support’ received was a canned response which was no doubt pulled from the solution bank for users experiencing slow/downtime. I was happy to run through these checks and changes but I felt the support analyst did nothing beyond this. Were they checking the load of the shared server to see if it was at capacity and I should be moved to another server? I doubt it.
I started making some changes from reducing image size, playing around with caching and to eventually hosting my content through Amazon S3 and Cloudfront. Some worked well while others offered nothing in the way of improvement.
Short term resolution – Amazon Cloudfront
The benefits of using Cloudfront were reaped immediately as media was now presented from the nearest Amazon Cloudfront server based on the user’s location. With Amazon constantly introducing more servers in Australia, this was a huge plus and provided some quick wins to provide faster access to my biggest referring country. Around this time, Google started making some algorithm changes in its search rankings where website speed became a contributing factor in how your website ranks on Google. With Cloudfront pushing out content quickly, this set me up well and allowed me website to avoid any speed related penalties. What was even better though – Amazon Cloudfront was free! Well… Up until a point. Some more information about Amazon Cloudfront and their free usage tier can be found on their website. I’ve now utilised the free tier provided but the service is affordable, costing me $3-5 per month and (I hope) provides a better user experience.
With Amazon taking the load with user requests for images/content, I had hoped that this would reduce the load on my WordPress instance on Dreamhost allowing me to make administrative changes behind the scenes more smoothly. Wrong. WordPress started to scream to a halt with Internal 500 server errors and Jetpack notifications advising my website was down became all too familiar. Dreamhost were helpful to a degree, advising of ways to monitor high usage and IP addresses over requesting. I heeded their advice, blocking a range of IP addresses that seemed to be over-requesting and disabling plugins that were potentially exceeding the memory allowance made available by Dreamhost. The outcome? Nothing. The situation even worsened when one day my website dropped 5~ times during the day for 15~ minute periods. I knew at this point that I was done with Dreamhost.
What to do long term? Go Amazon EC2? VPS? Another shared services provider?
As mentioned earlier in my post, this blog is hardly a magnet for traffic and only generates around 20,000 on average. This put me in an interesting dilemma where I didn’t want to stay with shared hosting (Dreamhost) but couldn’t justify going a VPS solution. I fiddled around with setting up an Amazon EC2 instance and almost pulled the trigger on going live but at the last minute got cold feet at the thought of managing everything on my own. Sure I know a bit about WordPress, mysql and apache from managing websites over the years but did I know enough to set up an instance and keep it secure and redundant? Instead I decided to give Digital Ocean a try in a last ditch attempt with a hosting provider. If this was to end up like Dreamhost, I knew the next step would be to grow a pair and use Amazon’s vast cloud offerings or paying more than I’d like for a reliable VPS solution.
Hello Digital Ocean. I stumbled across Digital Ocean when reading about setting up an Amazon EC2 instance. People often suggested it to people as an alternative to those not wanting to make the full jump to cloud. Instead, Digital Ocean provides cloud based VPS hosting with SSD hard drives for storage. The big selling point for me though was memory allocation, something that had plagued me in the past with Dreamhost and something I was keen to avoid in the future. For $10 a month, Digital Ocean provides:
- 1GB memory
- 1 core processor
- 30GB SSD storage
- 2TB transfer (per month)
This suited my requirements to a tee and was the same price to what I was already paying with Dreamhost so what was there to lose? For $10 a month I could change from a shared hosting provider to a VPS. Alternatively I could have even gone cheaper for their $5 a month plan but opted for the $10 a month plan to be safe. Could this be too good to be true?
Setting up the blog was a breeze with the one click WordPress installation making life easy. It was from here that I just needed to copy over my old WordPress content and import the mysql database. I must admit as someone with average technical skill using SSH to make changes, this was a little slow going at times but Digital Ocean’s guides and community resources made this a lot easier. All up, it took me around a minute to have a bare bones WordPress installation installed thanks to the one click installation. From here, it took some time for everything to become operational as my content and domain was transferred over. These delays were mostly incurred around:
- DNS changes propagating;
- Downloading the contents of my blog from Dreamhost and re-uloading to Digital Ocean;
- Exporting the mySQL database file from Dreamhost. The mySQL database is reasonably sized (160MB) however due to memory issues experienced throughout my time with Dreamhost, attempting to export it through phpmyadmin was a nightmare and would only ever partially export before eventually running out of memory. Eventually I used SSH to backup/export the database using the mysqldump command which is further documented in Dreamhost’s wiki and;
- Configuring mail and permissions (touched on in the next section
In case you’re wondering, I decided to stick with my Amazon Cloudfront bucket as it’s cheap ($3-5 dollars a month), provides a better user experience (important when serving up large pages) and reduces load on my DigitalOcean instance.
Some things to be aware of if you’re coming from Dreamhost (or another shared hosting service) to Digital Ocean
As mentioned earlier, getting everything working did require some tinkering due to the nature of a VPS being different to shared hosting. There are some things to note about Digital Ocean (all of which are covered through their helpful user guides and community) but regardless:
- Mail does not come pre-installed. This requires you to manually install through shell;
- Uploads and updates within WordPress is not possible through a traditional FTP authentication and instead require ssh permissions to be created. Fortunately the process is easy and takes 5-10 minutes;
- Traditional management GUI’s like that found on Dreamhost is not available. Rather than phpmyadmin coming pre-installed you will need to install phpmyadmin yourself. This doens’t bother me as it reduces unnecessary things on my instance using resources that I don’t necessarily need. I much prefer being able to start with a fresh canvas and installing what’s required
Useful articles that I’ve found since changing to Digital Ocean
- How to configure secure updates and uploads on WordPress
- How to configure virtual memory (swap file)
- How to configure mail on Digital Ocean
- Suresh’s article on using Send Grid and WP Mail SMTP
As I sit here writing this post, I’ve saved various drafts and checked my Jetpack stats in the background. When hosted with Dreamhost, both of these would be like playing a game of roulette with the certainty of them loading without being a gamble. Instead, both pages load quickly and more importantly, pages don’t stop mid load with that dreaded Internal Server error.
If you’re reading this and currently a Dreamhost customer feeling frustrated with reliability and service. Change. Don’t do what I did by trying to substitute crappy service with interim work arounds. Make the change and you won’t look back. Digital Ocean is worth the money and provides a far superior service to Dreamhost.
[box]And one last shameless plug, feel free to use my referral code on DigitalOcean and receive a $10 credit[/box]
Thanks for reading,