PHP性能分析工具 XHProf 安装与使用

简介

xhprof是一个比xdebug更加强大的轻量级调试和性能分析工具 https://github.com/phacility/xhprof

安装配置

wget http://pecl.php.net/get/xhprof-0.9.4.tgz
tar zxvf xhprof-0.9.4.tgz
cd xhprof-0.9.4/extension/
sudo phpize
./configure --with-php-config=/usr/local/php/bin/php-config
sudo make && make install

或者 yum install php-xhprof

修改php.ini 新增:
extension = xhprof.so
; 注意:output_dir 必须存在且可写
xhprof.output_dir = /tmp/xhprof

使用

xhprof源码中的 xhprof_html 和 xhprof_lib两个文件夹将会使用到

xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);  //开始

//todo 需要监控的代码  
// .....

data = \xhprof_disable();   //返回运行数据
include_once 'xhprof_lib/utils/xhprof_lib.php';
include_once 'xhprof_lib/utils/xhprof_runs.php';objXhprofRun = new \XHProfRuns_Default();
run_id =objXhprofRun->save_run(data, "xhprof");
var_dump(run_id);

查看结果

拷贝  xhprof_html 和  xhprof_lib到一个可以访问的路径

访问 http://127.0.0.1/xhprof_html/index.php 即可看到结果

查看图形结果

# yum install libpng
# yum install graphviz

安装完成后 点击页面中的[View Full Callgraph] 即可看到图形结果

说明

输出结果
ct 函数调用次数,
wt 花费的时间,
cpu 花费的 CPU 时间(微秒即百万分之一秒),
mu 使用的内存(bytes),
pmu 使用的内存峰值(bytes)。

xhprof_enable 参数
XHPROF_FLAGS_CPU 分析结果中添加 CPU 数据
XHPROF_FLAGS_MEMORY 分析结果中添加内存数据
XHPROF_FLAGS_NO_BUILTINS 跳过 PHP 内置函数

结果说明
Incl. CPU (microsecs):包含内部函数 CPU 花费的时间,单位微秒
Excl. CPU (microsec):不包含内部函数 CPU 花费的时间,单位微秒
Incl. MemUse (bytes):包含内部函数所占内存,单位字节
Excl. MemUse (bytes):不包含内部函数所占内存,单位字节
Incl. PeakMemUse (bytes):包含内部函数所占内存峰值,单位字节
Excl. PeakMemUse (bytes):不包含内部函数所占内存峰值,单位字节及所占百分比(%)

Calls:函数的调用次数
Incl.:为 Including 包含的简写 
Excl.:为 Excluding 不包含的简写 
Wall Time:意为挂钟时间即任务花费的时间
main():一个虚构的函数,程序根节点 
bar@2:递归调用 2 次

可以认为共三种情况:
1. 包括内部函数
2. 不包括内部函数或者说函数本身
3. 所占总数(时间或内存使用)的百分比
peak 意为峰值

 

 

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注