文档章节

PHP7 下安装并使用 xhprof 性能分析工具

豆花饭烧土豆
 豆花饭烧土豆
发布于 2017/08/25 04:41
字数 1133
阅读 189
收藏 1

xhprof 的安装

该 xhprof 版本是从 https://github.com/longxinH/xhprof 获取,如有更好的选择,烦请联系我。

cd ~
git clone https://github.com/longxinH/xhprof

安装 xhprof

cd xhprof/extension/
/opt/php-7.0.14/bin/phpize
./configure --with-php-config=/opt/php-7.0.14/bin/php-config --enable-xhprof
make
make install

出现

Installing shared extensions:     /opt/php-7.0.14/lib/php/extensions/no-debug-non-zts-20151012/

代表编译成功

修改 php.ini 文件

/opt/php-7.0.14/bin/php -i | grep php.ini //命令查找php.ini文件的位置

/etc/php.ini中增加如下配置

[xhprof]
extension=xhprof.so
xhprof.output_dir=/data/www/xhprof/save_output_dir //该目录自由定义即可,用来保存xhprof生成的源文件

保存好之后,重启php-fpm

kill -USR2 `cat /opt/php-7.0.14/var/run/php-fpm.pid`

将相关文件移动到项目中

//切换到下载的 xhprof 目录
cp -r xhprof/xhprof_html  ROOT_PATH/
cp -r xhprof/xhprof_lib ROOT_PATH/

使用

xhprof_enable();

//你需要分析的代码

$xhprof_data = xhprof_disable();
include_once ROOT_PATH.'/xhprof_lib/utils/xhprof_lib.php';
include_once ROOT_PATH . '/xhprof_lib/utils/xhprof_runs.php';

$xhprof_runs = new XHProfRuns_Default();

$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_test");
//将run_id保存起来或者随代码一起输出

查看数据

访问$host_url/xhpfrof_html/index.php?run=58d3b28b521f6&source=xhprof_test来查看结果

图形化结果

点击[View Full Callgraph]可以看图形化结果

报错

failed to execute cmd:" dot -Tpng". stderr:sh: dot:command not found。

//解决方案
yum install graphviz

 

如果输入浏览器没有数据这种情况:Run #530707980ee18: Invalid Run Id = 530707980ee18错误结果:error可能是你的配置权限不足,请给个权限,可以直接777,然后重新运行走后这个步骤看看效果。到这里xhprof安装就结束了,开始你的性能优化之旅吧,有了这个工具会事半功倍的~~对于xhprof的名词解释:

Function Name 函数名 

Calls 调用次数  Calls% 调用百分比  Incl. Wall Time (microsec) 调用的包括子函数所有花费时间 以微秒算(一百万分之一秒)  IWall% 调用的包括子函数所有花费时间的百分比  Excl. Wall Time (microsec) 函数执行本身花费的时间,不包括子树执行时间,以微秒算(一百万分之一秒)  EWall% 函数执行本身花费的时间的百分比,不包括子树执行时间  Incl. CPU(microsecs) 调用的包括子函数所有花费的cpu时间。减Incl. Wall Time即为等待cpu的时间  减Excl. Wall Time即为等待cpu的时间  ICpu% Incl. CPU(microsecs)的百分比  Excl. CPU(microsec) 函数执行本身花费的cpu时间,不包括子树执行时间,以微秒算(一百万分之一秒)。  ECPU% Excl. CPU(microsec)的百分比  Incl.MemUse(bytes) 包括子函数执行使用的内存。  IMemUse% Incl.MemUse(bytes)的百分比  Excl.MemUse(bytes) 函数执行本身内存,以字节算  EMemUse% Excl.MemUse(bytes)的百分比  Incl.PeakMemUse(bytes) Incl.MemUse的峰值  IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比  Excl.PeakMemUse(bytes) Excl.MemUse的峰值  EPeakMemUse% EMemUse% 峰值百分比

错误处理:

failed to execute cmd: " dot -Tpng". stderr: `sh: dot: command not found '

原因:未安装图形化工具

yum install graphviz //centos  brew install graphviz //mac

界面优化:XHProf UI 分支

 

图示

查看图片

图示

图中红色的部分为性能比较低,耗时比较长的部分,我们可以根据根据哪些函数被标记为红色对系统的代码进行优化

补充

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峰值百分比。


参考:

http://www.jianshu.com/p/c420ebe6ce39

http://www.php.cn/php-weizijiaocheng-376423.html

https://www.oschina.net/question/1439832_2147576

© 著作权归作者所有

豆花饭烧土豆

豆花饭烧土豆

粉丝 15
博文 358
码字总数 93985
作品 0
深圳
私信 提问
[PHP]函数级分层性能分析工具-Xhprof的安装与使用

PHP性能分析工具-Xhprof的安装与使用 XHProf 是一个轻量级的分层性能测量分析器。 XHProf 包含了一个基于 HTML 的简单用户界面(由 PHP 写成)。 基于浏览器的用户界面使得浏览、分享性能数据结...

王永濤
2016/09/12
55
0
PHP7 性能测试工具--md_xhprof

md_xhprof 是 PHP性能测试工具 xhprof 的升级版,与 PHP7 配合使用。 #使用时需要设置环境变量export USEZENDDTRACE=1 安装 # 快速安装 curl -fsSL https://raw.githubusercontent.com/midok...

midoks
2016/12/18
659
0
PHP 7 新增内容介绍

PHP 7 新增内容介绍 2015年的夏天,虽然来得不算火热,但是在互联网技术的夏天,比任何一年都更为火热。 刚刚才结束了 5 月底的网易、支付宝、携程以及多家云存储厂商的接连故障的坏消息,6...

开元中国2015
2015/07/05
688
11
xhprof:php性能分析工具

XHProf是一个分层PHP性能分析工具。它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况。 2. 安装好xhprof后,需要配置php.ini [xhprof] extension = xhprof.so xhpr...

kavi
2012/04/30
0
0
facebook的php性能分析工具--xhprof

原文链接:http://www.cleey.com/blog/single/id/439.html pecl安装看这里:http://www.cleey.com/blog/single/id/816.html xhprof为facebook的php性能分析工具,xhprof安装,这里我先贴出大...

Cleey
2016/01/04
2.2K
3

没有更多内容

加载失败,请刷新页面

加载更多

数组算法

/*数组的相关的算法操作:1、在数组中找最大值/最小值*/class Test11_FindMax{public static void main(String[] args){int[] array = {4,2,6,8,1};//在数组中找最大...

architect刘源源
25分钟前
0
0
okhttp3 以上版本在安卓9.0无法请求数据的解决方案

应用官方的说明:在 Android 6.0 中,我们取消了对 Apache HTTP 客户端的支持。 从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。且Android P 限制了明文流量...

chenhongjiang
今天
5
0
简单示例:NodeJs连接mysql数据库

开篇引用网上的说法: 简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于...

李朝强
今天
8
0
大数据学习路线

年薪30W大数据学习路线图: 一、Hadoop入门,了解什么是Hadoop 1、Hadoop产生背景 2、Hadoop在大数据、云计算中的位置和关系 3、国内外Hadoop应用案例介绍 4、国内Hadoop的就业情况分析及课程...

陈小君
今天
3
0
解读 Kylin 3.0.0 | 更敏捷、更高效的 OLAP 引擎

在近期的 Apache Kylin Meetup 成都站上,我们邀请到 Kyligence 架构师 & Apache Kylin Committer 倪春恩对 Kylin 3.0.0 版本的一些重要功能及改进从使用到原理进行了介绍: Apache Kylin 在...

ApacheKylin
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部