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 静态化实现代码
Mar 20 PHP
PHP 获取客户端真实IP地址多种方法小结
May 15 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
php操作SVN版本服务器类代码
Nov 27 PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 PHP
重新认识php array_merge函数
Aug 31 PHP
php取得字符串首字母的方法
Mar 25 PHP
thinkphp多层MVC用法分析
Dec 30 PHP
基于PHP实现商品成交时发送短信功能
May 11 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
Apr 20 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 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中strlen和mb_strlen函数的区别
2014/03/07 PHP
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
php递归创建目录的方法
2015/02/02 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
jquery 笔记 事件
2011/11/02 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
JS中产生标识符方式的演变
2015/06/12 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
jQuery使用方法
2017/02/04 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
python聊天程序实例代码分享
2013/11/18 Python
Python中pillow知识点学习
2018/04/30 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
业务员岗位职责
2013/11/16 职场文书
最经典的商业地产项目广告词
2014/03/13 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
融资租赁计划书
2014/04/29 职场文书
班主任工作经验交流材料
2014/05/13 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
单位活动策划方案
2014/08/17 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
《植树问题》教学反思
2016/03/03 职场文书
Elasticsearch 基本查询和组合查询
2022/04/19 Python