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将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 PHP
php实现在线通讯录功能(附源码)
May 13 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
原生php实现excel文件读写的方法分析
Apr 25 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
ThinkPHP5.1验证码功能实现的示例代码
Jun 08 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通用检测函数集合
2011/02/08 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
JQuery切换显示的效果实例代码
2013/02/27 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
python实现简单登陆系统
2018/10/18 Python
python实现四人制扑克牌游戏
2020/04/22 Python
Python csv文件记录流程代码解析
2020/07/16 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
建龙钢铁面试总结
2014/04/15 面试题
大学生旅游业创业计划书
2014/01/29 职场文书
教师开学感言
2014/02/14 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
个人党性锻炼总结
2015/03/05 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
工地材料员岗位职责
2015/04/11 职场文书
社会实践心得体会范文
2016/01/14 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP
图文详解Nginx版本平滑升级方案
2021/09/15 Servers
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL