当前位置: 代码迷 >> 综合 >> PHP - xhprof+Graphviz 安装配置
  详细解决方案

PHP - xhprof+Graphviz 安装配置

热度:59   发布时间:2024-01-12 14:37:42.0

简介:XHProf是Facebook放出的轻量级调试工具。和Xdebug相比,XHProf更加易用和可控,尤其是生成流程图和调试数据对比的功能很好很强大。

参考:http://us2.php.net/manual/zh/book.xhprof.php

1. 安装XHProf

sudo wget http://pecl.php.net/get/xhprof-0.9.4.tgz
sudo tar zxf xhprof-0.9.4.tgz
sudo cd xhprof-0.9.4

2.拷贝显示文件到要测试的网站里
sudo cp -r examples xhprof_html xhprof_lib /home/www/phpsite/pt/

3. 编译前预处理。

sudo cd xhprof-0.9.4/extension/
sudo /usr/local/php/bin/phpize

4. 编译三部曲
sudo ./configure --with-php-config=/usr/local/php/bin/phpsize
sudo make
sudo make install


5. 安装完提示

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

6.增加PHP配置,修改/usr/local/php/etc/php.ini, 在文件底部追加

sudo vi /usr/local/php/etc/php.ini
[xhprof]
extension=xhprof.so
xhprof.output_dir=/usr/local/php/logs/xhprof

7. 重启php-fpm
sudo killall php-fpm
sudo /usr/local/php/sbin/php-fpm &

8. 验证是否安装成功
php -m


9.  graphviz 安装 (安装Graphviz的目的是为了xhprof图形化web工具查看profiling log文件。)

sudo wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.28.0.tar.gz
sudo tar -zxvf graphviz-2.28.0.tar.gz
sudo cd graphviz-2.28.0
sudo ./configure
sudo make
sudo make install
安装完成后,会生成/usr/local/bin/dot文件,确保路径在PATH环境变量里,以便XHProf能找到它,graphviz处于/usr/local/lib/graphviz
<span style="font-size:18px;">sudo vi ~/.bash_profile</span>

<span style="font-size:18px;">sudo source ~/.bash_profile</span>

<span style="font-size:18px;">echo $PATH</span>


看看输出里面是不是已经有了/usr/local/bin/dot这个路径了。


10. 运行http://10.5.100.243:8091/examples/sample.php

http://10.5.100.243:8091/xhprof_html/index.php?run=52c6416d09cf5&source=xhprof_foo



11. http://10.5.100.243:8091/xhprof_html/callgraph.php?run=52c6416d09cf5&source=xhprof_foo

报错了 Notice: Undefined variable: pipes in /home/www/phpsite/pt/xhprof_lib/utils/callgraph_utils.php on line 112 Warning:proc_open() has been disabled for security reasons in /home/www/phpsite/pt/xhprof_lib/utils/callgraph_utils.php on line 112 failed to execute cmd " dot -Tpng"


打开/usr/local/php/etc/php.ini, 找到disable_functions,把proc_open()从disable_functions列表中去掉。

先执行
killall php-fpm

再执行(usr/local/php是php的安装目录)
/usr/local/php/sbin/php-fpm &

参考: https://drupal.org/node/366299


12. 图像出来了



13. 如何看懂XHProf分析报告

如图1所示,XHProf报告中有许多列,它们代表的含义见下表:

列名

描述

Function Name

方法名称。

Calls

方法被调用的次数。

Calls%

方法调用次数在同级方法总数调用次数中所占的百分比。

Incl.Wall Time

(microsec)

方法执行花费的时间,包括子方法的执行时间。(单位:微秒)

IWall%

方法执行花费的时间百分比。

Excl. Wall Time

(microsec)

方法本身执行花费的时间,不包括子方法的执行时间。(单位:微秒)

EWall%

方法本身执行花费的时间百分比。

Incl. CPU

(microsecs)

方法执行花费的CPU时间,包括子方法的执行时间。(单位:微秒)

ICpu%

方法执行花费的CPU时间百分比。

Excl. CPU

(microsec)

方法本身执行花费的CPU时间,不包括子方法的执行时间。(单位:微秒)

ECPU%

方法本身执行花费的CPU时间百分比。

Incl.MemUse

(bytes)

方法执行占用的内存,包括子方法执行占用的内存。(单位:字节)

IMemUse%

方法执行占用的内存百分比。

Excl.MemUse

(bytes)

方法本身执行占用的内存,不包括子方法执行占用的内存。(单位:字节)

EMemUse%

方法本身执行占用的内存百分比。

Incl.PeakMemUse

(bytes)

Incl.MemUse峰值。(单位:字节)

IPeakMemUse%

Incl.MemUse峰值百分比。

Excl.PeakMemUse

(bytes)

Excl.MemUse峰值。单位:(字节)

EPeakMemUse%

Excl.MemUse峰值百分比。

  相关解决方案