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 相关文章推荐
玩转图像函数库―常见图形操作
Sep 03 PHP
PHP5各个版本的新功能和新特性总结
Mar 16 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
thinkPHP模型初始化实例分析
Dec 03 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
Mar 05 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 PHP
PHP正则判断一个变量是否为正整数的方法
Feb 27 PHP
Smarty模板变量与调节器实例详解
Jul 20 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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
session 的生命周期是多长
2006/10/09 PHP
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
php文件上传类完整实例
2016/05/14 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
js一组验证函数
2008/12/20 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
bootstrap中的 form表单属性role="form"的作用详解
2017/01/20 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
python非递归全排列实现方法
2017/04/10 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
python+opencv实现阈值分割
2018/12/26 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
Python中的整除和取模实例
2020/06/03 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
中英双版中文教师求职信
2013/10/27 职场文书
理货员的岗位职责
2013/11/23 职场文书
《巨人的花园》教学反思
2014/02/12 职场文书
初中英语演讲稿
2014/04/29 职场文书
网络编辑求职信
2014/04/30 职场文书
考生诚信考试承诺书
2014/05/23 职场文书
欢迎标语大全
2014/06/21 职场文书
人事局接收函
2015/01/30 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL