Why I Don’t Host My Own Blog Anymore

I moved my blog over to WPEngine recently. Why? Read on.

I started blogging about 375,000 words ago (about three full-length novels… crikey). At first, I was on a subdomain of WordPress.com, mostly because a) it was free and b) I had no intention of ever writing anything more significant than a few observations I made while developing a summer project.  My posts about making and marketing software turned out to be rather more popular than I anticipated, and I eventually made them my main professional presence and moved them to their own domain name.

Eventually, I decided that I had to be in control of my site rather than being locked into only the themes and functionality that WordPress.com supported, so I started hosting the blog myself.  I installed WordPress on a modest 512 MB VPS from Slicehost, with the standard Apache 2 / PHP / MySQL stack, and thought that would be the end of my hosting decisions.  Sadly, it was only the beginning.

WordPress, PHP, and Apache: The Trifecta Of Finnicky Software

I’m a web developer by trade, so I’m very skeptical of unevidenced comments like “lol, PHP can’t scale.”  It’s transparently obvious that PHP can scale — one look at who uses it (Facebook is really all you need to know) proves that.  Sadly, my system crashed frequently under load, even after upgrading the 512 MB slice to a 1,024 MB slice, and after tweaking Apache and PHP’s memory-usage settings for hours.  I read practically everything written about caching plugins for WordPress and it availed me not.  The loads at issue weren’t generally that impressive, either: 10,000 pageviews here,  100,000 pageviews there, either way a modern server in 2006 ~ 2012 should eat those numbers for breakfast.

In addition to tweaking the heck out of my settings, I was hacking WordPress to lessen the load on the server.  I went so far as to putting all the static resources for this blog (CSS, images, etc) on a server used for my software business, since no level of traffic has ever managed to give Nginx a problem in my experience.  This made the blog much more stable under load, but it still crashed occasionally.

I eventually found the culprit: a setting in Apache named, ironically, KeepAlive.  Since then I have been seized by missionary zeal in trying to convince people that leaving KeepAlive on will probably not be in your best interests.  I turned off KeepAlive and have had a much more stable time since then.

Even with all this work, my blog crashed four times in 2011.  Each time, my monitoring software woke me up, and I learned things like “Oh, Jimmy Wales tweeted about an article of mine” at 4 AM in the morning while trying to restart the server.  I’ve probably lost in excess of 100,000 readers over the years for the blog being down.

I eventually got so fed up with Apache that I spent a day to migrate this (and 15 other sites) from using Apache as a front-end webserver to using Nginx to serve all requests and proxy dynamic requests to a backend Apache instance.  (Why not use Nginx to execute the PHP directly?  Long story — I do that elsewhere, but it isn’t painless.)

Routine Maintenance Sucked, Too

You’ve heard about WordPress’ somewhat spotty security record, right?  I’m aware of it as a practicing engineer and have even reported a few doozies in commonly deployed themes/plugins myself.  So I took some fairly extraordinary measures to secure the blog versus a stock WordPress installation:

  • required all access of the admin to happen through a proxy that I control
  • locking down all files on the WordPress installation such that the webserver could not write to them — this makes plugin installation/maintenance a manual chore and breaks some plugins, but makes it less likely that a vulnerability in a plugin or theme will ruin your day
  • performed some sporadic code audits on things I am inexpert on in a language I detest.  I eventually stopped doing this because reporting vulnerabilities to the WordPress ecosystem could easily be my full time job.

As a result of this, to my knowledge my blog never got compromised.  Whee, great.  It only took me a few billable weeks.  Plus I had all the usual fun of applying patches, making backups, restoring from backups when MySQL decided to eat the wp_posts table (still no clue why that happened), tweaking settings for rotating logs, migrating my hosting provider (Rackspace bought Slicehost so I had to move servers), yadda yadda yadda.

“Do You Enjoy Hosting WordPress?”

Two years ago at a conference I ran into Jason Cohen, a very smart guy who had sold his previous software business.  He told me that his new venture was managed WordPress hosting.  I was outwardly interested and inwardly cringing, because I thought “There are already WordPress hosts available for $4 a month, they all suck, and the software is pretty much irredeemable.  If it weren’t the best blogging software available I’d take a hammer to my backups then burn the shards and bury them on sanctified ground so that they never troubled the world again.”

At some point Jason asked me if I liked hosting WordPress.  I told him “I love hosting WordPress!  I love all the power and tweakability!”  And while I do appreciate control, I still can’t imagine what possessed me to say that.  Hosting WordPress has been a black hole of my time.

Last year I ran into Jason Cohen at another conference. He told me that WPEngine, the WordPress hosting company he’d told me about, was live and doing well.  In my haste to demonstrate that I had learned something from cutting myself on WordPress for the last five years, I mentioned “I guess you guys figured out to turn KeepAlive off, huh?”

Jason said “Actually, no.  I mean, sure, in the general case for a VPS, you want it off because otherwise your site gets non-responsive under load.  However, if you’ve got Apache talking to the outside world, something is wrong.  Apache only handles the request after it’s been through a load balancer, a Varnish caching proxy, and then Nginx, because Nginx does static content so well.  If the request gets that far you want KeepAlive on because your Apache will only be talking within your datacenter, only have a handful of connections, and you want those connections to be alive almost indefinitely because setup/teardown is always waste.”

You know how often I talk to software company CEOs and get not just corrected but destroyed and then re-educated about a point of technical fact?  Suffice it to say it made an impression.

So when Jason invited me over to WPEngine to do some marketing work, I leaped at the chance.  I went down to Texas for a week, met the team, and did my thing.  (Sidenote: Want to see a fairly typical week’s work for me?  Take a gander at their speed test tool, which you can point at an arbitrary WordPress site and learn why your page load speed isn’t optimized enough yet.  The punchline is, of course, that if you were with WPEngine they would have already fixed that for you.  I assisted with a redesign of this, wrote the month-long WordPress optimization course that the tool will let you sign up for, and generally improved copy and the like on their marketing site.)

So I Switched

In the course of hearing the sales pitch from them several times so I could write it accurately, I became convinced: WPEngine is absolutely superior in every way to me continuing to host the blog myself.  So I took out my credit card, signed up for their $200 a month plan (prices got reduced recently, see here), and migrated my blog over.  It has been quietly hosting my blog for the last several weeks, including through two of my highest traffic days ever, without a hitch.  For the first time, I can watch a post go to the top of HN and not have to have “top” open to keep an eye on swap consumption.

A few things that particularly impressed me about WPEngine:

  • A few hours after migrating my blog I got an automated email saying that they had found an outdated copy of TimThumb in my WordPress install and had upgraded it for me.  It wasn’t a vulnerability (permissions locked down saved the day for that one), but I’m very, very glad they keep an eye on things so that I don’t have to.
  • Migration was almost painless.  I just dumped the WP database, grabbed my existing files, and copied them over as instructed.  I needed to speak to support to get a setting tweak done for me (the plan I bought has WordPress multi-site not single site like my old blog, and this resulted in a minor issue), but all told I was up and running in about two hours of elapsed time.
  • Just like their speed tool promised, my site did get modestly faster.

I’m a bit of a YSlow fanboy and ever once in a while I go through my sites and make an optimization pass, so I usually have all the low-hanging fruit like gzipping, static content loaded from multiple domains, and the like taken care of.  I wasn’t expecting WPEngine to shave much time from my page loads, given the amount of optimization work I had already done, but I kept the old server around to do a fair test on AOL’s speed tool.  Take a look what happens: here’s a video showing (left) my old 1,024 MB VPS versus (right) WPEngine showing the same page from my blog.

If you didn’t watch the movie, I’ll spoil it: content pops in about half a second earlier (and finishes loading .8 seconds earlier) on WPEngine with no manual tweaking versus my tweaked-to-limit-of-my-ability VPS.

That test uses IE8 on a reasonable residential Internet connection coming from the US. For accessing from Japan or on a mobile device, it is viscerally faster for me, probably due to the CDN which WPEngine uses.

Do You Have A Blog For Business? Use WPEngine

The VPS that I used to run my blog on cost a bit over $100 a month (1 GB Rackspace slice + 160 GB of bandwidth + backups = I am not actually sure). WPEngine runs me $200 a month because I have high anticipated traffic. They have a $29 option for folks who don’t.

$2,500 a year for blog hosting sounds a bit on the high side, but it is honestly nothing against the amount of time that I will no longer have to invest supporting this sucker. I love being out of the hosting business. I never intended on being in it in the first place — it was always just something I needed to do to write for people. Less time poured down that black hole means more time to work on my businesses and share what I learn doing so.

WPEngine has been a total, epic win for me. I suggest that you use them if you are using WordPress for a business: go ahead, make with the clicky clicky. Want to just geek out on how they have their infrastructure setup? See here.

P.S. Long-time readers are aware of this, but just to reiterate: I don’t take money for blog posts, was not asked to write this by WPEngine (who are, again, clients of mine), and would not have written it except that their service really rocks.

About Patrick

Patrick is co-founded Starfighter, founded Appointment Reminder and Bingo Card Creator, and presently works at Stripe on Atlas. (Opinions on this blog are his own.) Want to read more stuff by him? You should probably try this blog's Greatest Hits, which has a few dozen of his best articles categorized and ready to read. Or you could mosey on over to Hacker News and look for patio11 -- he spends an unhealthy amount of time there.

66 Responses to “Why I Don’t Host My Own Blog Anymore”

  1. Chevas February 9, 2012 at 9:52 am #

    Thanks for this write-up. I’ve had dismally slow sites with two different hosts and I’ve been looking for a solution. I’ve seen WP sites that run fast and have wondered “but how did they do that?” WP Engine looks like the right answer.

  2. Patrick February 9, 2012 at 10:06 am #

    Did you ever considert migrating to a static site generator like jekyll. It’s written in ruby so I figure its right up your alley. I just got up and running and for me I like it way better than any other CMS I have used thus far.

    • Patrick February 9, 2012 at 1:34 pm #

      I should have proofread this before I hit the submit button. I’m embarrassed that it’s so riddled with grammatical errors.

    • Stephen Orr February 9, 2012 at 11:34 pm #

      I second that recommendation. For a more WordPress-like feel, use Octopress (or the Jekyll Bootstrap, but Octopress is more fully featured). I’ve just gotten it set up myself, and I’ve been very happy so far.

    • Jason Cohen February 10, 2012 at 7:56 pm #

      That’s a cool solution, and cooler still is to run THAT on S3 or behind a CDN for even more stability and speed.

      However lots of people like the flexibility and themes/plugins of WordPress.

      More however, here at WP Engine we actually have a prototype (used by a few customers) which does exactly as you suggest, but with WordPress! Best of both worlds, with many caveats.

  3. Patrick Foley February 9, 2012 at 10:15 am #

    Sold. Thanks, Patrick.

  4. pepe February 9, 2012 at 10:15 am #

    There are two reasons for self-hosting, (1) learning and (2) control/privacy.

    If neither applies, self-hosting is a huge waste of money and time, blog or whatever other service. That’s been true for a few years now, although the various types of services are only becoming available incrementally.

    Unfortunately that doesn’t change the fact that WordPress/PHP is still junk software, as evidenced by the fact that you have to apply so much care to get it running fast and securely. Hopefully this development will create an incentive for companies to develop faster and more stable software internally, giving them an edge over those poor WordPress etc hosters. But so far I don’t see it happening…

  5. Patrick Foley February 9, 2012 at 10:17 am #

    What’s your opinion on Disqus vs. WP’s built-in comment system?

    • Kai February 10, 2012 at 10:16 am #

      Whenever you can offload your comments to someone else, it will make your site faster. Most of the 3rd Party comment systems also have more features than the native WP Comment system.

      If you’re interested in the 3rd Party commenting systems, I’d check out Livefyre, it’s a really cool comment system with tons of real time social integration.

      • Jason Cohen February 10, 2012 at 7:57 pm #

        I agree. Nothing wrong with WordPress’s built-in, but people on my blog insisted that I switch to Disqus because they like the community parts, and of course also it scales that much more because WordPress doesn’t have to do the work.

        I’ve heard good things about Livefyre too but haven’t tried it.

  6. Johnny February 9, 2012 at 10:26 am #

    A simple caching plugin would have quickly fixed this for you. WordPress supports persistent caching but doesn’t have it built in. Installing WP Super Cache: http://wordpress.org/extend/plugins/wp-super-cache/ would do it in less than five minutes.

    • PJ Brunet February 9, 2012 at 11:51 am #

      WP Super Cache often doesn’t solve an underlying problem that should have been fixed. The cache needs to rebuild itself (so instead you only have issues sporadically, harder to fix) and now your configuration is 10x more complicated and you have piles cache files that need to be maintained, more stress on the server. WordPress already has a cache built into the core, MySQL has its own cache too–so 99.99% of the time there’s no need to cache the cache of the cache of the cache, it’s like washing your hands 50x a day.

      • Artem Russakovskii February 9, 2012 at 2:35 pm #

        You really have no idea what you’re talking about. WP Super Cache does scale and scales really well. You couldn’t go anywhere close to the level of traffic you get without a caching plugin on a busy server.

      • Nick O'Neill February 9, 2012 at 5:32 pm #

        Hey PJ,

        Gotta agree with Artem on this one … you’re way off here. WP Super Cache will solve your probably immediately. I’ve scaled to 50,000 people a day on a single mediatemple dv server while running allfacebook.com. Granted once you move beyond that size you may need some further management but if you have one post that’s getting slammed, WP-SuperCache will solve your problem instantly. It’s the difference between 100,000 requests to your database and 100. It will have a significant impact.

        • PJ Brunet February 9, 2012 at 6:04 pm #

          “WP Super Cache will solve your probably immediately.”

          Where did I say I had a problem? I’ve fixed sites that tried using cache plugins and when that didn’t work, they came to me. Saying I have no idea what I’m talking about is absurd. I’ve been doing this since the 80s. Try again.

          Are you recommending Media Temple, the company that changed MySQL passwords 3 times because they had a hacker on the loose and never found out who it was? Don’t even bother, I have so much dirt on Media Temple. I was a customer there too. Full disclosure, I’ve blogged about your site before–don’t be bitter now ;-)

      • Nik February 9, 2012 at 10:45 pm #

        we grew techcrunch over the years using nothing other than WP Super Cache and some clever forwarding proxies. even up until just before AOL purchased the site it was running on only a single server.

        static is the way to go. there is no need to run a blog as a full dynamic application since it is only updated at most a few times a day. Patrick could host this entire blog on S3 for a few dollars a month. I host mine on the Google CDN and rarely exceed the free quota. I think Patrick is definitely over-paying for his hosting.

        • Eoin February 10, 2012 at 3:49 am #

          @Nik – is it something like Jekyll that you’re talking about with static?

        • Artem Russakovskii February 10, 2012 at 4:49 am #

          Fascinating piece of information. I always wondered how the big tech sites scale.

        • Yann Kempf February 10, 2012 at 5:53 am #

          I tend to agree with what is being said, with one exception : I would even recommend Varnish over any plugins, because i don’t like the idea of being slave of one CMS over an other. With external tools, you want to switch, you switch.

  7. Earl Grey February 9, 2012 at 10:43 am #

    I would expect them to be good at that price point.
    Thats very expensive

    • Jason Cohen February 10, 2012 at 7:59 pm #

      $29/mo isn’t expensive. Patrick opted for a larger package because he wanted additional things and sometimes gets lots of traffic.

  8. Azer February 9, 2012 at 10:43 am #

    somebody has to mention Jekyll (http://github.com/mojombo/jekyll) here.

  9. Isaac February 9, 2012 at 10:52 am #

    And someone has to mention ExpressionEngine (http://expressionengine.com/). WordPress is NOT the best blogging software out there. Jekyll and EE are very different tools but I would pick either one over WP in a heart beat (and I do, regularly).

  10. Patrick February 9, 2012 at 10:56 am #

    @Johnny I had WPSuperCache installed and properly configured. It will do absolutely nothing if your problem is in Apache. (You could replace every blog post with a 1 kb text file on disk and you’d still have my issue.)

  11. Kura February 9, 2012 at 11:12 am #

    I continue to host WP on my own servers to continue to tweak and poke it as much as I can. But I’m not a PHP dev, I’m a sys engineer which makes it more fun for me I guess.

    That being said, I have to say that from my experience as an old PHP dev and an engineer for a long time now that, PHP really isn’t that good at scaling. You used FB as a company that use PHP and scale it but you’ve missed out that FB compile their PHP to C++, afaik they no longer run PHP directly on their servers.

    There comes a point where a standard LAMP stack simply is not good anymore.

    You’re correct in pointing out that both PHP and Apache are finnicky, which is why I don’t run them on their own. Apache is a great old workhorse that can do a lot of things but you really need to know and understand a lot about it get it doing a great job, PHP is sort of similar although I’d say Apache is a far greater scaler than PHP.

    In my stacks I always use nginx in conjunction with Apache to handle as much of the static content load as is possible and that lifts a huge weight from Apache. Next up is to always use a bytecode cache like Xcache or APC, these help give a huge boost in performance.

    But then you hit a wall, next up are limitations in WP SQL and MySQL, these can be helped by messing with the queries and using Memcached also helps to significantly boost the DB performance here.

    If you’re interested in the fights I’ve had with Apache, PHP and WP performance take a wander over to my site.

    Just my 73 pence.

    • PJ Brunet February 9, 2012 at 12:04 pm #

      Yes but only a few celebrity bloggers need to worry about scaling to that level. How much traffic are you talking about? I’ve got my personal WordPress blog up to 300,000 monthly pageviews on a $20 Linode with NginX and I was only using ~8% of 4 cores. That was before I knew anything about MySQL tuning and since then WordPress has fixed some of their joins, so the code is more efficient. For comparison, that’s about as much traffic as Copyblogger had a few years ago, last time I looked up his #s.

      • Kura February 9, 2012 at 12:16 pm #

        That is indeed true. I get a lot of traffic from the nginx website and forums, Nagios and a few posts that get used a lot but you’re very right, it’s easy to do on a $20 Linode server and that is basically what syslog runs on and it’s a single core machine.

        But, when I was talking about PHP scale I was talking about my experience running high traffic ecom platforms where PHP then becomes the bottle neck and that is usually due to the fact it needs to be compiled each time a page is accessed (without a bytecode cache) but then comes the insane memory usage.

        Sure, your site is going to be as good as your code and your queries but eventually PHP starts to become the issue. This is true of a lot of languages too, Python and Ruby also suffer but in my experience to a much lesser degree.

        • Sam Moffatt February 10, 2012 at 7:23 pm #

          Often I see PHP being told as “not able to scale” when compared with large “enterprise” Java implementations where you end up with the same sort of memory issues. Unless you’re got an excessive bloated PHP app, most PHP bytecode caches can be limited to memory and in many cases I’ve seen around 64MB is more than enough. At that point it’s compiled and in memory and if you’re concerned of 64MB of shared RAM you’ve got greater concerns. And if you need more, then you’re really doing something more fundamental wrong.

  12. Pádraig Brady February 9, 2012 at 11:13 am #

    Dynamic self hosted is a big maintenance burden.
    I went with a static site myself, with some very simple SSI and couple of shell scripts.
    I also have a very simple comments system hosted on google app engine, but disqus etc. could be used

  13. Hugh Hancock February 9, 2012 at 11:57 am #

    Sounds like a fantastic service, and I wish them the best of luck with it.

    Unfortunately, for a high-traffic site it’s eye-wateringly expensive. Were I to move the MMO Melting Pot (my main WP site) over to WPEngine it would triple my hosting costs – going from “not a problem” to “actually, this is having an impact on my bottom line”.

    (Actually, that’s a lie. Our traffic is above their $249 pm rate – which only covers up to 400k visitors a month. So presumably we’d be talking $500 pm or more – which is, you know, a LOT for hosting.)

    I’ll keep an eye on the service, and if the prices come down I’d be really interested, but for a site that isn’t monetising at double-figure cpm, I’d say they’re currently close to unaffordable.

    • Jason Cohen February 10, 2012 at 8:03 pm #

      That’s 400k uniques, not pageviews. Since you’re more than that, and since a unique does 1-2 pageviews on average, let’s say you’re at 1m pv/mo? So at a modest $4 CPM you’re making $4000/mo, but $249/mo is too much for hosting?

      I would of course agree that if you’re paying less today and have no trouble with speed, scale, support, etc., then of course why move?

      On the other hand if your page load time is above 1s, you’re probably losing money by not having a faster site, both in “hit the back button” effect and in SERPs.

      • Hugh Hancock February 22, 2012 at 8:47 am #

        Well, the basic problem is fluctuation.

        I’m running a games site, so the CPM isn’t even as high as your modest example – as you probably know, not all verticals run CPMs as high as even $4 reliably. So whilst I’d love to make $4k reliably a month, even on months where we do hit 400k uniques, I’m not making that much – instead I’m making something that’s less than 10x your hosting charges.

        But worse than that, traffic is seasonal. Some months I’m going to be looking at 200k uniques, some months I’m going to be looking at 450k. As far as I can tell from your website, if we EVER go over 400k, though, you’ll “work with you directly to help you upgrade to a larger hosting plan”.

        Which, as far as I can tell, means that at any time, I could spike some traffic, and promptly have a choice between getting straight off your servers again or paying $bignum for my hosting from then on.

        Frankly, the low limit for maximum visitors is the major thing that ensures I’ll not be using your service. It sounds great, and I’d love to have all my tech needs for WP catered for by experts, not to mention never having to worry about uptime, but financially the setup you’ve got just scares the crap out of me.

        • Jason Cohen February 22, 2012 at 1:45 pm #

          I understand your skeptisicm and assumptions because the behavior you describe is typical of hosting companies — that if you go over plan they either shut you down (most common) or bump you up automatically, and that you’re just a client in an automated system which is inflexible for the situation you describe.

          Except we’re not that way. Our explicit policy is that if you go over the limit once or twice we don’t care — bully for you! If you’re consistently there, month after month, then it’s not a spike.

          And we’ve NEVER ONCE turned off a site due to traffic or capped a site because they were paying $29/mo.

          In fact just today someone moved to us and got a massive traffic spike with over 200 pageviews/second. We made sure the site stayed up — even moving him to dedicated hardware temporarily — and never talked about raising his rates.

          You’re right that we publish hard boundaries, and those are useful in communication and establishing expectations. But it would be wrong — even if very understandable! — to assume that just because we define tiers on our website that we’re completely inflexible.

          • Hugh Hancock February 23, 2012 at 5:57 am #


            I’m going to give some serious consideration to testing you guys out, I think. The server I’m on currently has been creaking a bit anyway, so now would be a good time to do so.

            Thanks for all the replies – most impressed.

  14. Ecio February 9, 2012 at 12:03 pm #

    I’m having problems loading their pricing page (it seems I cant connect to their cdn.wpengine.com, Chromium is stuck in waiting).
    Is it only me?

  15. Scott Schnaars February 9, 2012 at 12:11 pm #

    I’m so glad that you wrote this. I had all the problems you outlined for years. Well said.

  16. Hartley February 9, 2012 at 12:12 pm #

    This is a God send for me.

    I have a tiny personal blog (~100 visits a day) but an article made it to the front page of HN a few weeks ago and the server went down. I probably spent two or three days tweaking mysterious Apache settings based on random blog posts I found and generally trying to become an IT-Ops guru, but I still have no idea if my site is actually better off.

    This is not only easier, but also cheaper than the current 1GB server I have at Rackspace. No brainer. Thanks!

    • Jason Cohen February 10, 2012 at 8:04 pm #

      That is in fact exactly why I started this company in the first place! Same thing — every time my blog hit HN it would go down.

  17. Sean Hess February 9, 2012 at 12:15 pm #

    I use jekyll and github pages for a super-fast site that’s really easy to manage. Love it.

  18. Big Jim February 9, 2012 at 12:17 pm #

    How much traffic is a lot of traffic? I just host my blog on my own home server which loads almost instantly and doesn’t cost me anything over what I already pay for service. You’d need hundreds of hits a second to saturate the line. Unless you have a very high volume site, I don’t understand paying the expense.

    • Jason Cohen February 10, 2012 at 8:04 pm #

      “The line” isn’t what gets saturated. Like Patrick’s example, Apache ran out of processes/memory even with the line was at 1% utilization.

  19. Gaurav February 9, 2012 at 12:26 pm #

    Not sure if your problem was with sudden spikes of traffic or in general traffic loss. I run a site with lots of traffic (~15K Alexa for perspective) on a just one $200 dedicated server (4GB RAM). It is custom code, but my guess would be that WP should perform better than that.

    Here is what our setup is:

    – Cloudflare (saves a lot on bandwidth)
    – Varnish (does a good job of caching)
    – Nginx for static files
    – Apache for PHP
    – Memcache
    – MySQL with lots of query caching

    Even if you use WPEngine, I’d highly recommend using Cloudflare.

    • Jason Cohen February 10, 2012 at 8:06 pm #

      I agree about CloudFlare, which we also recommend and support at WP Engine.

      Many of the tools you list we use as well, so of course we agree!

      It’s not necessarily that a person cannot build a scalable stack — of course you can! But 99.9% of bloggers in the world don’t have the skills, or prefer doing other things with their time.

      Of course I DO prefer doing that with my time, so there you go. :-)

  20. Syed Balkhi February 9, 2012 at 12:58 pm #

    I’m glad you made the switch. WPEngine guys definitely have a power house service that can scale.

    Not sure about how much traffic you are doing, but Two of our largest sites: WPBeginner and List25 are both hosted on a dedicated server that we operate.

    Our setup:

    HostGator Dedicated Server
    W3 Total Cache

    List25 did 5 Million Pageviews last month.

    Haven’t had issues like you described above.

  21. Carl February 9, 2012 at 1:04 pm #

    Facebook proved PHP doesn’t scale.

    First they re-wrote php, then they wrote a PHP -> C++ compiler

    • Brian Pontarelli February 10, 2012 at 10:35 am #

      I agree with the fact that Facebook is not a good example. In fact, there are a ton of examples where companies have replaced PHP with Java or something similar and increased performance dramatically. Sometimes swapping out PHP has had orders of magnitude impact on performance.

  22. javipas February 9, 2012 at 1:09 pm #

    I’m affraid I can’t share your good impression of WPEngine. I host my own personal blog and I’m the CTO of an online editorial that uses WordPress for all its sites. We considered moving our most visited sites (1M uniques/month) to WPEngine after I read some good comments about them. I investigated and finally contacted them.

    The people there was nice, and everything looked promising. But the migration was a disaster, with performance and content failing and without them (or me) being able to detect the cause. We finally decided to go back to our VPS, and after tweaking them they run now really well.

    I can’t deny that WPEngine is an attractive option, but in my case the experience -as they know at the company, and there’s no hard feelings at all- wasn’t good. Best of luck for them, though.

    • javipas February 9, 2012 at 1:14 pm #

      Patrick, I forgot to mention that Apache is not the best option for a blog with ‘decent’ traffic under Apache. Nginx and PHP-FPM do a better job under heavy load, and if you add a good and well configured cache plugin (W3 Total Cache is quite popular these days) and Varnish in front of Nginx, you should have a fantastic webserver prepared for pretty much anything… on a $20 dollar/month VPS

      BTW, good to see you here Kura ;)

    • Jason Cohen February 10, 2012 at 8:10 pm #

      Sorry to hear you had that experience!

      I think a lot of service-oriented businesses are like that. That is, you have some people who happen to hit everything perfectly during the process, and they’re fanboys for life. Then others happen to hit several bumps and have a bad experience and say “meh.” And most are in the middle.

      And none of them are “right.” It’s just what happens.

      Of course it would be nice to get to the bottom of it regardless, but I’m sensing that you’d rather not bother at this point! Which is probably how I’d feel too, especially if the point is to not have to think about maintaining your blog!

      But, if you change your mind and want to give another go, perhaps we could try again and dig deeper, and credit you a few months for the trouble.

      After all, we’d like to learn and grow too.

  23. John Paul Lewicke February 9, 2012 at 1:54 pm #

    Patrick, you’ve written a few times about the benefits of keeping a blog on the same domain as the rest of your site. I’d like to do the same for a Heroku Rails app I have, and am planning to use WPEngine when I do.

    According to WPEngine ( http://wpengine.com/faq/migration/wordpress-behind-proxy/ ), it looks like I need to set up a reverse proxy from my Heroku app (e.g. http://www.example.com/blog ) to WPEngine, and tweak some settings in WordPress.

    I was able to find a gem that can do this ( http://stackoverflow.com/a/8088646 ), but was wondering if you have any other thoughts on how to keep the SEO benefits of blogging on http://www.example.com/blog without diminishing the speed/configuration benefits of hosting with WPEngine.

    When I actually cobble this all together, I’m going to write a post on how to do this the right way. Thanks for the consistently great advice!

  24. idleworx February 9, 2012 at 2:27 pm #

    Nice post. I never managed to love the hosted wordpress that much (because the interface always seems sluggish), but I’ve been using blogger for my blogging needs (which so far are minimal compared to yours). Will keep this post in mind once I make it big on HN though :-)

  25. vonskippy February 9, 2012 at 5:10 pm #

    “$200 a month plan”

    Bwahahahaha – PTBarnum would be so proud.

  26. Katie @ Women's Magazine February 9, 2012 at 10:04 pm #

    WP Engine is a pretty good platform but it’s too costly for site owners who do not know how much traffic they are expecting. If they have some cloud like flexibility where they are charged as per use, would be great.

    • Jason Cohen February 10, 2012 at 8:12 pm #

      Most bloggers fit the $29/mo category, which isn’t too much of a financial commitment.

      If you go over occasionally, we don’t worry about it.

      Only if you’re consistently over the limit for months do we ask you to upgrade, and at that point — especially considering the cost of time and/or consultants — moving up to $99/mo isn’t outrageous.

  27. Troy McConaghy February 9, 2012 at 11:55 pm #

    Page.ly is another *managed* WordPress hosting service. I’m not affiliated; I read their blog because it sometimes has some nice insights.

  28. necenzurat February 10, 2012 at 3:13 am #

    troll here: you can use Blogspot :)

  29. Yann Kempf February 10, 2012 at 5:58 am #

    And I definitely think you’re over paying way too much your hosting.
    Even if I can totally understand the harass of self hosting, to forget about all these problems, you could just switch to a well known hosting company which will charge
    Here in France, you have OVH for example, starting 2€ a month.

    This same company provide dedicated server starting 15€ a month which are rock solid.
    And if you are seeking for more, I’m now running with Hetzner, which offer you for 49€ a month i7, 16 gig of RAM, 6 TB of HD, … Enough to handle a lot of visitors, don’t you think ^^ ??
    And to anticipate peek of traffic, I run on this server a cloud manager (OpenNebula), which give me the ability to transfer to Amazon VPS if tomorrow 10000000 people decide my website is the coolest in the world.

    • Jann February 11, 2012 at 9:02 am #

      Before I moved my sites over to WP Engine, I used to run them on a managed dedicated Hetzner server located in Germany for 100€ a month. My experience with Hetzner was pleasant in that their support was excellent and they offered rock solid hardware. I do believe they are a good option for general hosting needs and would recommend them.

      I did not move to WP Engine because I expected sudden large volumes of traffic, I moved because I felt that a hosting provider that specializes in wordpress made more sense as I’m only using wordpress for my clients’ sites.

      Since I moved to WP Engine my page load speeds reduced significantly.

      What I like about WP Engine is the pro-active elements they introduced since I joined:
      – they introduced a ‘Restore and Checkpoint’ feature where one could easily restore a site to a previous version.
      – they improved their staging feature which allows me to run tests on a non-live exact copy of my sites.
      – offsite error log
      – proprietary caching, which meant that I did not need to spend time on setting up caching plugins and checking for conflicts with other plugins.

      I feel that even on low traffic sites one should optimise the experience of each particular visitor.

  30. Yann Kempf February 10, 2012 at 6:01 am #

    Oh, and about your VPS, you should check every part of your setup, not just one element over an other : I did run test websites ( running WordPress, Drupal, or other heavy powaaaful dynamic CMS) on low cost VPS, and often, even with a really fine tuned setup including Nginx, php-fpm, Varnish, even NoSQL, … it would be the SAN ( hard drive level) which would cause most of my problems.

  31. David February 10, 2012 at 2:03 pm #

    Okay, this is a bit off-topic. Patrick alluded to some issues with Nginx and PHP without using Apache, but he didn’t specify…anybody here know more about that?

    I really hate PHP, but I use WordPress anyway for some of my sites’ content because…well, it’s there. Customizing a couple of themes was really easy.

    So what’s wrong with Nginx, FastCGI & PHP? I use WP Super Cache, and performance seems okay. My sites are low-traffic, and I’m guessing there are some issues under load, but…what are they?


    • PJ Brunet February 10, 2012 at 7:44 pm #

      Hi David,

      For comparison purposes, I have about 6 WordPress blogs that altogether get around 1500-2000 pageviews/day average, which I guess you can consider low-traffic.

      I’m using a basic “try files” NginX config without a cache plugin or anything fancy. PHP+MySQL. On a Linode with a max capacity of 400% CPU, I’m peaking around 5% CPU, average is about 3% CPU. So 3% / 4 cores, I’m typically using less than 1% of my CPU capacity most of the day!

      No Varnish and all the comments are hosted by me, not using Disqus or anything like that. Only 1% of the CPU! I hope that helps.

      • PJ Brunet February 10, 2012 at 8:01 pm #

        Also it’s worth mentioning maybe, I have taken Linode up to 400% CPU with a script I was working on that was broken. That said, I’m not a Xen master–so I have no idea how Linode configures things on their end. I believe Xen has bursting capabilities so I don’t know if 400% is a fixed allotment of CPU capacity that never changes or if Linode allocates a % of unused capacity to bursting.

        In any case, I have no affiliation with Linode so please don’t get the wrong idea. I’m not here selling Linodes–in fact I’m currently working on a blog post that’s a bit critical of Linode’s plans. If you offer virtual hosting I would love to interview you! I’m particularly interested in the bursting configuration aspect of VM hosting services, which seems to me is a gray area–as most hosts don’t bother to go into such detail.

        • Jason Cohen February 10, 2012 at 8:17 pm #

          Although of course I should be shilling for WP Engine, I do think Linode has a great service.

          They do burst the CPU, however if other nodes on the same hardware are also using, you’ll see a ton of “steal” in your CPU, meaning you’re not getting all 4 CPUs.

          What we’ve seen (and their tech support has confirmed) is that on the lower end boxes this happens constantly, whereas on the higher end boxes it doesn’t. Why?

          Because for a size S instance they load N of them onto one physical machine, where S*N == a constant. So every time you double the price and capacity, you’re on hardware with half the number of those instances.

          And so at higher levels there’s far fewer other instances to contend with and you really get the CPUs.

          Personally I think this is an interesting and generally fair trade-off which allows the lower end boxes to burst if possible, but rewards the more expensive users with more reliable CPU.

  32. Vijay February 13, 2012 at 11:04 am #

    Great story! I was wondering if you could elaborate on this point from above – Why not use Nginx to execute the PHP directly? Long story — I do that elsewhere, but it isn’t painless.

    Why is better to have Nginx and Apache and Nginx alone as the web server? Thanks.


  1. Why I Don’t Host My Own Blog Anymore - WPLover | WPLover - February 9, 2012

    […] McKenzie of Kalzumeus Software, on why he moved his blog to WPEngine. Links 10 February 2012 […]

  2. What money can buy « Patrick Foley - February 14, 2012

    […] you are sick of hosting your own blog, there is a specific amount of money that will help you remove that problem from your […]