xhprof安装使用笔记

技术文档 - JS文档 作者: xcheng1986 发布于:2014-06-17 阅读(2847) (暂无评论)  


【作用】
xhprof是facebook开源的一个php性能分析工具。

【安装】
xhprof扩展的安装:
    wget   http://pecl.php.net/get/xhprof-0.9.2.tgz
      (php 5.4  需使用高版本的xhprof : wget http://pecl.php.net/get/xhprof-0.9.4.tgz)
    tar zxf xhprof-0.9.2.tgz
    cp -r xhprof_html xhprof_lib /www/xhprof/ (注:/www/xhprof/ 是我的网站根目录中的一个二级目录)
    cd xhprof-0.9.2/extension/
    phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config (修改实际路径)
    make
    make install
    vi /usr/local/webserver/php/etc/php.ini
        extension=xhprof.so;  //别忘了将生产的xhprof.so,拷贝到你的扩展目录
        xhprof.output_dir=/www/xhprof/; //存放分析数据的日志文件的路径
    fpm  reload //重启一下fpm
    

Graphviz安装(这个主要是画图需要的库)
    wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
    tar zxf graphviz-2.24.0.tar.gz
    cd graphviz-2.24.0
    ./configure
    make && make install

处理错误:
failed to shell execute cmd=" dot -Tpng"   ----关闭 php.ini  disable_functions 重启php : service php-fpm restart 
处理错误:
Error: either we can not find profile data for run_id 53a24d881ed48 or the threshold 0.01 is too small or you do not have 'dot' image generation utility installed.
安装libpng
    wget http://nchc.dl.sourceforge.net/project/libpng/libpng15/1.5.1/libpng-1.5.1.tar.gz  
    (http://jaist.dl.sourceforge.net/project/libpng/libpng16/1.6.12/libpng-1.6.12.tar.gz)
    tar zxf libpng-1.5.1.tar.gz  
    cd libpng-1.5.1  
    ./configure  
    make  
    make install  
【测试php脚本】
PHP:
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
// Test Code Start
$a = array();
for($i=1;$i<10000;$i++){
	$a[$i] = ($i-1)*$i/2 ;
}
$str = print_r($a,true);
echo '
'.$str.'
'; // Test Code End $xhprofData = xhprof_disable(); include_once "/www/xhprof/xhprof_lib/utils/xhprof_lib.php"; include_once "/www/xhprof/xhprof_lib/utils/xhprof_runs.php"; $xhprofRuns = new XHProfRuns_Default(); $xhprofRuns->save_run($xhprofData, "xhprof");

这样,当我们运行程序之后,会在 /www/xhprof/ 之中生成类似 539f9e08644e2.xhprof的分析数据文件。
其中:
    /www/xhprof/是我们在php的配置文件中定义的xhprof.output_dir ,
    539f9e08644e2是本次的run_id ,
    xhprof 是 save_run方法中定义的扩展文件名。
用浏览器访问 http://192.168.1.138/xhprof/xhprof_html/?run=539f9e08644e2 可以看到表格的统计
点击链接[View Full Callgraph]就可以看到图形化的统计信息

【相关解释】
Inclusive Time (或子树时间):包括子函数所有执行时间。
Exclusive Time/Self Time:函数执行本身花费的时间,不包括子树执行时间。
Wall时间:花去了的时间或挂钟时间。
CPU时间:用户耗的时间+内核耗的时间

Function Name 函数名
Calls 调用次数
Calls% 调用百分比
Incl. Wall Time (microsec) 调用的包括子函数所有花费时间 以微秒算(一百万分之一秒)
IWall% 调用的包括子函数所有花费时间的百分比
Excl. Wall Time (microsec) 函数执行本身花费的时间,不包括子树执行时间,以微秒算(一百万分之一秒)
EWall% 函数执行本身花费的时间的百分比,不包括子树执行时间
Incl. CPU(microsecs) 调用的包括子函数所有花费的cpu时间。减Incl. Wall Time即为等待cpu的时间
减Excl. Wall Time即为等待cpu的时间
ICpu% Incl. CPU(microsecs)的百分比
Excl. CPU(microsec) 函数执行本身花费的cpu时间,不包括子树执行时间,以微秒算(一百万分之一秒)。
ECPU% Excl. CPU(microsec)的百分比
Incl.MemUse(bytes) 包括子函数执行使用的内存。
IMemUse% Incl.MemUse(bytes)的百分比
Excl.MemUse(bytes) 函数执行本身内存,以字节算
EMemUse% Excl.MemUse(bytes)的百分比
Incl.PeakMemUse(bytes) Incl.MemUse的峰值
IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比
Excl.PeakMemUse(bytes) Excl.MemUse的峰值
EPeakMemUse% EMemUse% 峰值百分比