使用 XHProf 分析查找 WordPress 性能瓶颈,针对优化,提高性能

文 / @WordPress主题

小本本的WordPress性能优化

性能差是WordPress广为诟病的一个特点,有个木桶理论说一只水桶能装多少水取决于它最短的那块木板,想让木桶多装点水,找到最短的那块木板是让木桶多装点水的第一步。拿到WordPress上来说,找到影响WordPress整体性能的程序处理环节是提高WordPress性能的第一步。问题是,程序都是在服务器上运行的,WordPress有那么多函数和类,怎么才能知道是哪个程序影响到了WordPress性能了呢?这就是今天要为大家介绍的XHProf,XHProf是Facebook开发的一个测试php性能的扩展,用来跟踪程序的运行情况。

安装 XHProf扩展

首先下载XHProf(http://pecl.php.net/package/xhprof)并解压,然后切换到解压出来的扩展目录,参照下面命令进行安装。

cd xhprof/extension
/usr/local/php5.6/bin/phpize
./configure --with-php-config=/usr/local/php5.6/bin/php-config --enable-xhprof
make 
make install

在WordPress中启用XHProf

编辑php.ini,添加以下配置,其中xhprof.output_dir指定了生成的profile文件存储的位置,我们将其指定为/tmp。

[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp

使用XHProf完成性能分析并且获到结果之后,结果是以数组形式储存的,如果不借助一些工具,我们很难分析这些数据,xhprof提供了基于Web的界面以方便我们对分析结果进行查看。将XHProf安装包中的xhprofhtml和xhproflib目录放到服务器的Web目录下,让xhprof_html目录中的内容对外可以访问。然后访问 xhprof_html/index.php就可以以可视化的方式查看分析的结果了,结果中主要有以下几项数据。

  • funcitonname:函数名
  • calls:调用次数
  • Incl.WallTime(microsec):函数运行时间(包括子函数)
  • IWall%:函数运行时间(包括子函数)占比
  • Excl.WallTime(microsec):函数运行时间(不包括子函数)
  • EWall%:函数运行时间(不包括子函数)

如果服务器安装了 graphviz,我们还可以得到一个类似下面的图形分析结果。

xhprof-graphviz图形分析结果

分析XHProf数据,找出性能瓶颈

针对WordPress的结果进行分析,我们很容易可以得到以下一些结论。

  • 严重影响WordPress性能的往往是几个函数。
  • 数据库读取是影响WordPress性能最大的因素,这也是大部分WordPress缓存插件都会缓存数据,减少数据库读取的原因。
  • WordPress的Metadata对性能的影响比较大。
  • apply_filter对性能的影响也比较大。

由此,我们可以稍微得到一些启发,开发WordPress自定义功能的时候,尽量减少Metadata的使用,如果必须使用,可以考虑把多条数据组合成数组或对象放在一条Metadata记录里面。同时,对于流量较大的网站,使用缓存插件对于提高WordPress的性能是有帮助的。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。