php7性能测试扩展php-xhprof-extension初探

最近发现测试环境接口响应巨慢,为了验证是哪里出了问题,遂引入性能测试。由于使用的php7,目前可用的性能测试扩展似乎只有php-xhprof-extension可选。

下载安装:https://tideways.com/profiler/downloads

以下为centos安装方法

echo "[tideways]
name = Tideways
baseurl = https://s3-eu-west-1.amazonaws.com/qafoo-profiler/rpm" > /etc/yum.repos.d/tideways.repo
rpm --import https://s3-eu-west-1.amazonaws.com/qafoo-profiler/packages/EEB5E8F4.gpg
yum makecache --disablerepo=* --enablerepo=tideways
yum install tideways-php tideways-cli tideways-daemon安装

安装好后,重启php-fpm

service php-fpm restart

如报异常:

Module 'tideways' already loaded in Unknown on line 0

可能是tideways重复加载了。

[root@test]# php -i | grep .ini$
 Loaded Configuration File => /etc/php.ini
 /etc/php.d/tideways.ini
 user_ini.filename => .user.ini => .user.ini
 vi /etc/php.d/tideways.ini

注释掉:extension=tideways.so

这时检查下扩展是否已经引用

php -m | grep tide
tideways

模块就做好了。

下面开始使用,官网文档使用是这样的:

<?php

tideways_xhprof_enable();

my_application();

$data = tideways_xhprof_disable();

file_put_contents("/tmp/profile.xhprof", serialize($data));

其实就是两个函数的使用,但是当你使用时会报错,什么错误呢

PHP Fatal error:  Uncaught Error: Call to undefined function tideways_xhprof_disable()

再次确认下tideways扩展有没有装好,可以用phpinfo()看一下。发现已经引入了模块。

这就很奇怪了。

再一番Google后,找到了这个问答的评论部分 https://stackoverflow.com/questions/38103784/how-to-use-tideways-on-own-server

Thank you for this. The projects own documentation contains incorrect commands (i.e. tideways_xhprof_enable() and tideways_xhprof_disable()) which meant all I could ever get was fatal errors. Remove the _xhprof token and it all works 🙂

啥意思呢?

就是把函数tideways_xhprof_enable();中的_xhprof去掉就可以了。

然后本人试了下,改成这样

<?php

tideways_enable();

echo "test";

$data = tideways_disable();

file_put_contents("/tmp/profile.xhprof", serialize($data));

这时就可以了,原来方法名都已经改了😳

运行完后可以读取文件,然后反序列化就可以拿到分析结果了。

类似这样:

<?php

array(
    "main()" => array(
        "wt" => 1000,
        "ct" => 1,
        "cpu" => 400,
    ),
    "main()==>foo" => array(
        "wt" => 500,
        "ct" => 2,
        "cpu" => 200,
    ),
    "foo==>bar" => array(
        "wt" => 200,
        "ct" => 10,
        "cpu" => 100,
    ),
)

关于对数据的处理和展示,后续有空的时候更新。

发表评论

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