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&mysql(六)
Oct 09 PHP
火车头采集器3.0采集图文教程
Mar 17 PHP
php 中的str_replace 函数总结
Apr 27 PHP
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
基于php中使用excel的简单介绍
Aug 02 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
Jan 18 PHP
Smarty模板变量调节器用法分析
May 23 PHP
利用PHP如何写APP接口详解
Aug 23 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
php中的依赖注入实例详解
Aug 14 PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 14 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
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
PHP中比较时间大小实例
2014/08/21 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
2017/12/09 Python
python 中字典嵌套列表的方法
2018/07/03 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
继电保护工岗位职责
2014/01/05 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
致地震灾区的慰问信
2015/03/23 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
故意杀人案辩护词
2015/05/21 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
《绝招》教学反思
2016/02/20 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
php实例化对象的实例方法
2021/11/17 PHP