Xdebug结合webgrind对程序进行性能分析 及 使用XHProf扩展测试php程序性能-排查PHP瓶颈
创始人
2025-01-15 00:36:55
0次

一、Xdebug结合webgrind对程序进行性能分析

    Xdebug是一个开放源代码的PHP程序调试器,它的功能不只是把原来的纯文本错误展示变成了彩色的错误展示,还有实实在在地性能分析。

第一步:安装xdebug,php.ini中添加配置:

zend_extension = "E:/Lnmp/Bin/PHP/php-5.6.20-nts-x64/ext/php_xdebug.dll" xdebug.auto_trace = on xdebug.collect_params = on xdebug.collect_return = on xdebug.trace_output_dir = "E:/Lnmp/tmp"  xdebug.remote_enable = on xdebug.profiler_enable = on xdebug.profiler_enable_trigger = on xdebug.profiler_output_name = cachegrind.out.%t.%p xdebug.profiler_output_dir = "E:/Lnmp/tmp"

第二步:生成webgrind分析结果文件

    Xdebug加载正常后,在phpinfo()函数结果中能看到结果,这些都是次要的,现在我们运行任何一个网站后,注意查看xdebug.profiler_output_dir配置的目录下面的文件,会多了一些命名如cachegrind.out.1469499468.7924.webgrind的文件,如下图:

xdebug结合webgrind对程序进行性能分析

    这些就是我们需要用来做性能分析的文件,文件的命名是unix时间戳值和毫秒值组合的名字,如cachegrind.out.1469501182.6056。每请求一次就会生成一个文件,trace.4194868363.xt记录的是最新一次请求的数据,这时就需要使用我们的webgrind工具来进行分析了。webgrind也是一套PHP开发的程序,放在WEB目录下直接可以文件,里面有config.php进行相关的配置:

xdebug结合webgrind对程序进行性能分析

    如上图:defaultCostformat设置显示时间是用百分比还是用毫秒、微秒;defaultFunctionPercentage设置选出耗时之和占比大于百分之多少以上的程序进行性能分析(按用时大小序)。

第三步:图形化分析webgrind结果

    访问webgrind的页面(这时tmp目录下会生成文件cachegrind.out.1469501363.6056.webgrind)。选择分析的文件,点击update执行分析如下图(图中红框处即是读取配置值的地方):

xdebug结合webgrind对程序进行性能分析

结果意义:

1,看右上角的彩色条和列表中左边的颜色点是对应的,右上角是各颜色的总时间统计,列表是细分时间统计。其中绿色代表对类的调用;橙色代表其他过程调用;蓝色代表php内置函数,灰色代表require/include文件包含所用时间。

2,invocation count是php页面执行完毕函数被调用的总次数;total self cost 是函数自身耗时;total inclusive cost 函数从开始到执行完毕总耗时。

3,可点开每一项调用,查看更细的调用次数和调用用时统计。

二、使用XHProf扩展测试php程序性能-排查PHP性能瓶颈

    之前我简单使用过webgrind来对PHP程序的性能进行测试,今天推荐另一个性能测试工具:XHProf扩展。
    XHProf是Facebook开发的性能调试工具,能帮助直观的统计显示PHP程序执行中各方法函数调用次数和消耗时间,以方便我们排查性能瓶颈并进行调优。而更加方便的是,XHProf能绘制调用关系图。用时最长的执行流程会使用明显的粗线和颜色进行标识。对整个程序执行期间的流程和瓶颈一目了然,相比于XDeBug,XHProf是PHP的PECL扩展。比XDeBug更省资源,并且更加小巧。

    XHProf的安装:目前的最新版是0.9.4版

cd /usr/local/ 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扩展一样,完成后在php.ini中加入extension。不过除此之外还需要添加一项配置,如下:

extension=xhprof.so xhprof.output_dir="/tmp/xhprof"  #指定性能统计文件的存放目录

 重启php.使用也非常地简单:在整个程序的开头添加程序:

xhprof_enable();  #打开性能分析

    注意:因为分析过程需要加载一些xhprof已经写好的PHP程序,并且结果是以WEB形式的图表展现,所以需要调用一些xhprof已经写好的一些程序。在安装目录中有一个xhprof_lib目录和xhprof_html目录:在使用xhprof功能前需要将这两个目录放至WEB程序中(并列存放,并保证xhprof_html目录可以通过http访问),

    xhprof_lib目录:性能分析时需要加载的程序
    xhprof_html目录:WEB形式展现分析统计结果时要加载的程序

在整个程序的结尾添加:

#结束性能分析并获得性能数据:数组 $result = xhprof_disable(); #包含进分析程序 require 'xhprof_lib/utils/xhprof_lib.php'; require 'xhprof_lib/utils/xhprof_runs.php'; $xhprofRuns = new XHProfRuns_Default(); #保存性能分析文件,实际是一个数组数据serialize之后的结果 $runId = $xhprofRuns->save_run($result, 'test'); #生成分析页面的跳转URL $str = '/xhprof_html/index.php?run=' . $runId . '&source=test'; echo "phprof:$str";

 再次执行页面会在最后看到有如下链接:

点开链接能看到以表格展现的分析数据:

点击上面图中的 [View Full Callgraph]链接就能查看到图表分析结果:

相关内容

热门资讯

实测交流透视挂!宝玛大厅ai智... 实测交流透视挂!宝玛大厅ai智能透视挂教程,宝玛大厅破解软件经验(本来有挂辅助)1、每一步都需要思考...
总算了解辅助器!朱雀吴江三缺一... 总算了解辅助器!朱雀吴江三缺一ai智能透视辅助挂技巧,朱雀吴江三缺一好像是有挂(有辅助挂细节)朱雀吴...
今日公布透视!九五至尊大厅ai... 今日公布透视!九五至尊大厅ai智能透视插件,九五至尊大厅有没有透视挂窍门(切实有挂技术)1、在九五至...
玩家必看科普开挂!聚闲麻将ai... 玩家必看科普开挂!聚闲麻将ai智能透视辅助挂软件,聚闲麻将总是真的有挂(有辅助挂方式)聚闲麻将能透视...
据报道开挂!旅游娱乐ai智能开... 据报道开挂!旅游娱乐ai智能开挂工具,旅游娱乐辅助工具演示(一直有挂教学)1、全新机制【旅游娱乐ai...
一分钟揭秘开挂!决胜朋来麻将a... 一分钟揭秘开挂!决胜朋来麻将ai智能透视辅助挂教程,决胜朋来麻将真是真的是有挂(有辅助挂总结)1、首...
如何分辨真伪透视!红牛ai智能... 如何分辨真伪透视!红牛ai智能透视攻略,红牛是不是有挂经验(真是有挂技术)1、操作简单,无需红牛手机...
2分钟细说辅助器!江湖大庆麻将... 2分钟细说辅助器!江湖大庆麻将ai智能透视辅助挂攻略,江湖大庆麻将竟然是真的有挂(有辅助挂头条)1、...
总算清楚透视挂!老夫子厅ai智... 总算清楚透视挂!老夫子厅ai智能透视挂技巧,老夫子厅怎么开挂课程(好像发现有挂)老夫子厅破解侠是真的...
解密关于辅助!菜鸟麻将ai智能... 解密关于辅助!菜鸟麻将ai智能透视辅助挂脚本,菜鸟麻将总是存在有挂(有辅助挂存在)1、用户打开应用后...