We’ve decided to make a few performance updates to WP Engine that will also mean better scalability for your sites.
We’ve already announced this on our status blog and emailed our (opt-in!) customer mailing list, so this might be old news to you, but it’s also nice to peek under the hood and see why we’re doing this, and doing it right now.
Some plugins — particularly “related-posts” plugins — create something called a “FULLTEXT index” on the “posts” table in MySQL. This is a mechanism for making complex queries against the content of posts, like “posts which contain A and B but not C or D.”
The trouble is that, especially for larger sites, FULLTEXT indexes consume huge amounts of resources, at run-time. The other trouble is that when changes are made to (large) tables with FULLTEXT indexes, rebuilding that index can take a very long time, or even fail, producing a corrupted MySQL table.
In fact we’ve seen this happen a dozen times in the past week.
In particular, it’s often happening when a customer upgrades to the new WordPress v3.4 release. To be very clear, this is not because of any problem with v3.4, or with WordPress core in general. This is due to these indexes which are non-standard in WordPress and only used by a small handful of plugins.
Still, it’s preventing people from safely upgrading, and we want everyone upgrading this week.
So, we’ve add a few “related posts” plugins that use FULLTEXT queries and indexing in MSQL databases to our disallowed plugins list. As a managed host, it’s our job to make sure that we keep an eye out for ways to improve your site speed, so while we’re adding those plugins to the disallowed list, we’re also recommending two plugins that will accomplish the same functionality without using FULLTEXT queries.
To replace the disallowed plugins, we’re recommending all our customers take a look at nrelate and LinkWithin’s “related posts” plugin. Both of these work off-server to achieve similar ends, so they don’t cause the same issues with the databases.
We’re rolling the changes out, which will affect all our customers, starting today, and moving through the rest of the week.
We announced these changes on the WP Engine Status Blog June 23, and sent a notification email to everyone affected. We wanted to provide as much notification as possible so that the replacement plugins could be implemented before we made any changes to our service.
To receive the most current updates about our status, including future updates like this one, we encourage you to subscribe to our status blog, and pay attention to emails from the WP Engine Technical Team.
If you have questions about your plugins, please submit a support ticket at wpengine.zendesk.com. We’re here to help!
Thanks!
–Jason Cohen, Founder of WP Engine
For anyone interested, I have employed a nice tag/taxonomy-based relationship system that performs rather well. It’s inspired by this article:
http://kopepasah.com/tuts/custom-related-posts-using-wordpress-tags-or-taxonomies/
I use the Open Calais plugin to suggest tags on newly-created posts. Then, in my theme, I query for related posts bases on tags and taxonomy terms. The result is a fast, predictable system for related posts that doesn’t rely on fulltext indexing. Yay!
Paul, I would love more details on the solution you have if you dont mind.