14

I'm trying to gather some benchmarking data to determine how well my optimizations to WordPress are fairing. I've found this page on High Traffic Tips but it doesn't contain any data. Are there any tools that benchmark WordPress? Not just how well it holds up against traffic, but things like how caching fairs when you're performing X Posts an hour and X comments a minute as well as other normal use cases for WordPress.

For the record, I've run Siege and Blitz.io against installations, but that's merely how well your site can cache and serve/spread the requests around. If that's the only the only measurement that can be consistently produced (maybe req/s is the only way to go) then that's fine. If there are other tools that can show how many req/s can be sustained over varying usage (have to regenerate the cache ever 10 mins will have a big impact if it's serve while refreshing, or clear out cache then refresh cache).

4
  • While in general form this is not WordPress-specific question, I find part about post/comment performance both specific and interesting.
    – Rarst
    Aug 27, 2012 at 23:35
  • @Rarst I've expanded on that, as I know how to benchmark the server software Aug 27, 2012 at 23:38
  • Reqs per second serve as a great baseline stat to test general performance of your site. I would also look at cache efficiency (hits vs. misses), Page Speed (developers.google.com/speed/pagespeed), and various throughput stats out of your database, network, and other services you might use (e.g. memcached).
    – xentek
    Aug 28, 2012 at 1:48
  • 1
    You should also be measuring and reducing latency: igvita.com/2012/07/19/…
    – xentek
    Aug 28, 2012 at 1:55

6 Answers 6

7

Siege.

Test against both an actual post/page (which would theoretically hit page cache, APC, varnish, etc. for every request after the first request), and against a 404 (e.g., randomly generated strings), which would require database queries on each hit.

A few helpful flags:

  • -b benchmark (don't wait between requests)
  • -c N where N is the number of concurrent requests to make
  • -t N where N is the time (e.g., 30S) to run the test

If it's helpful this script will generate random strings (404s) which can be used to generate requests to posts/pages which will generate 404s.

2

You should also check out P3 http://wordpress.org/extend/plugins/p3-profiler/

It does not do traffic intensive performance tests, but it will help show you where WordPress is spending its time when building a page.

1
  • I really love this plugin. It analyzes all plugins installed, and give the overview of memory usage, time execution, etc. Must have for plugin analyzing.
    – Anh Tran
    Aug 29, 2012 at 1:29
2

If you like siege, you'll love Bees with Machine Guns

Bees with Machine Guns will spin up 1-N EC2 images and then runs a siege-like attack from multiple servers, better simulating internet traffic. Requires an Amazon EC2 account and uses python.

1
  • 1
    Lone link is considered a poor answer since it is meaningless by itself and target resource is not guaranteed to be alive in the future. Please try to include at least summary of information you are linking to.
    – Rarst
    Aug 28, 2012 at 9:42
2

You could also try using an external service like Load Impact: http://loadimpact.com/

We've used their free service a bunch of times for WordPress load testing.

On the plugin side though, there are a lot of plugins that do different varying types of reporting on memory and CPU usage and such (in relation to page load), and I wish there was a more all inclusive one that offered some type of meaningful metrics.

1
  • +1 for loadimpact. I've used it and have positive experience with it. It is not the 'all-in-one' tool, though. It doesn't do all benchmarking scenarios mentioned in the question (by Marco), either. It is one of the tools that can be combined with others to run benchmarks. Sep 18, 2012 at 8:55
0

A simple way if your using Apache is to just use the build in apachebench ( it should be in yourapache/bin folder ).

Basically you want to measure requests/concurrency with various settings, turn cache off and run some tests, then turn on APC, optimize and compare the data.

This isn't really a WordPress related question though.

ps. Log your results to a file using gnuplot format (-g) to graph them, also don't do this on a live host without telling them.

0

Testing base WP performance with Siege / Apachebench is fairly straightforward, however, that essentially just tests whatever caching plugin you're using, or (more likely) how well your webserver is tuned.

You can start to construct more realistic tests using a tool like Selenium that allows you to script creating new posts and comments, used in conjunction with a reasonably lengthy ApacheBench / Siege test.

Also, depending on the nature of your site, logged in users may represent a significant proportion of your traffic. Typically, logged in users aren't cached by caching plugins (or if they do get cached, they get a per user set of cached pages), which means they hit WP and the database directly. Again, Selenium (or similar) can be used to simulate logged in traffic, although you'll probably need to use selenium-grid to simulate a large number of logged in users (I haven't tried this myself, but it's on my ever lengthening list of things to try)

Not the answer you're looking for? Browse other questions tagged or ask your own question.