美文网首页
# 使用 xhprof 对php进行性能分析

# 使用 xhprof 对php进行性能分析

作者: airmy丶 | 来源:发表于2021-01-28 15:21 被阅读0次

    安装xhprof拓展

    地址: https://pecl.php.net/package-info.php?package=xhprof。目前公司的环境还是5.6的版本,所以我这里选择了0.9.4的版本(使用2.x的版本不适用php5.6)

    下载后解压进入解压文件

    cd xhprof-0.9.4/extension
    
    # 安装php拓展的三步
    phpize
    
    ./configure
    
    make && make install
    
    

    安装完成之后,添加到php.ini配置文件

     [xhprof]
     extension=xhprof.so
     ; 存放性能收集数据的目录-自定义
     xhprof.output_dir=/tmp/xhprof
    

    xhprof使用

    xhprof压缩包下载之后会有两个xhprof开头的文件夹: xhprof_html,xhprof_lib,如图:

    xhprof-0.9.4
    ├── CHANGELOG
    ├── CREDITS
    ├── LICENSE
    ├── README
    ├── examples
    ├── extension
    ├── xhprof_html
    └── xhprof_lib
    

    将这两个文件夹复制到项目的目录下(这里我做测试直接放到了项目的根目录下了),随便找一个控制器方法:

    public function test()
    {
        // 如果这里出现502使用下面这条语句
        // xhprof_enable( XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);
        xhprof_enable();
        // 业务代码
        ....
        
        $xhprof_data = xhprof_disable();
        $XHPROF_ROOT = PROJECT_ROOT_PATH;
        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, "xhprof_foo");
        $url = "http://localhost/index.php?run=$run_id&source=xhprof_foo";
        echo '<a href="'.$url.'">'.$url.'</a>';exit;
    }
    
    

    关于这里的分析结果路径http://localhost/index.php?run=$run_id&source=xhprof_foo,这个结果路径是调用的xhprof_html下的index.php,所以做测试的时候我配置了一个nginx站点只想xhprof_html 这个路径,访问接口就可以直接输出分析结果路径了。

    image

    点击链接就可以看到各个过程只想消耗时间,调用次数等:

    image

    点击 View Full Callgraph 还可以生成图表,图表需要系统安装 graphviz

    image

    分析结果各字段含义

    指标 含义
    Function Name 方法名称
    Calls 方法被调用次数
    Calls% 方法调用次数在同级方法总数调用次数中所占的百分比。
    Incl.Wall Time(microsec) 方法执行花费的时间,包括子方法的执行时间.(单位:微秒)
    Excl.Wall Time(microsec) 方法本身执行花费的时间,不包括子方法的执行时间.(单位:微秒)
    EWall% 方法本身执行花费的时间百分比.
    Incl. CPU(microsecs) 方法执行花费的CPU时间,包括子方法的执行时间(单位:微秒)
    ICpu% 方法执行花费的CPU时间百分比。
    Excl. CPU(microsec) 方法本身执行花费的CPU时间,不包括子方法的执行时间(单位:微秒)
    ECPU% 方法本身执行花费的CPU时间百分比。
    Incl.MemUse(bytes) 方法执行占用的内存,包括子方法执行占用的内存(单位:字节)
    IMemUse% 方法执行占用的内存百分比。
    Excl.MemUse(bytes) 方法本身执行占用的内存,不包括子方法执行占用的内存。(单位:字节)
    EMemUse% 方法本身执行占用的内存百分比。

    相关文章

      网友评论

          本文标题:# 使用 xhprof 对php进行性能分析

          本文链接:https://www.haomeiwen.com/subject/wltxtltx.html