linux 上xhprof安装与使用(php性能调试)


一、下载解压

wget http://pecl.php.net/get/xhprof-0.9.4.tgz

tar zxvf xhprof-0.9.4.tgz

cd xhprof-0.9.4/extension/







二、进入php安装过的目录

phpize   在extension下通过phpize生成configure







三、然后就是配置安装啦

./configure --with-php-config=/Applications/MAMP/bin/php/php5.3.20/bin/php-config

make

make install

注意要是提示: no such file or directory: ./configure  可以先安装  autoconf  生成configure文件







四、新建日志文件夹 (给777权限)

mkdir /var/tmp/xhprof  




五、修改php.ini

extension=xhprof.so

exhprof.outout_dir=/var/tmp/xhprof

:如果是64位系统需要将xhprof.so文件拷贝到相关的lib64的目录下,exhprof.outout_dir的目录要手动创建




六、重启apacache在phpinfo中看xhprof扩展是否加载成功了




七. 将下载的XProf解压的包里面的

xhprof_html目录和xhprof_lib目录 和 XHProf.class.php 复制到服务器要测试性能的网站根目录

 
八. 安装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  --with-png=yes
    make 
    make install 
 
    安装Graphviz的目的是为了xhprof图形化web工具查看profiling log文件。安装后使用web工具查看log图形时,最常见错误是:
    提示如下:
        引用
        Error: either we can not find profile data for run_id 4d7f0bd99a12f or the threshold 0.01 is too small or you do not have ‘dot’ image generation utility installed.
 
        且编译graphviz提示信息png: No (missing png.h),也就是dot 不支持PNG,所以需要安装libpng包,
        wget http://nchc.dl.sourceforge.net/project/libpng/libpng15/1.5.1/libpng-1.5.1.tar.gz 
        tar zxf libpng-1.5.1.tar.gz 
        cd libpng-1.5.1 
        ./configure 
        make 
        make install 
 
        然后重新编译安装graphviz,加上参数--with-png=yes。完成后,应确保命令dot在PATH环境变量里(默认应该就在路径里,一般不需要特别设置),以便XHProf能找到它。







-----------------------------------------------------------------



XHPROF 名词解释  




主要的




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% 峰值百分比