PHP 性能追踪及分析工具(XHPROF)
原文:https://gold.xitu.io/post/5860d23f128fe10069e1cfbf
XHPROF:Facebook 开源的轻量级PHP性能分析工具。
它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况。
XHProf 分析报告有助于理解被执行的代码的结构。
它有一个简单的HTML的用户界面( PHP写成的)。
基于浏览器的性能分析用户界面能更容易查看,或是与同行们分享成果。
也能绘制调用关系图。
XHPROF 与 Xdebug 区别
Xdebug 是一个开放源代码的PHP程序调试器(即一个Debug工具)。
对于本地开发环境来说,进行性能分析 Xdebug 是够用了。
但如果是线上环境的话,Xdebug 消耗较大,配置也不够灵活。
如何安装 XHPROF ?
//源码安装
cd /usr/local/src
wget http://pecl.php.net/get/xhprof-0.9.4.tgz
tar zxvf xhprof-0.9.4.tgz
cd xhprof-0.9.4/extension/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
//在 php.ini 末尾新增
[xhprof]
extension = xhprof.so
xhprof.output_dir = 自定义文件夹(/tmp/xhprof_log)
// /tmp/xhprof_log 必须存在且有写入权限
//重启环境
//代码中查看 phpinfo 是否包含 xhprof。
//一切顺利的话,那么 xhprof 安装成功。
如何配置 XHPROF?
//比如项目地址:local.test_xhprof.com
//在项目入口文件中新增一下代码(CI框架为例)
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS +
XHPROF_FLAGS_CPU +
XHPROF_FLAGS_MEMORY);
register_shutdown_function(function(){
$data = xhprof_disable(); //返回运行数据
//xhprof_lib 在下载的包里存在这个目录,记得将目录包含到运行的php代码中
include '/home/www/mi/xhprof/xhprof_lib/utils/xhprof_lib.php';
include '/home/www/mi/xhprof/xhprof_lib/utils/xhprof_runs.php';
$objXhprofRun = new XHProfRuns_Default();
$objXhprofRun->save_run($data, "test"); //test 表示文件后缀
});
//一切顺利的话,那么代码安装成功。
//访问:local.test_xhprof.com,应该在 /tmp/xhprof_log 存在日志文件。
如何 UI 展示?
//将 xhprof_html、xhprof_lib 拷贝到虚拟目录中
cd /usr/local/src
cp xhprof-0.9.4/xhprof_html /home/www/mi/xhprof/xhprof_html
cp xhprof-0.9.4/xhprof_lib /home/www/mi/xhprof/xhprof_lib
配置虚拟主机(local.xhprof.com)
local.xhprof.com 指向 /home/www/mi/xhprof/ 即可。
访问:local.xhprof.com/xhprof_html 会显示日志文件。
如下图:
PHP 性能追踪及分析工具(XHPROF)
点击日志文件显示下图。
PHP 性能追踪及分析工具(XHPROF)
点击 [View Full Callgraph] 会显示调用关系图。
在生成图的时候需要服务器装一个插件:graphviz。
cd /usr/local/src
wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
tar zxvf graphviz-2.24.0.tar.gz
cd graphviz-2.24.0
./configure
make
make install
//一切顺利的话,那么 graphviz 安装成功。
如果点击 [View Full Callgraph] 依旧无法打开。
报错:failed to execute cmd " dot -Tpng"
表示:php.ini 中一些执行函数禁用了。
在 php.ini 中 去掉 disable_functions 中的如下函数
system
shell_exec
proc_open
proc_get_status
PHP 重启一下。
一切顺利的话,应该不会报错了,就可以看到高大上的效果图啦。
PHP 性能追踪及分析工具(XHPROF)
点击局部,可以看到大图。
以上,大家可以看到 函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况。
如何更好的UI展示?
可能大家有一些疑问:
- 是否能有更好的UI展示?
- 当服务器上有多个站点的时候,是否配置一次即可?
接下来给大家介绍:xhprof gui
xhprof gui : 一个xhprof的一个ui展现。
使 xhprof 界面更漂亮,功能更强大。
- 友好的界面
- 数据库存储(mysql)
- 支持按请求百分比执行 xhprof 优化。
- 降低服务器负载。
如何配置 xhprof gui
源码地址:https://github.com/preinheimer/xhprof
下载后存放到:xhprof_gui 文件中。
配置虚拟主机(local.xhprofgui.com)
local.xhprofgui.com 指向 /home/www/mi/xhprof_gui/ 即可。
第一步,需要将 xhprof_gui/xhprof_lib/config.sample.php 重命名 为 config.php。
第二步,根据 config.php 中数据库变量(dbuser、dbpass、dbname),配置一个数据库。
第三步,将 config.php 中 doprofile 设置为 true。
第三步,创建一张表。
//源代码:xhprof_lib/utils/xhprof_runs.php
CREATE TABLE `details` (
`id` char(17) NOT NULL,
`url` varchar(255) default NULL,
`c_url` varchar(255) default NULL,
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`server name` varchar(64) default NULL,
`perfdata` MEDIUMBLOB,
`type` tinyint(4) default NULL,
`cookie` BLOB,
`post` BLOB,
`get` BLOB,
`pmu` int(11) unsigned default NULL,
`wt` int(11) unsigned default NULL,
`cpu` int(11) unsigned default NULL,
`server_id` char(3) NOT NULL default 't11',
`aggregateCalls_include` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `url` (`url`),
KEY `c_url` (`c_url`),
KEY `cpu` (`cpu`),
KEY `wt` (`wt`),
KEY `pmu` (`pmu`),
KEY `timestamp` (`timestamp`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
如果是 Nginx 服务器 新增配置:
fastcgi_param PHP_VALUE "auto_prepend_file=/home/www/mi/xhprof_gui/external/header.php";
如果是 Apache 服务器:
php_admin_value auto_prepend_file "/home/www/mi/xhprof_gui/external/header.php"
配置到这里,可以运行下。
简单说明下:
如果你配置在公共的配置文件中,那么表示站点上所有的域名访问都会进行日志记录。
如果你配置在单个域名的配置文件中,表示只有访问当前域名的时候回进入日志记录。
例如单个域名为:local.xh.test.com
如果报错,可以调试下 header.php。
以上配置,存储使用的是Mysql。
存储也可以使用MongoDB,大家可以研究下 ~
如果看到效果?
访问 local.xh.test.com,记录日志。
访问 local.xhprofgui.com,查看效果。
效果图,如下:
PHP 性能追踪及分析工具(XHPROF)
我本地为 nginx 环境,已经配置成功。
PHP 性能追踪及分析工具(XHPROF)的更多相关文章
- PHP性能追踪及分析工具xhprof的安装与使用
对于本地开发环境来说,进行性能分析xdebug是够用了,但如果是线上环境的话,xdebug消耗较大,配置也不够灵活,因此线上环境建议使用xhprof进行PHP性能追踪及分析. 我们今天就简单介绍一下x ...
- 转:使用xhprof进行线上PHP性能追踪及分析
原文来自于:http://avnpc.com/pages/profiler-php-performance-online-by-xhprof 原创作者:AlloVince 之前一直使用基于Xdebug ...
- 如何使用工具进行线上 PHP 性能追踪及分析?
工作了一两年的 PHPer 大概都多多少少知道一些性能分析的工具,比如 Xdebug.xhprof.New Relic .OneAPM.使用基于 Xdebug 进行 PHP 的性能分析,对于本地开发环 ...
- golang 性能调优分析工具 pprof(下)
golang 性能调优分析工具 pprof(上)篇, 这是下篇. 四.net/http/pprof 4.1 代码例子 1 go version go1.13.9 把上面的程序例子稍微改动下,命名为 d ...
- golang 性能调优分析工具 pprof (上)
一.golang 程序性能调优 在 golang 程序中,有哪些内容需要调试优化? 一般常规内容: cpu:程序对cpu的使用情况 - 使用时长,占比等 内存:程序对cpu的使用情况 - 使用时长,占 ...
- php性能分析工具 - xhprof的安装使用
一.前言 有用的东西还是记录下来吧,也方便以后的查询:这次记录一下xhprof的安装使用: xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低, ...
- 如何在本地配置php分析工具xhprof
测试环境: linuxMint + nginx1.4.6+mysql5.5+php5.5 什么是xhprof? XHProf是一个分层PHP性能分析工具.它报告函数级别的请求次数和各种指标,包括阻塞时 ...
- linux性能评估与分析工具---CPU篇
一. uptime root@calm:~# uptime :: up days, :, user, load average: 0.04, 0.09, 0.04 这里主要关注load average ...
- PHP性能分析工具xhprof的安装使用与注意事项
前言 xhprof由facebook开源出来的一个PHP性能监控工具,占用资源很少,甚至能够在生产环境中进行部署. 它可以结合graphviz使用,能够以图片的形式很直观的展示代码执行耗时. 下面主要 ...
随机推荐
- HBase伪分布安装
1把hbase-0.94.2-security.tar.gz复制到/usr/local 2 解压缩.重命名.设置环境变量 cd /usr/local tar -zxvf hbase--security ...
- ng-bind-html在ng-repeat中问题的解决办法
<div ng-controller="MyCtrl"> Hello, {{name}}! <div class="row" ng-repea ...
- angularjs中动态为audio绑定src
今天在angularjs中用audio的时候碰到的这些问题,查阅http://www.cnblogs.com/rachelanlan/p/3598070.html获得解决,感谢! <div cl ...
- AJAX(XMLHttpRequest)进行跨域请求方法详解(二)
注意:以下代码请在Firefox 3.5.Chrome 3.0.Safari 4之后的版本中进行测试.IE8的实现方法与其他浏览不同. 2,预检请求 预检请求首先需要向另外一个域名的资源发送一个 HT ...
- 很好的一个dp题目 Codeforces Round #326 (Div. 2) D dp
http://codeforces.com/contest/588/problem/D 感觉吧,这道题让我做,我应该是不会做的... 题目大意:给出n,L,K.表示数组的长度为n,数组b的长度为L,定 ...
- C#入门经典(第三章-1)
#region--------#endregion 此关键字 将设置代码是否可以折叠和展开.但是他们不是C#关键字.注意:带#的是预处理指令,严格说不是C#关键字. 变量:
- GuideActivity.java引导界面:
这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api. 而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等.那 ...
- JSONObject转换JSON之将Date转换为指定格式(转)
项目中,经常会用JSONObject插件将JavaBean或List<JavaBean>转换为JSON格式的字符串,而JavaBean的属性有时候会有java.util.Date这个类型的 ...
- webapp之路--之ios上图标
以前我们用过favicon在浏览器给网站进行身份标识,用法如下: <link href="http://image.feeliu.com/web/favicon.ico" r ...
- PL\SQL学习笔记
注释 单行--多行 一.declare一般用于做变量的申明.begin 程序体开始执行 end; 程序体结束exception .. dbms_output.put_line('绝对值'||v_ab ...