zoukankan      html  css  js  c++  java
  • PHP

    简介:XHProf是Facebook放出的轻量级调试工具。和Xdebug相比,XHProf更加易用和可控,尤其是生成流程图和调试数据对比的功能很好很强大。

    参考:http://us2.php.net/manual/zh/book.xhprof.php

    你和别人同时写出了一个导出订单的功能,你的导出一次用了30分钟,别人用了1分钟,那么这里就很明显的区分出来了你们代码的效率。代码的优劣是问题的根源。如果你想找出是什么原因导致代码执行这么慢,那么你就要学会怎么分析代码性能,找到代码瓶颈。
    
    除了之前我们所说的可以使用xdebug分析PHP性能之外还可以使用xhprof分析。
    
    Xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开关来控制是否进行profile。

    下载安装

    sudo wget https://codeload.github.com/phacility/xhprof/zip/master -O xhprof.zip
    你也可以从 http://pecl.php.net/package/xhprof 这里下载。

    注意:
    php5.4及以上版本不能在pecl中下载,不支持。需要在github上下载https://github.com/facebook/xhprof。
    另外xhprof已经很久没有更新过了,截至目前还不支持php7。

    cd xhprof-master/
    cd extension/
    sudo /usr/local/webserver/php-5.6.21/bin/phpize
    sudo ./configure --with-php-config=/usr/local/webserver/php/bin/php-config --enable-xhprof
    sudo make && make install
     
    [xhprof]
    extension=xhprof.so
    xhprof.output_dir=/home/xhprof  定义输出文件的存放位置

    8. 验证是否安装成功

    php -m  

    性能测试

    关于xhprof的使用,请参照手册 http://php.net/xhprof

     
     
     

    graphviz

    graphviz是一个绘制图形的工具,可以更为直观的让你查看性能的瓶颈。

    graphviz 安装 (安装Graphviz的目的是为了xhprof图形化web工具查看profiling log文件。)

     安装完成后,会生成/usr/local/bin/dot文件,确保路径在PATH环境变量里,以便XHProf能找到它,graphviz处于/usr/local/lib/graphviz

    sudo vi ~/.bash_profile

    source ~/.bash_profile
    echo $PATH

    看看输出里面是不是已经有了/usr/bin/dot这个路径了。

    11. http://10.5.100.243:8091/xhprof_html/callgraph.php?run=52c6416d09cf5&source=xhprof_foo

    报错了 Notice: Undefined variable: pipes in /home/www/phpsite/pt/xhprof_lib/utils/callgraph_utils.php on line 112 Warning:proc_open() has been disabled for security reasons in /home/www/phpsite/pt/xhprof_lib/utils/callgraph_utils.php on line 112 failed to execute cmd " dot -Tpng"

     

    打开/usr/local/php/etc/php.ini, 找到disable_functions,把proc_open()从disable_functions列表中去掉。

    先执行
    killall php-fpm

    再执行(usr/local/php是php的安装目录)
    /usr/local/php/sbin/php-fpm &

    参考: https://drupal.org/node/366299

    13. 如何看懂XHProf分析报告

    如图1所示,XHProf报告中有许多列,它们代表的含义见下表:

    列名

    描述

    Function Name

    方法名称。

    Calls

    方法被调用的次数。

    Calls%

    方法调用次数在同级方法总数调用次数中所占的百分比。

    Incl.Wall Time

    (microsec)

    方法执行花费的时间,包括子方法的执行时间。(单位:微秒)

    IWall%

    方法执行花费的时间百分比。

    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%

    方法本身执行占用的内存百分比。

    Incl.PeakMemUse

    (bytes)

    Incl.MemUse峰值。(单位:字节)

    IPeakMemUse%

    Incl.MemUse峰值百分比。

    Excl.PeakMemUse

    (bytes)

    Excl.MemUse峰值。单位:(字节)

    EPeakMemUse%

    Excl.MemUse峰值百分比。

    其他

    你也可以使用xhprof.io或者xhgui工具来分析你的xhprof结果。
    下边是PHP性能分析和PHP性能调优的三篇文章

    中文翻译版:
    PHP 性能分析第一篇: Xhprof & Xhgui 介绍
    PHP 性能分析第二篇: Xhgui In-Depth
    PHP 性能分析第三篇: 性能调优实战

    英文原版:
    Profiling PHP Part 1: Intro to Xhprof & Xhgui
    Profiling PHP Part 2: Xhgui In-Depth
    Profiling PHP Part 3: Practical Performance Tuning

    参考资料

    xhprof地址 https://github.com/facebook/xhprof
    xhprof手册 http://php.net/xhprof
    使用xhprof进行线上PHP性能追踪及分析 http://avnpc.com/pages/profiler-php-performance-online-by-xhprof?utm_source=tuicool&utm_medium=referral
    xhprof.io https://github.com/gajus/xhprof.io
    xhgui https://github.com/perftools/xhgui
    oneapm http://www.oneapm.com/

  • 相关阅读:
    MongoDB数据类型
    Redis数据类型
    RHEL7 CentOS7 检查查看精简指令
    Linux命令:查看登录用户
    JavaScript错误之:Uncaught ReferenceError: $ is not defined
    Linux下因为系统编码问题造成乱码的解决办法
    Linux系统下的程序开发之:命名规范
    优化php代码
    Git工具:Widows下的使用(提交到Github)
    MongoDB
  • 原文地址:https://www.cnblogs.com/wicub/p/6225611.html
Copyright © 2011-2022 走看看