My blog often has fits of sucktacular performance. After digging around, and bugging DreamHost support for some ideas, I’ve made some progress.
I had been running wp-cache to enable file-based caching, thinking that would help optimize performance of the site (fewer database calls should equal better performance) – except that DreamHost apparently uses NFS-mounted storage for accounts. As a result, filesystem access is a bit laggy, so the file-based caching was actually (apparently) slowing the site down (as suggested by 4+1 ways to speed up wordpress). Disabled wp-cache and set define('WP_CACHE', false);
in wp-config.php
I also noticed that there were 2 requests for linked files that were returning 404 errors, which in turn trigger my fancy schmancy 404 page and so add significant lag to the page load. Turns out the OpenID Delegation plugin had bad references to openid.js and openid.css so I fixed that, and page loads are at least cosmetically snappier now.
One other modification I made was to (temporarily?) disable the “Similar Posts” plugin and sidebar display. I really like the functionality that provides, but it was adding too much processing time to generating individual post pages. It works by using the MySQL full text index on the blog posts table, which gets a bit slow with lots of posts and MyISAM tables (table-level locking and lots of extra queries means slower site responses). I’ll look into optimizing that a bit and re-enabling in the future.
Also, I had the Mandigo theme set to automatically rotate through a set of banner images, meaning WordPress was having to crunch through the blogbanner/wide directory itself in order to pick up a banner image. Instead, I just set up my .htaccess file to intercept the URL for the default Mandigo banner image, and Redirect it to rotator.php so it should be a bit better now.
It’s still not running as fast as I’d like, but it’s just a blog. I could always trim out more plugins and pick a simpler theme, but I’m pretty happy with the functionality I have at the moment. At least it’s performing better than Twitter…
Update: I turned off the General Stats widget (but left the plugin active) – there’s no need to count every word of every comment and post when displaying every page on the blog. That info is available on the Archives page, where it belongs. That removed several very heavy queries from the typical page generation load. I also updated Mandigo, which mentioned some optimizations in the changelog. The blog feels snappy enough now for me to stop worrying for awhile…
You mention performance issues with my Similar Posts plugin and I wondered if you have tried the Plugin Output Cache which saves the output from Similar Posts (in MySQL rather than the file system) and reuses it until something changes on the site. I find it reduces the plugin overhead dramatically.
Rob, I hadn’t heard of that plugin. I’m checking it out now. Thanks for the tip!
I have long wondered about the nfs speed issue, but don’t have a blog that gets enough traffic to really test out that, because although NFS is intrinsically slow as Db load increases theoretically at some point for the wp-cache to be faster — but probably before that point it is time to change hosting plans 😉
Now a wp-cache to Db would be interesting 😉
Yeah. My online searching turned up the suggestion that Dreamhost’s NFS filesystem would be problematic, but Dreamhost themselves recommended installing WP-Cache to boost performance. I’ve installed it, and things are pretty good. Most pages load almost instantaneously. Those that haven’t been cached take a couple seconds to load up, but most should be precached already.
You should evaluate some cluster file system solutions, NFS by design is problematic and hard to scale inexpensively…
Some nice tips there matey, ill give them a shot 😉