XHProf
这个软件本是Facebook内部的一个应用工具,20093月份开源,为PHP的性能监测提供了很好的工具。官方的介绍中提到:
XHProf is a hierarchical profiler for PHP. It reports function-level call counts and inclusive and exclusive metrics such as wall (elapsed) time, CPU time and memory usage.
XHProf's light-weight nature and aggregation capabilities make it well suited for collecting "function-level" performance statistics from production environments.
 
可以先来看看 XHProf 提供的图形界面的截图
 
XHProf的一些特性:
1Flat Profile. 提供函数级的汇总信息,比如调用次数、执行时间、内存使用、CPU占用等。
2Hierarchical Profile 对每个程序,进行了父级调用和子级调用的分解。
3Diff Reports(差异报告)有很多种情况,我们希望能够对比,比如新版本比旧版本提升了多少速度,两个版本的差距究竟在哪里。Diff Report 就是这样的工具,接收两个输入,并且分别给出各自的 Flat Profile Hierarchical Profile 报告。
4Callgraph View(调用视图)性能监测的数据可以绘制成调用视图,方便我们查看。
5Memory Profile(内存监控)这个特性帮助我们了解PHP如何分配和释放内存。值得注意的是,XHProf并不是严格的监测内存的分配和释放动作,而是计算每个函数进入和退出时的内存状况,这是一个相对简单的实现方式,但是基本上也能够满足我们日常的监控需求。
6如何处理外部文件XHProf include,require,include_once,require_once进来的文件视作是一个 function
XHProf目前只支持一个级别的函数追踪,但是貌似也没有特别大的影响。
XHProf的安装配置
xhprof的安装配置很简单,我们首先在 PECL 的网站上下载 源码包 然后执行安装过程
% cd <xhprof_source_directory>/extension/
% phpize
% ./configure --with-php-config=<path to php-config>
% make
% make install
% make test
php.ini file: You can update your php.ini file to automatically load your extension. Add the following to your php.ini file.
[xhprof]
extension=xhprof.so
;
; directory used by default implementation of the iXHProfRuns
; interface (namely, the XHProfRuns_Default class) for storing
; XHProf runs.
;
xhprof.output_dir=<directory_for_storing_xhprof_runs>
 
xhprof的使用也很简单,只要将需要监控的脚本放在 xhprof_enable() xhprof_disable() 中间,就可以得到相应的结果,同时也提供了一些参数可以让我们设置是否监控 Memory, CPU 的使用,是否监控PHP内置的函数,从 0.9.2 之后,还可以设置跳过一些特定的函数。
XHProf 生成的数据,可以用 XHProf UI 来进行简单的显示。
XHProf使用也很简单,下面是一个官方的例子:
<?php
function bar($x) {
  if ($x > 0) {
目前行的php开发工具有    bar($x - 1);
  }
}
function foo() {
  for ($idx = 0; $idx < 2; $idx++) {
    bar($idx);
    $x = strlen("abc");
  }
}
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
foo();
$xhprof_data = xhprof_disable();
//
/
/ Saving the XHProf run
// using the default implementation of iXHProfRuns.
//
include_once "xhprof_lib/utils/xhprof_lib.php";
include_once "xhprof_lib/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();
// Save the run under a namespace "xhprof_foo".
//
// **NOTE**:
// By default save_run() will automatically generate a unique
// run id for you. [You can override that behavior by passing
// a run id (optional arg) to the save_run() method instead.]
//
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");
echo "---------------\n".
    "Assuming you have set up the http based UI for \n".
    "XHProf at some address, you can view run at \n".
    "<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n".
    "---------------\n";
?>
 
我们可以持久化记录的数据,数据以文件的形式保存在指定的目录,如下图:
有了这个工具,我们可以根据其提供的数据,与相应的通知接口整合,在程序运行出现问题时,及时的发送通知信息。
 
PHP性能监控,还有两个可用的工具,一个是 XDebug,另外一个是 ZendServer,我会在接下来继续进行介绍。
Technorati 标签: profile,监控,xhprof
参考文档:
1Speed UP your php with xhprof
2xhprof document
XHProf文件(草稿)
   
翻译:徐仁禄  <xurenlu [at] gmail >
原文地址: mirror.facebook/facebook/xhprof/doc.html
初次翻译,大部分是google translate tookit工具给翻的,稍微修改了下。如遇错误,还请来信指出。谢谢!
目录
1. 导言
2. XHProf 概况
3. 安装XHProf扩展
4. 使用XHProf进行性能分析
5. 设置XHProf用户界面
6. 在生产环境中使用XHProf注意事项
7. 轻量级采样模式
8. 附加功能
9. 信赖
10. 鸣谢
1. 导言
XHProf是一个分层PHP性能分析工具。它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况。一个函数的开销,可细分成调用者和被调用者的开销。原始数据收集部分是用纯C实现的,是一个名叫xhprof的 Zend扩展 。XHProf有一个简单的HTML的用户界面( PHP写成的)。基于浏览器的性能分析用户界面能更容易查看,或是与同行们分享成果。也能绘制调用关系图。
XHProf报告往往可以有助于理解被执行的代码的结构。的等级性质的报告可用来确定,例如,什么链要求导致了所谓的特殊功能得到。
XHProf可以比较两次运行的结果(又名“差异报告”)或是从多次运行得到的汇总数据。差异和汇总报告,就像单一运行报告一样,也提供“平板”以及“分层”的性能分析视图。
XHProf是一种轻量级的性能分析工具。在数据收集阶段,它记录调用次数的追踪和包容性的指标弧在动态 callgraph的一个程序。它独有的数据计算的报告/后处理阶段。在数据收集时,XHProfd通过检测循环来处理递归的函数调用,并通过给递归调用 中每个深度的调用一个有用的命名来避开死循环。
XHProf的轻量级性质和汇聚功能,使得它非常适合用于收集“生产环境”的性能统计数据的统计。[见用于生产环境的补充说明。 ]
例如,XHProfLive (不属于开源的工具包),是Facebook使用的一个全系统的性能监测系统,建立在XHProf的基础之上 。 XHProfLive不断收集函数级别的Profiler资料,这些资料来自生产环境中运行中的示例页面[用xhprof来收集] 。然后XHProfLive汇总指定的时候,页面类型,来取得各个页面的性能数据,可以帮助解决各种问题,如:特定的某个网页的函数级的性能情况怎样?在 所有网页中,或者对某一具体的网页,foo 函数的开销如何?在过去的一小时/天/周中,哪些函数返回的次数最多?某个页面/函数的执行时间的变化趋势如何?等等。
由Facebook最初开发的XHProf在2009年3月开放源代码。
2. XHProf概况
XHProf提供的功能:
o 扁平的性能概要截图
提供函数级别的性能信息,例如调用次数,其中包括/独家壁时间,内存使用情况,和CPU时间。
o 分层剖析(父/子{0视图){/0} ( 截图
对每一个函数,它提供了一个断点,个崩溃的要求和时间每母公司(来电)和儿童(被调用) ,如:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。