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 相关文章推荐
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 PHP
PHP 获取目录下的图片并随机显示的代码
Dec 28 PHP
php简单的会话类代码
Aug 08 PHP
Php header()函数语法及使用代码
Nov 04 PHP
php汉字转拼音的示例
Feb 27 PHP
php简单生成随机数的方法
Jul 30 PHP
PHP防止刷新重复提交页面的示例代码
Nov 11 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 PHP
php实现查询功能(数据访问)
May 23 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 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
MyEclipse常用配置图文教程
2014/09/11 PHP
Laravel5.7 Eloquent ORM快速入门详解
2019/04/12 PHP
javascript 显示当前系统时间代码
2009/12/28 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
原生js实现随机点名
2020/07/05 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
原生js实现滑块区间组件
2021/01/20 Javascript
python 文件与目录操作
2008/12/24 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
浅谈python常用程序算法
2019/03/22 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
Python reduce函数作用及实例解析
2020/05/08 Python
丝芙兰巴西官方商城:SEPHORA巴西
2016/10/31 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
行政助理工作职责范本
2014/03/04 职场文书
作风大整顿心得体会
2014/09/10 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
素质教育学习心得体会
2016/01/19 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书