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 中的类
Oct 09 PHP
PHP 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
php抓即时股票信息
Oct 09 PHP
使用字符串函数输出整数化的PHP版本号
Oct 09 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
PHP Switch 语句之学习笔记
Sep 21 PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 PHP
简单介绍win7下搭建apache+php+mysql开发环境
Aug 06 PHP
joomla组件开发入门教程
May 04 PHP
PHP fclose函数用法总结
Feb 15 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 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
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
2016/01/19 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
Node.js事件的正确使用方法
2019/04/05 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
python getopt详解及简单实例
2016/12/30 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
对python生成业务报表的实例详解
2019/02/03 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
python里运用私有属性和方法总结
2019/07/08 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
关于python中的xpath解析定位
2020/03/06 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
SmartBuyGlasses丹麦:网上购买名牌太阳镜、眼镜和隐形眼镜
2016/10/01 全球购物
预备党员政审材料
2014/02/04 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
供应链金融服务方案
2014/05/25 职场文书
建国大业观后感
2015/06/01 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技