XHProf是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开 关来控制是否进行profile。

1.安装XHprof

[plain] view plaincopy
  1. wget http://pecl.php.net/get/xhprof-0.9.2.tgz
  2. tar zxf xhprof-0.9.2.tgz
  3. cd xhprof-0.9.2
  4. cp -r xhprof_html xhprof_lib /你的web目录路径/xhprof/  (此处目的是建立数据分析目录,可将此目录配置成虚拟主机访问)
  5. cd extension/
  6. /usr/local/webserver/php/bin/phpize
  7. ./configure  –with-php-config=/usr/local/webserver/php/bin/php-config   (php-config的路径)
  8. make && make install

安装完提示:
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20060613/

2.php.ini中添加

extension_dir = "/usr/lib/php5/20090626/"
这句我原来就有了,就这用添加下面两句
extension=xhprof.so
xhprof.output_dir=/www/logs/xhprof

分析日志输出在/www/logs/xhprof目录。

注:/www/logs/xhprof  目录必须与nginx,php-fpm用户权限一致,不然分析文件写不进

3.重启Nginx服务器和php,打开phpinfo()页面便可以看到看到输出中有了xhprof信息。

[plain] view plaincopy
  1. xhprof  0.9.2
  2. CPU num  2

4.安装libpng包

否则会因为dot 不支持PNG,不能显示图表数据分析,且 出现Error: either we can not find profile data for run_id 4d7f0bd99a12f or the threshold 0.01 is too small or you do not have ‘dot’ image generation utility installed.的错误

[plain] view plaincopy
  1. sudo wget https://jaist.dl.sourceforge.net/project/libpng/libpng15/1.5.30/libpng-1.5.30.tar.gz  //如果不可用,可以在网上找一个下下来再编译安装
  2. tar zxf libpng-1.5.1.tar.gz
  3. cd libpng-1.5.1
  4. ./configure
  5. make
  6. make install

5.安装graphviz,一个画图工具

[plain] view plaincopy
  1. sudo wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
  2. tar zxf graphviz-2.24.0.tar.gz
  3. cd graphviz-2.24.0
  4. ./configure--with-png=yes
  5. make && make install

6.使用方法:

[plain] view plaincopy
  1. 头部:
  2. xhprof_enable();
  3. //xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不记录内置的函数
  4. //xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);  同时分析CPU和Mem的开销
  5. $xhprof_on = true;
  6. 生产环境可使用:
  7. if (mt_rand(1, 10000) == 1) {
  8. xhprof_enable();
  9. $xhprof_on = true;
  10. }
  11. //测试性能代码 .....
  12. 尾部:
  13. if($xhprof_on){
  14. $xhprof_data = xhprof_disable();
  15. $xhprof_root = '/www/<span style="font-family:Arial, Helvetica, sans-serif;">(xhprof的虚拟主机目录)</span>/';
  16. include_once $xhprof_root."xhprof_lib/utils/xhprof_lib.php";
  17. include_once $xhprof_root."xhprof_lib/utils/xhprof_runs.php";
  18. $xhprof_runs = new XHProfRuns_Default();
  19. $run_id = $xhprof_runs->save_run($xhprof_data, "hx");
  20. echo '<a href="http://(xhprof的虚拟主机域名)/xhprof_html/index.php?run='.$run_id.'&source=hx" target="_blank">统计</a>';
  21. }
  22. 运行程序,底部出现统计字样,点过去就可以看到性能分析了。按运行时间排序,很容易找出化时间最长的函数。
  23. 点[View Full Callgraph]图形化显示,最大的性能问题会用红色标出,其次是黄色。

7.测试:

8. 名词解释

附运行结果里的名词解释:

[plain] view plaincopy
  1. Function Name 函数名
  2. Calls 调用次数
  3. Calls% 调用百分比
  4. Incl. Wall Time (microsec) 调用的包括子函数所有花费时间 以微秒算(一百万分之一秒)
  5. IWall% 调用的包括子函数所有花费时间的百分比
  6. Excl. Wall Time (microsec) 函数执行本身花费的时间,不包括子树执行时间,以微秒算(一百万分之一秒)
  7. EWall% 函数执行本身花费的时间的百分比,不包括子树执行时间
  8. Incl. CPU(microsecs) 调用的包括子函数所有花费的cpu时间。减Incl. Wall Time即为等待cpu的时间
  9. 减Excl. Wall Time即为等待cpu的时间
  10. ICpu% Incl. CPU(microsecs)的百分比
  11. Excl. CPU(microsec) 函数执行本身花费的cpu时间,不包括子树执行时间,以微秒算(一百万分之一秒)。
  12. ECPU% Excl. CPU(microsec)的百分比
  13. Incl.MemUse(bytes) 包括子函数执行使用的内存。
  14. IMemUse% Incl.MemUse(bytes)的百分比
  15. Excl.MemUse(bytes) 函数执行本身内存,以字节算
  16. EMemUse% Excl.MemUse(bytes)的百分比
  17. Incl.PeakMemUse(bytes) Incl.MemUse的峰值
  18. IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比
  19. Excl.PeakMemUse(bytes) Excl.MemUse的峰值
  20. EPeakMemUse% EMemUse% 峰值百分比

参考:https://blog.csdn.net/maitiandaozi/article/details/8896293

linux 下xhprof的安装和使用相关推荐

  1. Linux下Tomcat的安装配置

    Linux下Tomcat的安装配置 一.下载安装对应的jdk,并配置Java环境. 官网下载地址: http://www.oracle.com/technetwork/java/javase/down ...

  2. linux下从git获取有权限的代码,linux下从源代码安装git

    之所以有这样的需求,是因为部分预安装的git版本太低,很多功能没有并且安全性存在问题. 比如git submodule add xxx@host:yyy.git必须在父repo的root目录安装,而新 ...

  3. linux编译安装jpeg,Linux下JPEG库安装脚本(转)

    Linux下JPEG库安装脚本(转)[@more@]该脚本用于在Linux下安装JPEG库,在安装GD库的时候如果没有JPEG库,GD将不能生成JPEG格式的图象. 作者: 何志强#----where ...

  4. Linux下图解minicom安装

    Linux下图解minicom安装 minicom是一个串口通信工具,就像Windows下的HyperTerminal.可用来与串口设备通信,如调试交换机和Modem等.它的Ubuntu软件包的名称就 ...

  5. Linux下的软件安装方法介绍

    本文目录 一.Linux下的软件安装方式 二.在线安装 三.使用dpkg从本地磁盘安装deb软件包 本文目录 一.Linux下的软件安装方式 通常Linux上的软件安装主要有三种方式: 在线安装 从磁 ...

  6. linux下nginx编译安装

    转载自: http://hanqunfeng.iteye.com/blog/697696 一.下载nginx 下载地址:http://www.nginx.org/ 选择nginx-0.8.36 将该下 ...

  7. linux下pptpd的安装配置(×××)

    linux下pptpd的安装配置(×××)--单网卡×××实现 (本文部分内容摘自互联网,特此声明!)          环境介绍:Linux(redhat) 2.6.18 +PPP+PPTPD    ...

  8. OpenCV在Linux下的编译安装(Ubuntu )

    OpenCV在Linux下的编译安装(Ubuntu ) 1.先安装相关的库: sudo apt-get install build-essential sudo apt-get install lib ...

  9. Linux下Nagios的安装与配置

    Linux下Nagios的安装与配置 2017-03-23 17:40:20     来源:    点击:0 Nagios是企业普遍使用的最具影响力的网络信息监视系统之一,它可以动态监视指定的网络状态 ...

  10. CentOS(linux) 下JDK的安装

    CentOS(linux) JDK的安装 第一篇博客有不足之处,请大家多指教.^_^ linux下装JDK的文章网上有一大堆我就不照搬了. 本文讲新手如何取巧的在linux下安装JDK. CentOS ...

最新文章

  1. 内存管理器(二)边界标识法
  2. 【Paper】2011_Distributed fault detection for interconnected second-order systems
  3. JAVA自学笔记21
  4. SpringSecurity认证
  5. 全面认识Small Cell
  6. python-面向对象编程设计与开发
  7. java map removeall_Java删除Map中元素
  8. Docker入门-安装
  9. WordPress文章ajax,使用ajax在WordPress后台删除文章方法
  10. 全库检索包含某个值的表名和所在的列.
  11. andriod手机信号显示G、E、H、T是什么意思?
  12. WINDOWS远程连接显示“请稍后”
  13. 双鱼和射手怎样能合拍(图
  14. 记一次bash脚本报错原因
  15. R学习之统计实验(四)--蒲丰投针(R语言编程)-----数模
  16. 一个开源经典的MCU菜单框架设计
  17. 非平衡电桥电阻计算_非平衡电阻电桥等效电阻的初等解析
  18. 树形结构的处理——组合模式(四)
  19. Linux Let's Encrypt生成免费证书
  20. java webrtc降噪_android音频降噪webrtc

热门文章

  1. 一对一直播系统基础的交接流程
  2. angularjs外部文件中的控制器使用
  3. 【java】中缀表达式转后缀表达式 java实现
  4. 使用SaltStack安装JBoss
  5. 夜,思考——我想要的到底是什么?
  6. C++类复制构造函数
  7. IIS HTTP 500 内部服务器错误
  8. 内核低分辨率定时器实现
  9. Linux设备驱动之字符设备(三)
  10. Linux Regmap分析