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

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

使用 XHProf 分析查找 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 就可以以可视化的方式查看分析的结果了,结果中主要有一下几项数据。

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

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

xhprof-graphviz 图形分析结果

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

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

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

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

本站提供 WordPress 主题定制开发服务

本站长期承接WordPress主题、插件、基于 WooCommerce 的商店商城开发业务。 我们有7年 WordPress 开发经验, 如果你想用 WordPress 开发网站, 请联系 QQ: 470266798 或邮箱: 4626395@gmail.com 咨询。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*