Find WordPress performance bottlenecks with XDebug PHP profiling
- 3. @ottokekalainen @Seravocom SERAVO.COM
Xdebug installation example:
$ sudo apt-get install php-xdebug
$ nano /etc/php/fpm/conf.d/20-xdebug.ini
; Enable xdebug
zend_extension=xdebug.so
; Enable php profiling with get param XDEBUG_PROFILE=1
xdebug.profiler_output_dir=/tmp
xdebug.profiler_output_name=cachegrind.out.%t.%p
xdebug.profiler_enable_trigger=1
$ sudo service restart php-fpm
Do this in your
development
environment, e.g.
Vagrant image.
Don't use production
site, XDebug makes
the site much slower!
- 4. @ottokekalainen @Seravocom SERAVO.COM
Profiling run of WordPress front page
/tmp $ curl -I http://example.com/?XDEBUG_PROFILE=1
/tmp $ ll -h
11M cachegrind.out.1455198789.5601
/tmp $ head cachegrind.out.1455198789.5601
version: 1
creator: xdebug 2.2.3
cmd: /data/wordpress/htdocs/index.php
part: 1
positions: line
events: Time
fl=php:internal
...
- 12. @ottokekalainen @Seravocom SERAVO.COM
Hunt down that rare beast:
$ export LANG=C;
for i in {1..99};
do curl -IL -H "Pragma: no-cache"
-w "%{time_total}n" -o /dev/null
-s "http://wp-esittely.wp-palvelu.fi/?XDEBUG_PROFILE=1";
done
$ ll -Sh /tmp
-rw-r--r-- 111M helmi 11 16:29 cachegrind.out.1455200976.5601
-rw-r--r-- 91M helmi 11 16:29 cachegrind.out.1455200984.5601
-rw-r--r-- 89M helmi 11 16:29 cachegrind.out.1455200972.5604
-rw-r--r-- 89M helmi 11 16:29 cachegrind.out.1455200964.5604
-rw-r--r-- 88M helmi 11 16:29 cachegrind.out.1455200973.5604
-rw-r--r-- 87M helmi 11 16:29 cachegrind.out.1455200963.5601
-rw-r--r-- 87M helmi 11 16:29 cachegrind.out.1455200967.5601