xhprof简介
下载安装与配置
1、下载
cd $ROOT_PATH/webroot
wget -nv 'ftp://getprod:getprod@product.scm.baidu.com:/data/prod-64/inf/odp/tools/perftool/perftool_1-0-2_BL/output/perftool.tar.gz'
tar xzf perftool.tar.gz
2、安装与配置
如果是PHP,修改php/etc/ext/xhprof.ini,并重启php-cgi:
[xhprof]
extension="xhprof.so"
如果是HHVM,修改hhvm/conf/hhvm.hdf,开启xhprof开关,并重启hhvm:
Stats {
EnableHotProfiler = true
}
3、其他
想要在浏览器中查看结果文件,需要确认下nginx中的配置是否包含所有index.php,否则,需要自己配置,如下所示:
#nginx.conf
location ~ ^/perftool/.*\.php$ {
root $ROOT_DIR/webroot;
fastcgi_pass $php_upstream;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ ^/perftool/ {
root $ROOT_DIR/webroot;
index index.php;
}
使用
1、记录全局使用 ,在index.php中,其他在出口入口
require_once('/xxx/webroot/perftool/xhprof/include.php');
#出口处
XHProf::enable();
#结束的地方
XHProf::disable();
2、结果分析查看:
查看刚刚的接口性能链接:
http://xxx:8080/perftool/xhprof/xhprof_html/index.php?
结果如下图所示:默认是按Inc Wall Time(每个函数执行总时间,包含其调用的子函数的执行时间)排列的,各个解释如后续引用:
Calls:函数的调用次数
Incl. Wall Time (microsec) :包含内部函数花费的时间,单位微秒
Excl. Wall Time (microsec):不包含内部函数花费的时间,单位微秒
及所占百分比(%)
注:Incl.:为 Including 包含的简写
Excl.:为 Excluding 不包含的简写
Wall Time:意为挂钟时间即任务花费的时间
想知道哪个函数最花时间,应该看Excl Wall Time(每个函数执行时间,不包含其调用子函数的时间),点击按Excl Wall Time排列
发现花费时间较多的是:
mysqli::query 和mysqli::real_connect 以及file_put_contents,file的可以通过后续文件上传专门服务器解决,但是数据库性能的问题如何解决,需要再调研。