zoukankan      html  css  js  c++  java
  • XHprof 使用 (转)

    原文地址:http://blog.csdn.net/maitiandaozi/article/details/8896293

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

    1.安装XHprof

    [plain] view plain copy
     
     print?
    1. wget http://pecl.php.net/get/xhprof-0.9.2.tgz  
    2. tar zxf xhprof-0.9.2.tgz  
    3. cd xhprof-0.9.2  
    4. cp -r xhprof_html xhprof_lib /你的web目录路径/xhprof/  (此处目的是建立数据分析目录,可将此目录配置成虚拟主机访问)  
    5. cd extension/  
    6. /usr/local/webserver/php/bin/phpize  
    7. ./configure  –with-php-config=/usr/local/webserver/php/bin/php-config   (php-config的路径)  
    8. make && make install  

    安装完提示:
    Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20060613/

    2.php.ini中添加

    extension_dir = "/usr/lib/php5/20090626/"
    这句我原来就有了,就这用添加下面两句
    extension=xhprof.so
    xhprof.output_dir=/www/logs/xhprof

    分析日志输出在/www/logs/xhprof目录。

    3.重启Nginx服务器和php,打开phpinfo()页面便可以看到看到输出中有了xhprof信息。

    [plain] view plain copy
     
     print?
    1. xhprof  0.9.2  
    2. CPU num  2  

    4.安装libpng包

    否则会因为dot 不支持PNG,不能显示图表数据分析,且 出现Error: either we can not find profile data for run_id 4d7f0bd99a12f or the threshold 0.01 is too small or you do not have ‘dot’ image generation utility installed.的错误

    [plain] view plain copy
     
     print?
    1. wget http://nchc.dl.sourceforge.net/project/libpng/libpng15/1.5.1/libpng-1.5.1.tar.gz  //如果不可用,可以在网上找一个下下来再编译安装  
    2. tar zxf libpng-1.5.1.tar.gz    
    3. cd libpng-1.5.1    
    4. ./configure    
    5. make    
    6. make install    

    5.安装graphviz,一个画图工具

    [plain] view plain copy
     
     print?
    1. wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz  
    2. tar zxf graphviz-2.24.0.tar.gz  
    3. cd graphviz-2.24.0  
    4. ./configure--with-png=yes  
    5. make && make install  

    6.使用方法:

    [plain] view plain copy
     
     print?
    1. 头部:  
    2. xhprof_enable();   
    3. //xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不记录内置的函数  
    4. //xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);  同时分析CPU和Mem的开销  
    5. $xhprof_on = true;  
    6.   
    7. 生产环境可使用:  
    8. if (mt_rand(1, 10000) == 1) {  
    9.    xhprof_enable();  
    10.    $xhprof_on = true;  
    11. }  
    12.   
    13. 尾部:  
    14. if($xhprof_on){  
    15. $xhprof_data = xhprof_disable();  
    16. $xhprof_root = '/www/<span style="font-family: Arial, Helvetica, sans-serif;">(xhprof的虚拟主机目录)</span>/';  
    17. include_once $xhprof_root."xhprof_lib/utils/xhprof_lib.php";   
    18. include_once $xhprof_root."xhprof_lib/utils/xhprof_runs.php";   
    19. $xhprof_runs = new XHProfRuns_Default();   
    20. $run_id = $xhprof_runs->save_run($xhprof_data, "hx");  
    21. echo '<a href="http://(xhprof的虚拟主机域名)/xhprof_html/index.php?run='.$run_id.'&source=hx" target="_blank">统计</a>';  
    22. }  
    23.   
    24. 运行程序,底部出现统计字样,点过去就可以看到性能分析了。按运行时间排序,很容易找出化时间最长的函数。  
    25. 点[View Full Callgraph]图形化显示,最大的性能问题会用红色标出,其次是黄色。  


    附运行结果里的名次解释:

    [plain] view plain copy
     
     print?
      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% 峰值百分比  
  • 相关阅读:
    总结oninput、onchange与onpropertychange事件的用法和区别,onchange
    即时反应的input和propertychange方法
    响应式网页
    angularJS问题集结
    网页边框样式与style样式部分总结
    软件工程问题及回答
    第13章到第17章问题
    《构建之法》第10、11、12章
    《构建之法》第8,9,10章
    [css]等高列的简单实现
  • 原文地址:https://www.cnblogs.com/zhudongchang/p/5668295.html
Copyright © 2011-2022 走看看