zoukankan      html  css  js  c++  java
  • xhprof性能分析工具安装与使用

    前言

    性能分析是衡量应用程序在代码级别的相对性能。性能分析将捕捉的事件包括:CPU的使用,内存的使用,函数的调用时长和次数,以及调用图。性能分析的行为也会影响应用性能。

    在 PHP 世界里,有两个截然不同的的性能分析器——主动和被动。

    主动 VS 被动性能分析

    主动分析器在开发过程中使用,由开发人员启用。主动分析器收集的信息比被动分析器多,对性能的影响更大。通常,主动分析器不能用在生产环境中。XDebug 就是一种主动分析器。

    因为无法在生产环境中使用主动分析器,Facebook 推出了一个被动分析器——XHProf。XHProf 是为了在生产环境中使用而打造的。它对性能的影响最小,同时收集足够的信息用于诊断性能问题。

    XDebug适用于开发环境,XHprof更适用于生产环境。


    安装

    下载地址:http://pecl.php.net/package/xhprof

    1.wget http://pecl.php.net/get/xhprof-2.2.0.tgz

    2.tar -zvxf xhprof--2.2.0.tgz

    3.cd xhprof--2.2.0

    4.cd extension/

    5.开始安装php扩展 phpize

    6../configure --with-php-config=/usr/local/php/bin/php-config  (这里php-config的路径以你的配置为准,不知道的可以php -i查看下)

    7.make && make install

    8.修改php.ini文件

    加入配置

    [xhprof]
    extension=xhprof.so
    xhprof.output_dir=/www/wwwroot/yourwebpath/public/xhprof

    xhprof.output_dir指定概要分析文件的存放路径。

    9.重启php-fpm使用php -m 查看已加载扩展

    安装成功!

    配置分析结果网站 

    1.新建一个站点 设置一个可用的端口

    2.将解压出来的安装包中的xhprof_html和xhprof_lib文件夹拷贝到站点根目录

    访问可以使用ip:端口/xhprof_html/index.php 检查是否配置成功

    项目集成

    以thinkphp5为例

    1.在application/config.php中指定xhprof的相关配置信息,以便更方便的动态管理xhprof

    'xhprof'=>[
            'enable'=>true,
            'name'=>'mysite',//多项目用
            'code'=>'mycode',
            'domain'=>'' //分析结果展示域名 需要家端口号,前面配置过的
        ]

    2.在application/tags.php配置行为扩展文件

    'app_init'     => [
            'app\common\behavior\XhprofEnable',
        ],
    'app_end'      => [
            'app\common\behavior\XhprofDisable',
        ],

    3.application/commo/behavior/XhprofEnable.php

    <?php
    
    
    namespace appcommonehavior;
    
    
    class XhprofEnable
    {
        public function run(&$params) {
            if(config('xhprof.enable') && input('code') == config('xhprof.code')
                && input('DEBUG_PROFILE') && extension_loaded('xhprof')
            ) {
                require_once EXTEND_PATH.'xhprof_lib/utils/xhprof_lib.php';//这里需要注意的是将xhprof_lib文件夹拷贝到网站的能访问到的目录,我这里是放在了项目的extend目录下
                require_once EXTEND_PATH.'xhprof_lib/utils/xhprof_runs.php';
                xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);
            }
        }
    }

    4.application/commo/behavior/XhprofDisable.php

    <?php
    
    
    namespace appcommonehavior;
    
    
    class XhprofDisable
    {
        public function run(&$params) {
            if(config('xhprof.enable') && input('code') == config('xhprof.code')
                && input('DEBUG_PROFILE') && extension_loaded('xhprof')
            ) {
                $ns = config('xhprof.name') ?: 'myxhprof';
                $xhprofData = xhprof_disable();
                $xhprofRuns = new XHProfRuns_Default();
                $runId = $xhprofRuns->save_run($xhprofData, $ns);
                $url = config('xhprof.domain').'/xhprof_html/index.php';
                $url .= '?run=%s&source=%s';
                $url = sprintf($url, $runId, $ns);
                echo '<a href="'.$url.'" target="_blank">查看分析结果</a>';
                exit;
            }
        }
    }

    至此全部配置完毕

    在浏览器中输入需要分析的地址加上&DEBUG_PROFILE=1&code=config中配置的code码

    点击查看如果是按照我这样配置可能会出现404,临时解决办法去掉链接中的域名只保留ip部分

    点击view full Callgraph可查看详细的调用图,很直观

    你可能又报错了

    说先你得在服务器上安装graphviz

    //红帽系列
    yum install graphviz
    //Ununtu
    apt-get install graphviz
    //OS X
    brew install graphviz

    然后修改php.ini文件 disable_functions中把proc_open去掉,重启php-fpm,再打开浏览器,大功告成

    最后,在分析带有smarty模板缓存的页面时可能用不了,这玩意应该适用于api接口性能的分析

    参考文档:

    PHP性能分析介绍:XHprof&XHGui,http://blog.oneapm.com/apm-tech/235.html

    XHprof安装和使用,http://www.lanecn.com/article/main/aid-58

    XHprof报告字段含义,https://blog.csdn.net/wide288/article/details/50427438

    XHprof报告性能图报错,https://blog.csdn.net/jo_andy/article/details/78526487

  • 相关阅读:
    JSP环境探针-当前电脑所有系统参数
    SqlServer service broker 分布式系统(赵松桃)跳水 2005 数据库编程
    主机Window不能访问该虚拟机Linux Samba文件服务提供了一个文件夹
    hdu 4901 The Romantic Hero
    linux、hdfs、hive、hbase经常使用的命令
    Android 设计模式模式适配器
    PHP扩展memcache模
    算法——字符串匹配Rabin-Karp算法
    三个重要的散列演示
    CodeForces 10C. Digital Root
  • 原文地址:https://www.cnblogs.com/create-l/p/13181810.html
Copyright © 2011-2022 走看看