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 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
PHP4中session登录页面的应用
Jul 25 PHP
php学习之简单计算器实现代码
Jun 09 PHP
基于MySQL分区性能的详细介绍
May 02 PHP
基于php缓存的详解
May 15 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
thinkphp中字符截取函数msubstr()用法分析
Jan 09 PHP
php删除数组指定元素实现代码
May 03 PHP
Mac系统完美安装PHP7详细教程
Jun 06 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
详解php命令注入攻击
Apr 06 PHP
详解php反序列化
Jun 10 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
可以在线执行PHP代码包装修正版
2008/03/15 PHP
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
php无限遍历目录示例
2014/02/21 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
js中的闭包学习心得
2018/02/06 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
Python无损音乐搜索引擎实现代码
2018/02/02 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
python实现静态服务器
2019/09/05 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
开业庆典邀请函
2014/01/08 职场文书
开学寄语大全
2014/04/08 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
Python+DeOldify实现老照片上色功能
2022/06/21 Python