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 date()日期时间函数详解
May 16 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
php中array_fill函数的实例用法
Mar 02 PHP
PHP实现创建以太坊钱包转账等功能
Apr 21 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自定义函数实现二维数组排序功能
2016/07/20 PHP
轻松实现php文件上传功能
2017/02/17 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
JavaScript使用prototype定义对象类型(转)[
2006/12/22 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
vue 循环加载数据并获取第一条记录的方法
2018/09/26 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
基于python图像处理API的使用示例
2020/04/03 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
介绍一下木马病毒的种类
2015/07/26 面试题
自我鉴定四大框架
2014/01/17 职场文书
寄语十八大感言
2014/02/07 职场文书
开学寄语大全
2014/04/08 职场文书
小学生作文评语
2014/04/18 职场文书
对教师的评语
2014/04/28 职场文书
微电影大赛策划方案
2014/06/05 职场文书
一般党员对照检查材料
2014/09/24 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书