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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
php中的三元运算符使用说明
Jul 03 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
form自动提交实例讲解
Jul 10 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 01 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 PHP
Laravel实现批量更新多条数据
Apr 06 PHP
PHP文件打开关闭及读写操作示例解析
Aug 06 PHP
PHP实现的最大正向匹配算法示例
Dec 19 #PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 #PHP
PHP实现的折半查找算法示例
Dec 19 #PHP
php之header的不同用法总结(实例讲解)
Nov 28 #PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
Nov 28 #PHP
PHP命令空间namespace及use的用法小结
Nov 27 #PHP
Laravel 批量更新多条数据的示例
Nov 27 #PHP
You might like
PHP新手用的Insert和Update语句构造类
2012/03/31 PHP
php array的学习笔记
2012/05/16 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
python 19个值得学习的编程技巧
2020/08/15 Python
python pip如何手动安装二进制包
2020/09/30 Python
JAVA高级程序员面试题
2013/09/06 面试题
大学生工作推荐信范文
2013/12/02 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
优秀广告词大全
2014/03/19 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
安全教育的主题班会
2015/08/13 职场文书
团支部书记竞选稿
2015/11/21 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers
Golang之sync.Pool使用详解
2021/05/06 Golang