Benchmarking WordPress plugins

While doing routine tuning and checking of my weblog, I discovered a rather nasty slowdown with WordPress page generation. Taking the "scientific" route, I deactivated nearly all non-essential plugins in my Supercharged weblog (more than 40) and proceeded to activate them one by one, interspersing activations with ApacheBench tests.

Really quick conclusions:

WordPress (with the baseline plugins installed) is slow. On my server (not exactly the fastest thing in the planet, but dedicated to Web and database serving, and not bound by swapping or memory limits), it can't pipe more than 1.5 front page views per second. I don't think the load from ApacheBench accounts for more than 10% of the CPU usage.

Do not install My Tube under any circumstances. Further investigation is pending.

The chart above shows the (rather unscientific, but effective) results of my short benchmark, in a nice bar chart (the taller, the better). This table represents the average KB/s for page generation after activating each plugin. Note that plugins were never deactivated after being activated (except for My Tube, which I kicked out of the circuit). Thus, in a perfectly repeatable test scenario, you should see a ladder in the bar chart. Since you don't see one, I can conclude that stacking my 40 plugins introduces negligible page generation performance overhead.

Caveats:

I started with a plugin baseline of Akismet, Fold Page List, Fold Category List, PHP Markdown Extra, Redirectify, Software shop for WordPress, del.icio.us widget, Sidebar Widgets, WordPress allow dashes, WordPress AutoLink, Permalink redirect. There's simply no way I can afford to turn these off in my live site.

I hit my site with 100 requests using ab -n 1000 http://rudd-o.com/ executing on the Web host. Whenever I saw dramatic performance drops, I checked to see whether the load average was high, then waited for all other running processes to finish, and then re-tested

As you can see, I only tested front page views.

The base WordPress installation is a vanilla 2.0.3 + bug fixes setup. No caching options were modified or set.

This is not a scientific test. Standard deviation is not reported. Since I was only looking for major performance drops, minor differences (+/- 0.1 requests per second) can be accounted for the fact that tests were performed on the live site. Yes, that includes apparent "performance boosts" with some plugins active.

Plugins that add template tags or widgets were added to the template/widget configuration for accurate representation.

This benchmark does not measure page responsiveness or ancillary object loading times (JavaScript, images)