PHP7性能测试工具—xhprof 的安装以及性能测试

xhprof 是 Facebook 09 年出的一个很优秀的 PHP profiler 工具,但 Facebook 后来迁移到 hhvm,早已不再维护,它在 PHP7 下有诸多 bug。
  • 使用兼容的 xhprof 安装

?
xhprof已经很久没有更新了,使用他人的repo[^1]:
  1. cd ~ git clone https://github.com/longxinH/xhprof
  2.  cd xhprof/extension
  3. 使用phpize 安装php扩展:
  4. 执行 phpize
    [root@25ma_cn extension]# /usr/local/php/bin/phpize Configuring for:PHP Api Version:         20151012Zend Module Api No:      20151012Zend Extension Api No:   32015101
  5.  --with-php-config 这里的值是当前php安装的具体位置  ./configure --with-php-config=/usr/local/php/bin/php-config --enable-xhprof
  6. make && make install
  7. 安装完成之后会出现 Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
  8. 修改php.ini 配置文件,将 xhprof.so 以及配置添加到做末尾  [xhprof]extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/xhprof.so;xhprof.output_dir=/mnt/hgfs/xhprofs/xhprof_output #表示输出目录
  9. 重启:linux  php-fpm service php-fpm restart
  10. 检查是否安装成功php71 -m | grep xhprof 返回如下:[root@25ma_cn tmp]# php -m |grep xhprofxhprof 表示安装成功了

?
  • NGINX 配置访问

  1. 配置这个nginx主要是用来收集和展示性能测试的数据
  2. 创建文件夹
  3. mkdir -p /mnt/hgfs/xhprofs
  4. nginx 配置如下:
  5. QQ截图20181214161912.png
  6. 如果nginx里面配置的是域名访问还需要在本地hosts 里面配置 IP和域名的映射,例如:#php性能测试工具192.168.227.81		xhprof.gamesweb.com
  7. 重启nginx service nginx restart
  8. 测试下是否配置ok,可以在nginx 配置的目录新建一个index.php 里面写上如下代码:<php phpinfo();die;>
  9. 打印的是phpinfo 相关配置信息 ,然后搜索 xhprof 能找到就ok
  10.  将xhprof的安装目录xhprof_lib 和 xhprof_html以及 examples 文件夹复制到 /mnt/hgfs/xhprofs/ 
  11. 然后访问 http://your_host/xhprof_html/index.php 即可
  12. 安装和配置已经完成了,接下来我们要进行php代码的性能测试
  13. 首先,我先简单说下性能测试代码如何添加
  14. QQ截图20181214161849.png
  15. 执行添加了性能测试的php脚本文件 http://your_host/xhprof_html/examples/sample.php
  16. QQ截图20181214161901.png
  17. 证明已经有php性能测试文件生成了
  18. 访问 url : http://your_host/xhprof_html/index.php
  19. QQ截图20181214155759.png
  20. 然后点击:测试报告

? ? ?
QQ截图20181214155914.png

  • 性能点 描述

?
  1. Incl. 表示Including(包含)的缩写
  2. Excl. 表示Excluding(不包含)的缩写
  3. Function Name: 函数名
  4. Calls: 调用次数
  5. Calls%: 调用次数的百分比(图中带有百分比符号的字段皆表示百分比的意思,所以后面不在介绍)
  6. Incl. Wall Time: 包含子函数执行的所有花费时间。单位:微秒(下同)
  7. Excl. Wall Time: 函数本身执行所花费的时间。
  8. Incl. CPU: 包含子函数执行的所花费的CPU时间。
  9. Excl. CPU: 函数本身执行所花费的CPU时间。
  10. Incl.MemUse: 包含子函数执行的所占用的内存。单位:字节(下同)
  11. Excl.MemUse: 函数本身执行所占用的内存。
  12. Incl.PeakMemUse: 包含子函数执行,所占用内存的峰值。
  13. Excl.PeakMemUse: 函数本身执行所占用内存的峰值。

?
[^1]: 除了 xhprof issue 和某博文提到了一些替代 repo,还有 tideways 等,大家自行研究

如果在测试的过程中遇到问题都可以将问题回复到帖子下方,我们一起解决
?

0 个评论

要回复文章请先登录注册