You can profile your code using one of the supported profiling tools included in Drupal VM.
As a prerequisite, you need to make sure the profiler you'd like to use is listed (and not commented out) in installed_extras
inside config.yml
(So the appropriate software is installed on Drupal VM).
Note: You should only enable one code profiler at a time—e.g. when using Blackfire, disable XHProf and XDebug.
Blackfire¶
Blackfire.io is a service that allows code profiling to be stored and analyzed via an online profile on the Blackfire.io website.
It doesn't require any additional Drupal modules to use, but once you've made sure blackfire
is in the list of installed_extras
in config.yml
(and Drupal VM has been provisioned), you need to log into Drupal VM and run the setup steps outlined on the Blackfire Ansible role's README.
Once you've configured your environment for your own Blackfire account, you can profile a request with Blackfire by running something like the following example (within Drupal VM, after logging in with vagrant ssh
):
$ blackfire curl http://drupalvm.dev/
Profiling: [########################################] 10/10
Blackfire cURL completed
Graph URL https://blackfire.io/profiles/[UUID]/graph
Wall Time 151ms
CPU Time 130ms
I/O Time 20.9ms
Memory 1.5MB
Network n/a n/a -
SQL n/a -
XHProf¶
XHProf allows easy code profiling and can be used in many different ways. Ensure xhprof
is in the list of installed_extras
inside config.yml
.
XHProf module¶
The easiest way to use XHProf to profile your PHP code on a Drupal site is to install the XHProf module, then in XHProf's configuration (at /admin/config/development/xhprof
), check the 'Enable profiling of page views and drush requests' checkbox.
The XHProf module doesn't include built-in support for callgraphs, but there's an issue to add callgraph support.
You can view callgraphs (and a listing of all stored runs) using Drupal VM's own XHProf installation by visiting http://xhprof.drupalvm.dev/
and clicking on the relevant run, then clicking the "[View Full Callgraph]" link.
Devel module (deprecated)¶
The Devel module also used to provide XHProf configuration, and setting the options below would allow Devel's XHProf integration to work correctly with Drupal VM's XHProf installation:
- xhprof directory:
/usr/share/php
- XHProf URL:
http://xhprof.drupalvm.dev
(assuming this domain is configured inapache_vhosts
insideconfig.yml
)
XDebug¶
XDebug is a debugger and profiler for PHP. While most people use it only for debugging purposes, you can also use it for profiling. It's not as commonly used for profiling as either Blackfire or XHProf, but it works!