zoukankan      html  css  js  c++  java
  • php性能分析工具

    一、前言

      有用的东西还是记录下来吧,也方便以后的查询;这次记录一下xhprof的安装使用;

      xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,

      还可以用在生产环境中,也可以由程序开 关来控制是否进行profile。

    二、安装

    1.    wget http://pecl.php.net/get/xhprof-0.9.3.tgz  
    
    2.    tar zxf xhprof-0.9.3.tgz  
    
    3.    cd xhprof-0.9.3/extension
    
    4.    /usr/bin/phpize 
         (php版本安装后生成的phpize文件,可根据phpinfo查看,所以php版本不同,生成的phpize也不同,此步骤主要生成configure文件)
    
    5.    ./configure  –with-php-config=/usr/bin/php-config  
        (php-config的路径,也是php安装后生成的文件)  
    
    6.    make  
    
    7.    sudo make install 
        (会自动将生成的扩展文件拷贝到扩展目录中/usr/lib64/php/modules)
    
        当然具体的php文件的目录,每个人不尽相同,可根据phpinfo查询

    三、php.ini配置

    1 根据phpinfo找到 extension_dir的目录
    2 (/etc/php.d/xhprof.ini)
    3 
    4 添加一下内容:
    5 
    6 extension=xhprof.so
    7 xhprof.output_dir=/tmp/xhprof //xhprof的分析日志

    四、重启服务

    1 sudo /etc/init.d/http restart
    2 
    3 查看phpinfo是否安装成功

    五、使用方法

     1 开头:
     2 xhprof_enable(); //开启监测  
     3 //xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不记录内置的函数  
     4 //xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);  同时分析CPU和Mem的开销  
     5 
     6 //要测试的代码
     7 ...
     8 ...
     9 ...
    10 
    11 结尾:
    12 $xhprof_data = xhprof_disable();  //停止监测,返回运行数据
    13 $xhprof_root = '/(xhprof的虚拟主机目录)/';  
    14  //引入当初安装到xhprof虚拟主机目录中的文件
    15 include_once $xhprof_root."xhprof_lib/utils/xhprof_lib.php";  
    16 include_once $xhprof_root."xhprof_lib/utils/xhprof_runs.php";   
    17 $xhprof_runs = new XHProfRuns_Default();   
    18 $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof");
    19 echo '<a href="http://(xhprof的虚拟主机域名)/xhprof_html/index.php?run='.$run_id.'&source=xhprof" target="_blank">xhprof统计</a>';  

      上边的代码使用了,给xhprof设置虚拟主机的方法。

      把源码包中的 xhprof_html 和 xhprof_lib 文件夹拷贝到自己建立的虚拟目录中

      cp -r xhprof_html xhprof_lib /xxx/xhprof/  (此处目的是建立数据分析目录,可将此目录配置成虚拟主机访问)

      运行后,统计点击返回的 xhprof统计 链接,即可。

    六、注意问题以及名词解释

      在显示的统计页面中,点[View Full Callgraph]图形化显示(最大的性能问题会用红色标出,其次是黄色);

      点击后,可能提示错误消息,执行以下命令即可

    1 yum install -y graphviz
    2 yum install graphviz-gd

      名词解释

     1     Function Name 函数名
     2     Calls 调用次数
     3     Calls% 调用百分比
     4     Incl. Wall Time (microsec) 调用的包括子函数所有花费时间 以微秒算(一百万分之一秒)
     5     IWall% 调用的包括子函数所有花费时间的百分比
     6     Excl. Wall Time (microsec) 函数执行本身花费的时间,不包括子树执行时间,以微秒算(一百万分之一秒)
     7     EWall% 函数执行本身花费的时间的百分比,不包括子树执行时间
     8     Incl. CPU(microsecs) 调用的包括子函数所有花费的cpu时间。减Incl. Wall Time即为等待cpu的时间
     9     减Excl. Wall Time即为等待cpu的时间
    10     ICpu% Incl. CPU(microsecs)的百分比
    11     Excl. CPU(microsec) 函数执行本身花费的cpu时间,不包括子树执行时间,以微秒算(一百万分之一秒)。
    12     ECPU% Excl. CPU(microsec)的百分比
    13     Incl.MemUse(bytes) 包括子函数执行使用的内存。
    14     IMemUse% Incl.MemUse(bytes)的百分比
    15     Excl.MemUse(bytes) 函数执行本身内存,以字节算
    16     EMemUse% Excl.MemUse(bytes)的百分比
    17     Incl.PeakMemUse(bytes) Incl.MemUse的峰值
    18     IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比
    19     Excl.PeakMemUse(bytes) Excl.MemUse的峰值
    20     EPeakMemUse% EMemUse% 峰值百分比

    七、参考资料

    1  http://blog.csdn.net/maitiandaozi/article/details/8896293
    2  http://www.cnblogs.com/wangtao_20/archive/2011/03/16/1986508.html
    3  http://www.cnblogs.com/wangtao_20/archive/2013/09/13/3320497.html
    4  
    5  http://avnpc.com/pages/profiler-php-performance-online-by-xhprof
    6  http://www.ituring.com.cn/article/132392
    7  http://www.ituring.com.cn/article/133062?utm_source=tuicool
  • 相关阅读:
    owlcar 用法心得 自定义导航
    placeholder 颜色
    图片加载完后执行事件
    针对动态创建的数据添加事件
    弹窗(遮罩层)
    [iOS]把16进制(#871f78)颜色转换UIColor
    [AFN]AFNetworking错误总结
    [iOS]如何给Label或者TextView赋HTML数据
    [iOS]解决模拟器无法输入中文问题
    [iOS]开发者证书和描述文件的作用
  • 原文地址:https://www.cnblogs.com/fanfan259/p/4721218.html
Copyright © 2011-2022 走看看