I don’t know if you’d noticed, but SEB has been slower than molasses in January as of late and I’ve been scratching my head trying to figure out why. It had gotten so bad that it wasn’t unusual for the Varnish cache system that Dreamhost uses to time out when trying to do things in the backend like delete spam comments in the queue. My first thought was it was a result of the massive spam attack SEB has been under as of late as the queue has been filling up with close to 3,000 spam comments in 24 hours. So the first fix I tried was to set the blog so only registered users could comment. This cut down dramatically on the comment spam (though, oddly, some unregistered spam is still getting into the queue), but didn’t change the performance of the site. OK, what next?
Turns out in the world of WordPress there’s a plugin for just about everything including trying to figure out why your site is so damned slow. I came across the WordPress Plugin Performance Profiler (P3) from the folks at GoDaddy.com. It scans your system and puts together nifty charts showing you the impact each of your plugins has on the performance of your site. So what was bogging SEB down? Oddly enough, it was Automattic’s own Jetpack plugin. This is a big plugin that adds a bunch of useful modules to self-hosted WordPress sites so that they more closely resemble the feature set you’d get at WordPress.com. Everything from some simple stat tracking to automatic publicizing to Facebook, Twitter, and Google+, to social sharing buttons, to blog and post email subscriptions, and so on. We used quite a few of its features here on SEB. It was convenient in that one plugin offered a crap load of features and was adding new ones all the time. We didn’t use every module, but we used a good number of them.
It turns out it’s one hell of a resource killer and a lot of WordPress bloggers heavily recommend against using it. According the the P3 plugin, Jetpack was responsible for 88% of load time for SEB. On average almost a full 9 seconds was spent dealing with plugins before the page could be rendered with Jetpack running. So the logical thing to do would be to deactivate it and see if it makes a difference. Only there was a problem. I couldn’t deactivate it. When I clicked the deactivate link in the plugins panel all it did was disconnect it from WordPress.com (you have to have a WordPress.com account to even use Jetpack even if you don’t use that account for anything else). After trying to deactivate it several times only to have it not deactivate I ended up ripping it out by its short and curlies by logging into the FTP account and deleting the directory by hand. Not a recommended way to uninstall a plugin because it leaves a lot of crap in your database, but it worked and I’ll clean up the database later. The result? P3 says the average amount of time spent processing plugins before the page loads is a mere 0.543 seconds. That’s a humongous difference. The odd thing is that Jetpack seemed to run pretty well for quite some time (I’ve used it pretty much since it first became available). Yes, it had an impact, but it wasn’t as huge as its been lately. I don’t know what’s changed, but I won’t be switching back to it anytime soon.
So the site is back to performing at a reasonable speed, but we’ve lost a lot of functionality in doing so. I’ve turned anonymous commenting back on (which means my spam queue will soon be overflowing again) and I’ll have to see if I can’t find a few high performance plugins to reinstate some of the features we lost in dropping Jetpack. I still use Jetpack on some of the smaller blogs I run for friends and family members and I’ll probably remove it from those sites as well as even on Momma’s Corner — which has considerably less traffic than SEB — it’s having a major impact on performance. If you’re using Jetpack and have noticed your site seems awfully slow then try removing it and see if things don’t improve. Drop me a note if there’s a particular feature we’ve lost that you relied on (I’m pretty sure email subscriptions is a big one) and I’ll see what I can do about finding a replacement plugin.