PHP性能分析工具xhprof的安装使用与注意事项


Posted in PHP onDecember 19, 2017

前言

xhprof由facebook开源出来的一个PHP性能监控工具,占用资源很少,甚至能够在生产环境中进行部署。

它可以结合graphviz使用,能够以图片的形式很直观的展示代码执行耗时。

下面主要讲一下安装和使用过程

1、安装

(1)下载和解压

wget http://pecl.php.net/get/xhprof-0.9.4.tgz
tar zxvf xhprof-0.9.4.tgz

(2)编译和运行

cd xhprof-0.9.4/extension/
phpize //此语句编译PHP扩展的工具,主要是根据系统信息生成对应的configure文件,一般存放在/usr/local/php/bin/目录下
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
mkdir /tmp/xhprof

(3)编辑php.ini:

[xhprof]
extension = xhprof.so
xhprof.output_dir=/tmp/xhprof

xhprof.output_dir是分析生成日志的保存路径

(4)安装插件

最后返回数组,就表示安装好了。具体哪些值是什么意思先别管,因为下面有UI的配置。会很直观!

yum -y install libjpeg freetype freetype-devel libjpeg-devel liberation-sans-fonts.noarch

自动安装

yum -y install graphviz

(5)插入代码

//找到你要分析的代码,在代码开始处添加,start profiling,将会统计内存占用情况
xhprof_enable(XHPROF_FLAGS_MEMORY);
//具体代码
//在代码结束位置添加
$xhprof_data = xhprof_disable(); // stop profiler, display raw xhprof data for the profiler run
include_once ("/usr/local/src/xhprof-0.9.4/xhprof_lib/utils/xhprof_lib.php"); # 请注意设置站点 include_path 权限
include_once ("/usr/local/src/xhprof-0.9.4/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.]
$xhprof_runs->save_run($xhprof_data, "xhprof_foo");

(6)查看

给(2)中的xhprof-0.9.4/xhprof_html 配置一个可以访问的站点,可以简洁的使用php内置的server

cd xhprof-0.9.4/xhprof_html
php -S 0.0.0.0:8990

然后访问ip+端口就可以报告了。

2、使用说明

  • 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、在正式启用前,一定要确认不会影响正常的数据输出。确认输出内容无异后,再上线。

      2、每个url的max_time不要设置的过小。

      3、xhprof会影响线上服务的性能,因此最好只在一台机器上进行监控,或者 修改xhprof.php代码,对请求进行随机监控。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP下MAIL的另一解决方案
Oct 09 PHP
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
php在线代理转向代码
May 05 PHP
PHP转换IP地址到真实地址的方法详解
Jun 09 PHP
php数组操作之键名比较与差集、交集赋值的方法
Nov 10 PHP
php文件缓存类用法实例分析
Apr 22 PHP
PHP解密Unicode及Escape加密字符串
May 17 PHP
php远程下载类分享
Apr 13 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
Jan 30 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
Jun 01 PHP
YII2.0框架行为(Behavior)深入详解
Jul 26 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 PHP
PHP实现的最大正向匹配算法示例
Dec 19 #PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 #PHP
PHP实现的折半查找算法示例
Dec 19 #PHP
PHP实现的二分查找算法实例分析
Dec 19 #PHP
PHP实现git部署的方法教程
Dec 19 #PHP
PHP递归实现快速排序的方法示例
Dec 18 #PHP
Laravel框架中自定义模板指令总结
Dec 17 #PHP
You might like
用PHP将数据导入到Foxmail的实现代码
2010/09/05 PHP
让PHP以ROOT权限执行系统命令的方法
2011/02/10 PHP
php查询ip所在地的方法
2014/12/05 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
php获取图片信息的方法详解
2015/12/10 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
表格 隔行换色升级版
2009/11/07 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
iview的table组件自带的过滤器实现
2019/07/12 Javascript
python和flask中返回JSON数据的方法
2018/03/26 Python
python设置值及NaN值处理方法
2018/07/03 Python
wxpython绘制音频效果
2019/11/18 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
Python list和str互转的实现示例
2020/11/16 Python
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
给同学的道歉信
2014/01/16 职场文书
党员自我对照检查材料
2014/08/19 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
校运会通讯稿
2015/07/18 职场文书
《落花生》教学反思
2016/02/16 职场文书
子女赡养老人协议书
2016/03/23 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
JavaScript实现优先级队列
2021/12/06 Javascript
python 闭包函数详细介绍
2022/04/19 Python
macos系统如何实现微信双开? mac登录两个微信以上微信的技巧
2022/07/23 数码科技