php性能瓶颈分析:xhprof

xhprof简介

下载安装与配置

1、下载

cd $ROOT_PATH/webroot 
wget -nv 'ftp://getprod:[email protected]:/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(每个函数执行总时间,包含其调用的子函数的执行时间)排列的,各个解释如后续引用:

php性能瓶颈分析:xhprof_第1张图片
image.png

Calls:函数的调用次数
Incl. Wall Time (microsec) :包含内部函数花费的时间,单位微秒
Excl. Wall Time (microsec):不包含内部函数花费的时间,单位微秒
及所占百分比(%)

注:Incl.:为 Including 包含的简写
Excl.:为 Excluding 不包含的简写
Wall Time:意为挂钟时间即任务花费的时间

想知道哪个函数最花时间,应该看Excl Wall Time(每个函数执行时间,不包含其调用子函数的时间),点击按Excl Wall Time排列


php性能瓶颈分析:xhprof_第2张图片
image.png

发现花费时间较多的是:
mysqli::query 和mysqli::real_connect 以及file_put_contents,file的可以通过后续文件上传专门服务器解决,但是数据库性能的问题如何解决,需要再调研。

你可能感兴趣的:(php性能瓶颈分析:xhprof)