php性能瓶颈分析:xhprof

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(每个函数执行总时间,包含其调用的子函数的执行时间)排列的,各个解释如后续引用:

image.png

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

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

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


image.png

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • php.ini设置,上传大文件: post_max_size = 128Mupload_max_filesize ...
    bycall阅读 6,872评论 3 64
  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 1,391评论 0 20
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 2,041评论 1 24
  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 2,204评论 2 38