阅读模式:

php7性能分析扩展工具xhprof

查看:220  :0  类型:  来源:php自学网  标签 php

        XHProf 是一个轻量级的分层性能测量分析器。 在数据收集阶段,它跟踪调用次数与测量数据,展示程序动态调用的弧线图。 它在报告、后期处理阶段计算了独占的性能度量,例如运行经过的时间、CPU 计算时间和内存开销。 函数性能报告可以由调用者和被调用者终止。 在数据搜集阶段 XHProf 通过调用图的循环来检测递归函数,通过赋予唯一的深度名称来避免递归调用的循环。 

        XHProf 包含了一个基于 HTML 的简单用户界面(由 PHP 写成)。 基于浏览器的用户界面使得浏览、分享性能数据结果更加简单方便。 同时也支持查看调用图。 XHProf 的报告对理解代码执行结构常常很有帮助。 比如此分层报告可用于确定在哪个调用链里调用了某个函数。 

        XHProf 对两次运行进行比较(又名 "diff" 报告),或者多次运行数据的合计。 对比、合并报告,很像针对单次运行的“平式视图”性能报告,就像“分层式视图”的性能报告。

一、XHProf安装php扩展

# 下载解压扩展包 https://pecl.php.net/package/xhprof(其他仓库:https://github.com/longxinH/xhprof)
wget -c https://pecl.php.net/get/xhprof-2.2.3.tgz
tar -xzvf xhprof-2.2.3.tgz

#生成扩展包so文件
cd xhprof-2.2.3/cd xhprof-2.2.3/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

xhprof.png

xhprof make.png

#php.ini配置
vim /usr/local/php/etc/php.ini
extension=xhprof.so 
xhprof.output_dir=/tmp/xhprof

#重启php-fpm
service php-fpm restart

xhprof php ini.png

二、XHProf使用

    使用前需要先下载xhprof界面展示代码,放在网站运行目录中。

    1.安装xhprof界面代码

    从仓库(https://github.com/longxinH/xhprof)中复制xhprof_lib和xhprof_html 两个文件夹到网址运行目录。并修改xhprof_lib文件夹中的callgraph.php文件中type为svg。

    图片为svg类型可以解决错误:failed to execute cmd: " dot -Tpng". stderr: `Format: "png" not recognized. Use one of: canon cmap cmapx cmapx_np dot eps fig gv imap imap_np ismap pic plain plain-ext pov ps ps2 svg svgz tk vml vmlz xdot '

graphviz php params type svg.png

    2.安装graphviz 

    graphviz 是一个图表生成软件,图标文件xhprof_html/callgraph.php会调用graphviz工具命令。。

yum install -y libpng
yum install -y graphviz
yum install -y graphviz-gd
<?php
// 开始分析
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

// 需要分析的代码

// 结束分析
$xhprof_data = xhprof_disable();

    *如果安装失败选择源码安装:

wget -c https://gitlab.com/graphviz/graphviz/-/package_files/6163716/download
tar -xzvf download
cd  graphviz-2.46.0
make #make后如果有报错直接忽略,直接安装
make install
dot -v

dot -v.png

xhprof手册:http://web.archive.org/web/20110514095512/http://mirror.facebook.net/facebook/xhprof/doc.html (需翻墙)

    3.生成采样

<?php
ini_set('display_errors', on);
//开启性能分析
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

// 程序执行完调用
register_shutdown_function(function() {
    //停止性能分析
    $xhprof_data = xhprof_disable();
    include_once  './xhprof_lib/utils/xhprof_lib.php';
    include_once  './xhprof_lib/utils/xhprof_runs.php';
    $xhprof_runs = new \XHProfRuns_Default();
    $run_id = $xhprof_runs->save_run($xhprof_data, 'zx');
    // echo $run_id;
});

    访问采样:https://server_name/xhprof_html/index.php。

采样报告图:

Report.png

Report-[View Full Callgraph].png


分享到:
0 0

我的看法:

IN: