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

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

  1. 你和别人同时写出了一个导出订单的功能,你的导出一次用了30分钟,别人用了1分钟,那么这里就很明显的区分出来了你们代码的效率。代码的优劣是问题的根源。如果你想找出是什么原因导致代码执行这么慢,那么你就要学会怎么分析代码性能,找到代码瓶颈。
  2.  
  3. 除了之前我们所说的可以使用xdebug分析PHP性能之外还可以使用xhprof分析。
  4.  
  5. Xhproffacebook开源出来的一个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。

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

8. 验证是否安装成功

  1. 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

  1. sudo vi ~/.bash_profile

  1. source ~/.bash_profile
  1. 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/

PHP - xhprof+Graphviz 安装配置的更多相关文章

  1. 画图工具Graphviz安装配置

    Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形.它也提供了供其它软件使用的库 ...

  2. php性能分析工具 - xhprof的安装使用

    一.前言 有用的东西还是记录下来吧,也方便以后的查询:这次记录一下xhprof的安装使用: xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低, ...

  3. xhprof扩展安装与使用

    目录 一.xhprof扩展安装步骤 二.xhprof的使用 总结 参考资料 一.xhprof扩展安装步骤 xhprof是PHP的一个扩展,最好也直接安装上graphviz图形绘制工具(用于xhprof ...

  4. PHP性能追踪及分析工具xhprof的安装与使用

    对于本地开发环境来说,进行性能分析xdebug是够用了,但如果是线上环境的话,xdebug消耗较大,配置也不够灵活,因此线上环境建议使用xhprof进行PHP性能追踪及分析. 我们今天就简单介绍一下x ...

  5. windows下Graphviz安装及入门教程

    下载安装配置环境变量 intall 配置环境变量 验证 基本绘图入门 graph digraph 一个复杂的例子 和python交互 发现好的工具,如同发现新大陆.有时,我们会好奇,论文中.各种专业的 ...

  6. Graphviz安装及简单使用

    Graphviz Windows环境安装: 1.官网下载 官网下载地址 2.配置环境变量 将graphviz安装目录下的bin文件夹添加到Path环境变量中: 3.验证是否安装并配置成功 进入wind ...

  7. Anaconda安装Graphviz, mac下Graphviz安装, pcharm中调用pycharm, Graphviz典型例子

    mac下的Graphviz安装及使用 2017年10月13日 13:30:07 阅读数:7495 一.安装 Graphviz http://www.graphviz.org/ mac用户建议直接用ho ...

  8. 第【一】部分Netzob项目工具的安装配置

    第[一]部分Netzob项目工具的安装配置 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitp ...

  9. python中使用graphviz环境配置

    去官网下载graphviz,并下一步安装 配置graphviz的bin目录到path环境变量下 python相关包: 使用conda注意:conda install graphviz 可能没用,要使用 ...

随机推荐

  1. JSP基础学习

    JQuery教程: http://www.w3school.com.cn/jquery/ HTTP协议的 http://www.w3.org/Protocols/rfc2616/rfc2616.htm ...

  2. [LeetCode] Wiggle Sort

    Problem Description: Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[ ...

  3. 利用 lucene.net 实现高效率的 WildcardQuery ,记一次类似百度搜索下拉关键字联想功能的实现。

    打开百度输入  站内搜索也要实现类似功能.最基础的做法,写个方法查数据库搜索历史综合表keywordSearch(先将被搜索过的关键字记录到一张表,记录好他们被搜索的次数.上次搜索的有多少结果) 大概 ...

  4. [转]Java线程安全总结

    最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣.已经拟好了提纲,大概分为这几个主题: java线程安全,java垃圾收集,java并发包详细介绍,java profi ...

  5. 尝试使用Memcached遇到的狗血问题

    乘着有时间,尝试下利用Memcached进行分布式缓存,其中遇到了不少问题及狗血的事情,开篇记录下,希望对您有帮助. 我之前的项目为:Asp.Net MVC4 + Nhibernate + MSSQL ...

  6. css实现了hover显示title的效果

    <div data-title="hello, world">hello...</div> <style> div { position: re ...

  7. .Net Core Linux centos7行—hyper-v安装linux系统和.net core sdk

    下载linux系统,选择安装centos7 下载地址:https://www.centos.org/download/ 安装centos7 hyper-v选择新建虚拟机 根据向导一路next,虚拟机代 ...

  8. 前端代码目录结构、常用 piugin、元素补充用法及其它注意事项

    目录结构: app:  .html文件 css: .css文件 script: 脚本文件 plugin: 插件  (此目录放一些通用代码) 注意事项: 1.在IE浏览器下img会显示边框,为了保证兼容 ...

  9. Centos7下安装python,查看python版本

    安装Centos的时候,一般会自带默认安装python2.x 一般用python -V可以查看python版本. 我当时安装的时候,运行了那个语句,但是却显示了一大堆出来,虽然里面也带有版本信息,但是 ...

  10. Spring-----定时任务Quartz配置

    第一种,作业类继承自特定的基类:org.springframework.scheduling.quartz.QuartzJobBean. 第一步:定义作业类 import org.quartz.Job ...