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实现像JSP,ASP里Application那样的全局变量
Jan 12 PHP
php 购物车实例(申精)
May 11 PHP
php新建文件自动编号的思路与实现
Jun 27 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
Jan 10 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
php实现模拟post请求用法实例
Jul 11 PHP
php实现zip文件解压操作
Nov 03 PHP
Zend Framework教程之Autoloading用法详解
Mar 08 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
Aug 07 PHP
分享5个非常有用的Laravel Blade指令
May 30 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 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
一个颜色轮换的简单例子
2006/10/09 PHP
Discuz! Passport 通行证整合
2008/03/27 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
php/JS实现的生成随机密码(验证码)功能示例
2019/06/06 PHP
繁简字转换功能
2006/07/19 Javascript
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
2018/05/03 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
python根据文件大小打log日志
2014/10/09 Python
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
Python如何实现爬取B站视频
2020/05/20 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
python 代码运行时间获取方式详解
2020/09/18 Python
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
社会学专业求职信
2014/02/24 职场文书
超市中秋节促销方案
2014/03/21 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
先进教师事迹材料
2014/12/16 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS