您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP性能监控软件xHprof

2026/2/13 11:20:30发布15次查看
xhprof 这个软件本是facebook内部的一个应用工具,2009年3月份开源,为php的性能监测提供了很好的工具。官方的介绍中提到: xhprof is a hierarchical profiler for php. it reports function-level call counts andinclusiveandexclusivemetrics such as wa
xhprof
这个软件本是facebook内部的一个应用工具,2009年3月份开源,为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的一些特性:
1、flat profile. 提供函数级的汇总信息,比如调用次数、执行时间、内存使用、cpu占用等。
2、hierarchical profile。 对每个程序,进行了父级调用和子级调用的分解。
3、diff reports(差异报告)。有很多种情况,我们希望能够对比,比如新版本比旧版本提升了多少速度,两个版本的差距究竟在哪里。diff report 就是这样的工具,接收两个输入,并且分别给出各自的 flat profile 和 hierarchical profile 报告。
4、callgraph view(调用视图)。性能监测的数据可以绘制成调用视图,方便我们查看。
5、memory profile(内存监控)。这个特性帮助我们了解php如何分配和释放内存。值得注意的是,xhprof并不是严格的监测内存的分配和释放动作,而是计算每个函数进入和退出时的内存状况,这是一个相对简单的实现方式,但是基本上也能够满足我们日常的监控需求。
6、如何处理外部文件。xhprof将 include,require,include_once,require_once进来的文件视作是一个 function。
xhprof目前只支持一个级别的函数追踪,但是貌似也没有特别大的影响。
xhprof的安装配置
xhprof的安装配置很简单,我们首先在 pecl 的网站上下载 源码包 然后执行安装过程
% cd /extension/% phpize% ./configure --with-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=
xhprof的使用也很简单,只要将需要监控的脚本放在 xhprof_enable() 和 xhprof_disable() 中间,就可以得到相应的结果,同时也提供了一些参数可以让我们设置是否监控 memory, cpu 的使用,是否监控php内置的函数,从 0.9.2 之后,还可以设置跳过一些特定的函数。
xhprof 生成的数据,可以用 xhprof ui 来进行简单的显示。
xhprof使用也很简单,下面是一个官方的例子:
0) { 
    bar($x - 1); 
  } 
}
function foo() { 
  for ($idx = 0; $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. 
     http:///index.php?run=$run_id&source=xhprof_foo\n. 
     ---------------\n;
?>
我们可以持久化记录的数据,数据以文件的形式保存在指定的目录,如下图:
有了这个工具,我们可以根据其提供的数据,与相应的通知接口整合,在程序运行出现问题时,及时的发送通知信息。
xhprof画图使用的dot程序需要服务器上有libpng的环境支持,要想这部分能够正常绘图,需要安装 graphviz-2.24.0、libpng才行,具体的在参考资料4中有说。
php性能监控,还有两个可用的工具,一个是 xdebug,另外一个是 zendserver,我会在接下来继续进行介绍。
profile,监控,xhprof
参考文档: 
1、speed up your php with xhprof 
2、xhprof document
3、xhprof 中文文档
4、 编译xhprof的一个小意外
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product