linux下XHProf的安装和使用

XHProf是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开 关来控制是否进行profile。

1.安装XHprof

wget http://pecl.php.net/get/xhprof-0.9.2.tgz
tar zxf xhprof-0.9.2.tgz
cd xhprof-0.9.2
cp -r xhprof_html xhprof_lib /你的web目录路径/xhprof/  (此处目的是建立数据分析目录,可将此目录配置成虚拟主机访问)
cd extension/
/usr/local/webserver/php/bin/phpize
./configure  –with-php-config=/usr/local/webserver/php/bin/php-config   (php-config的路径)
make && make install
安装完提示:
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20060613/

2.php.ini中添加

extension_dir = "/usr/lib/php5/20090626/"
这句我原来就有了,就这用添加下面两句
extension=xhprof.so
xhprof.output_dir=/www/logs/xhprof

分析日志输出在/www/logs/xhprof目录。

3.重启Nginx服务器和php,打开phpinfo()页面便可以看到看到输出中有了xhprof信息。

xhprof  0.9.2
CPU num  2

4.安装libpng包

否则会因为dot 不支持PNG,不能显示图表数据分析,且 出现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.的错误

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  

5.安装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

6.使用方法:

头部:
xhprof_enable(); 
//xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不记录内置的函数
//xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);  同时分析CPU和Mem的开销
$xhprof_on = true;

生产环境可使用:
if (mt_rand(1, 10000) == 1) {
   xhprof_enable();
   $xhprof_on = true;
}

尾部:
if($xhprof_on){
$xhprof_data = xhprof_disable();
$xhprof_root = '/www/(xhprof的虚拟主机目录)/';
include_once $xhprof_root."xhprof_lib/utils/xhprof_lib.php"; 
include_once $xhprof_root."xhprof_lib/utils/xhprof_runs.php"; 
$xhprof_runs = new XHProfRuns_Default(); 
$run_id = $xhprof_runs->save_run($xhprof_data, "hx");
echo '<a href="http://(xhprof的虚拟主机域名)/xhprof_html/index.php?run='.$run_id.'&source=hx" target="_blank">统计</a>';
}

运行程序,底部出现统计字样,点过去就可以看到性能分析了。按运行时间排序,很容易找出化时间最长的函数。
点[View Full Callgraph]图形化显示,最大的性能问题会用红色标出,其次是黄色。

附运行结果里的名次解释:
    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% 峰值百分比

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值