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脚本
Nov 26 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
Jun 23 PHP
PHP之sprintf函数用法详解
Nov 12 PHP
Yii实现多数据库主从读写分离的方法
Dec 29 PHP
php删除文本文件中重复行的方法
Apr 28 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 PHP
php-fpm中max_children的配置
Mar 15 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
php中关于换行的实例写法
Sep 26 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 数组二分法查找函数代码
2010/02/16 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
基于win2003虚拟机中apache服务器的访问
2017/08/01 PHP
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
JS命令模式例子之菜单程序
2016/10/10 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
React-Native左右联动List的示例代码
2017/09/21 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
vue通过过滤器实现数据格式化
2020/07/20 Javascript
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
EJB面试题
2015/07/28 面试题
2014迎新年晚会策划方案
2014/02/23 职场文书
会员活动策划方案
2014/08/19 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
单位工资证明范本
2015/06/12 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python