Profiling a WordPress Website for Deployment on Shared Hosting?

I am having a problem with CPU usage on my website, and am looking for a way to detect (and fix) what is causing it. A topic not covered in this question.

Following on Hakre answer here, I now realize that what I need to do is profile my PHP calling.

Is it reasonable to put the website on my own computer, run the profiler, and use that information to improve my website?

Any other suggestions on how to do this in the best way?

Solutions Collecting From Web of "Profiling a WordPress Website for Deployment on Shared Hosting?"

Profiling with Profiler-Plugins

Not sure exactly what you need to accomplish with your profiling, but WP Tuner (WordPress Plugin) goes a long way to finding what is slowing down your WP install.

It looks at each plugin and give your the memory, CPU time and SQL queries involved.

The SQL Monitor (WordPress Plugin) analyzes SQL performance.

Combine it with W3 Total Cache (WordPress Plugin) and you should get better performance on any platform.

Also, look to using transient API to store fragments you do not need to generate everytime. This can really help on a slow DB.

We have built a PHP profiler on top of XHProf that also uses callgrind output format. The main advantage over XDebug is hugely lower overhead and better recursive function handling, as well as XHProf-style profiling begin and end functions, enabling automated unit testing.

You can see it at http://www.exteon.ro/en/products/php-tools/web3tracer

You will need to compile and use it on your test box though, or ask your hosting provider to install it, but they are not likely to do that.

Profiling with Xdebug

I searched for some links so it’s easier to read into the topic. I’ve looked for doing PHP profiling with XDebug, something I would suggest to do:

  • Xdebug: Documentation: Profiling PHP Scripts (Xdebug Documentation)
  • Xdebug Quickstart: Profiling in PHP (by Bill Hewitt; 4th May 2010)
  • Profiling PHP Applications With xdebug (by Stefan Priebsch; 31 Dec 2007)
  • Faster PHP Apps – Profile Your Code with Xdebug (by Paul Annesley; 23 Apr 2007)
  • WordPress: Codex: Testing WordPress Performance (WordPress Documentation)

To display profiling results on the remote site, webgrind might be useful. It’s a PHP application that summarizes the profiler output.

I’m not sure if it’s possible to provide this all in form of a wordpress plugin (at least there is none available I’m aware of and I don’t think that there is something available right now), so you might need to do some of the setup / configuration / profiling on your own.

Yes, it is perfectly reasonable to profile the website on your own computer. You will need to install the environment, including the webserver and profile the site using a profiler of choice.

On Windows, local WordPress installation is extremely easy thanks to the Web Platform Installer. Single-click install WordPress including all prerequisites from here.