层次式性能分析器XHProf
2016-06-22 23:21
495 查看
php官方文档 http://php.net/manual/zh/book.xhprof.php
xhprof为facebook开发的php性能分析工具,一个轻量级的分层性能测量分析器。 在数据收集阶段,它跟踪调用次数与测量数据,展示程序动态调用的弧线图。 它在报告、后期处理阶段计算了独占的性能度量,例如运行经过的时间、CPU 计算时间和内存开销。
1.安装
2.修改php.ini(在php.ini添加以下扩展)
xhprof.output_dir:储存 XHProf 运行数据的默认目录,用于接口 iXHProfRuns(即 XHProfRuns_Default 类)。 确保这个路径存在,且是可写的
3.将源码中的xhprof_html和xhprof_lib 文件夹复制到某个目录下,修改nginx配置,使其能被访问到。
如我是这样做的
修改nginx,设置vhost访问/var/www/xhprof
4.重启php-fpm 或 apache
可通过phpinfo()查看是否已经正确安装xhprof扩展
php代码事例
当查看[View Full Callgraph],如果提示如下错误,是因为未安装图形化工具依赖包:
failed to execute cmd: ” dot -Tpng”. stderr: `sh: dot: command not found ’
解决方法:
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峰值百分比。
注意:
1.需要php的另一扩展ctype
2.目前最新版本xhprof-0.9.4并不支持php7
xhprof为facebook开发的php性能分析工具,一个轻量级的分层性能测量分析器。 在数据收集阶段,它跟踪调用次数与测量数据,展示程序动态调用的弧线图。 它在报告、后期处理阶段计算了独占的性能度量,例如运行经过的时间、CPU 计算时间和内存开销。
1.安装
wget http://pecl.php.net/get/xhprof-0.9.4.tgz tar -zxvf xhprof-0.9.4.tgz cd xhprof-0.9.4/extension/ phpize ./configure --with-php-config=/usr/local/php/bin/php-config make make install
2.修改php.ini(在php.ini添加以下扩展)
extension=xhprof.so xhprof.output_dir=/tmp/xhprof
xhprof.output_dir:储存 XHProf 运行数据的默认目录,用于接口 iXHProfRuns(即 XHProfRuns_Default 类)。 确保这个路径存在,且是可写的
3.将源码中的xhprof_html和xhprof_lib 文件夹复制到某个目录下,修改nginx配置,使其能被访问到。
如我是这样做的
cp -r /tmp/xhprof-master/xhprof_lib/ /var/www/xhprof/ cp -r /tmp/xhprof-master/xhprof_html/ /var/www/xhprof/
修改nginx,设置vhost访问/var/www/xhprof
4.重启php-fpm 或 apache
可通过phpinfo()查看是否已经正确安装xhprof扩展
php代码事例
<?php /* XHPROF_FLAGS_NO_BUILTINS (integer) 使得跳过所有内置(内部)函数。 XHPROF_FLAGS_CPU (integer) 使输出的性能数据中添加 CPU 数据。 XHPROF_FLAGS_MEMORY (integer) 使输出的性能数据中添加内存数据。 */ //启动 xhprof 性能分析器 xhprof_enable(XHPROF_FLAGS_NO_BUILTINS + XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); for ($i = 0; $i <= 1000000; $i++) { $a = $i * $i; } //停止 xhprof 分析器 $xhprof_data = xhprof_disable(); $XHPROF_ROOT = "/usr/local/php5.6/lib/php"; include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php"; include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_testing"); $url = "http://xhprof.mi-hua.com:90/xhprof_html/index.php?run={$run_id}&source=xhprof_testing"; echo "<a href='{$url}' target='_blank'>{$url}</a>";
当查看[View Full Callgraph],如果提示如下错误,是因为未安装图形化工具依赖包:
failed to execute cmd: ” dot -Tpng”. stderr: `sh: dot: command not found ’
解决方法:
yum install graphviz
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峰值百分比。
注意:
1.需要php的另一扩展ctype
2.目前最新版本xhprof-0.9.4并不支持php7
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象
- php7 读取php.ini[4]
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- 简单好用的PHP分页类