zoukankan      html  css  js  c++  java
  • 使用xhprof对php7程序进行性能分析

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

    对于还在使用php5的朋友们,可以安装pecl的xhprof扩展

    http://pecl.php.net/package/xhprof
    

    但是因为长时间不更新,针对php7已无法正常安装,可以使用下的地址

    https://github.com/longxinH/xhprof/releases
    

      

    一、安装xhprof

    下载xhprof源码

    wget https://github.com/longxinH/xhprof/archive/v2.1.0.tar.gz
    

    解压源码包

    tar xf v2.1.0.tar.gz
    

    进入目录

    cd xhprof-2.1.0/extension
    

    运行phpize,请自行修改你们的phpize路径

    /data/nmp/php7/bin/phpize
    

    运行configure,请自行修改你们的php-config路径

    ./configure --with-php-config=/data/nmp/php7/bin/php-config
    

    编译安装

    make && make install
    

    修改php.ini配置,如果extension_dir配置了就不用再配置了,如果没配置,则把该目录指向,扩展编译安装后显示的路径。

    extension_dir = "/data/nmp/php7/lib/php/extensions/no-debug-zts-20170718"
    
    [xhprof]
    extension = xhprof.so
    xhprof.output_dir = /tmp/xhprof
    

      

    二、配置xhprof

    我们把扩展目录下的xhprof_html和xhprof_lib复制出来,单独存放到一个目录中。

    cp -a xhprof_html /data/wwwroot/xhprof
    cp -a xhprof_lib /data/wwwroot/xhprof
    

    针对要分析的项目,可以把如下代码添加到入口文件中:

    //开启性能分析
    xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU);
    //php中止时运行的函数
    register_shutdown_function(function () {
        //停止性能分析
        $xhprof_data = xhprof_disable();
        if (function_exists('fastcgi_finish_request')) {
            fastcgi_finish_request();
        }
        //引入xhprof库文件,路径请自行修改
        $XHPROF_ROOT = realpath(dirname(__FILE__) . '/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();
        //导出性能分析数据,默认xhprof.output_dir指定的目录
        $run_id = $xhprof_runs->save_run($xhprof_data, 'xhprof');
    });

    数据默认会导出到xhprof.output_dir指定目录,所以需创建该目录,并给予相关权限  

    mkdir /tmp/xhprof
    chmod -R 777 /tmp/xhprof
    

    这里我们写一个简单程序进行一下演示  

    <?php
    
    error_reporting(E_ALL);
    ini_set('display_errors', 'on');
    
    //开启性能分析
    xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU);
    //php中止时运行的函数
    register_shutdown_function(function () {
        //停止性能分析
        $xhprof_data = xhprof_disable();
        if (function_exists('fastcgi_finish_request')) {
            fastcgi_finish_request();
        }
        //引入xhprof库文件,路径请自行修改
        $XHPROF_ROOT = realpath(dirname(__FILE__) .'/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();
        //导出性能分析数据,默认xhprof.output_dir指定的目录
        $run_id = $xhprof_runs->save_run($xhprof_data, 'xhprof');
    });
    
    
    function a()
    {
        echo 'aaa';
        sleep(1);
        b();
    }
    
    function b()
    {
        echo 'bbb';
        sleep(3);
        c();
    }
    
    function c()
    {
        echo 'ccc';
        sleep(5);
    }
    
    a();
    

      

    三、配置虚拟主机,用来查看分析日志

    server {
        listen       80;
        server_name  xhprof.xxx.com;
        charset utf-8;
     
        root   /data/wwwroot/xhprof/xhprof_html;
        index  index.html index.htm index.php;
    
        location ~ .php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
    

    我们可以通过访问xhprof.xxx.com来查看分析日志了。

    如果点击 [View Full Callgraph] 无法查看,则需装如下工具:

    yum install -y libpng
    yum install -y graphviz
    

    如果上面安装完后,还是无法显示,并报如下错误:

    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

    https://graphviz.gitlab.io/_pages/Download/Download_source.html
    

    下载源码包,并编译安装

    tar xf graphviz.tar.gz
    cd graphviz-2.40.1
    ./configure
    make
    make install
    

      

      

  • 相关阅读:
    C# WinForm 取消DataGridView的默认选中Cell 使其不反蓝
    我们 成就了每个我的世界
    [转]firefox与IE的事件处理
    C# WinForm CheckedListBox 使用的相关简单总结
    [书目20090216]高绩效人士的五项管理 李践作品
    [转]asp.net导出Excel/Csv格式数据最优方案(C#)
    [文摘20090201]男女朋友~~需记住亦舒的77句话
    WML 参考手册
    [引]ASP.NET 移动网页 与 如何:使用仿真程序和浏览器在部署移动 Web 应用程序之前对其进行测试
    [文摘20090203]3G知识入门讲座
  • 原文地址:https://www.cnblogs.com/jkko123/p/10697575.html
Copyright © 2011-2022 走看看