XHProf 是 Facebook 开源的一款轻量级的 PHP 分层性能测量分析器。 具体介绍请移步 http://php.net/manual/en/intro.xhprof.php
在 Linunx 上安装 XHProf, XHProf 对 PHP 的版本要求是 PHP 5.2以上:
- 首先最新的 XHProf 的源码包并解压缩: http://pecl.php.net/get/xhprof-0.9.4.tgz
|
|
- 进入 xhprof-0.9.4 目录,使用 phpize 来编译 xhprof
|
|
configure 期间可能会出一些问题,通过 baidu + google 解决。
- configure 完成之后,接着执行 make 和 make install
|
|
make install 成功之后,会生成 xhprof.so 然后在 php.ini 中添加 xhprof 的 配置信息:
|
|
重启 apache 后,可以通过 phpinfo() 来查看 XHProf 是否安装成功。
XHProf 安装好之后,就可以开始使用它来分析 Magento 了。 通过在 Magento 入口文件 index.php 中添加 xhprof_enable() 和 xhprof_disable() 两个函数,就可以得到 Magento 某一个请求的整个 PHP 调用关系以及期间所消耗的时间。
|
|
|
|
在此期间,遇到一个问题: XHProf 貌似不支持涉及操作 array 指针的系统函数,例如 current(), array_shift()等,在遇到这些方法的时候会直接 crash 掉,请求返回 ERR_EMPTY_RESPONSE。通过给xhprof_enable()函数传参XHPROF_FLAGS_NO_BUILTINS,忽略系统函数,可以避免这个问题。
其中:
- funciton name : 函数名
- calls: 调用次数
- Incl. Wall Time (microsec): 函数运行时间(包括子函数)
- IWall%:函数运行时间(包括子函数)占比
- Excl. Wall Time(microsec):函数运行时间(不包括子函数)
- EWall%:函数运行时间(不包括子函数)
优化性能,要找准目标,从有"巨大"潜力的地方入手,XHProf 可以为我们提供100个耗时最长的方法或者函数,这些运行缓慢的地方就是我下一步要关注的重点。