php xhprof 性能分析工具

1.获取源码

https://github.com/longxinH/xhprof

下载zip文件,然后执行步骤2.

2.编译安装

cd xhprof-master/extension/
sudo /usr/bin/phpize
sudo ./configure --with-php-config=/usr/bin/php-config --enable-xhprof
sudo make && make install

3.PHP加载

php.ini 引入 xhprof.so,并重启php-fpm
make install 成功后会得到xhprof.so的目录,/usr/lib64/php/modules/xhprof.so

修改php.ini文件, vim /etc/php.ini(路径根据自己的配置)
extension=/usr/lib64/php/modules/xhprof.so //注意so文件的路径
xhprof.output_dir=/tmp/xhprof  //此配置用于存放分析数据

sudo service php-fpm restart

4.检查

php -m | grep xhprof,如果输出xhprof,则说明安装成功
或者
phpinfo();

5.使用方法
在待测试代码开始部分加入:

xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);

注参数说明:

XHPROF_FLAGS_CPU 分析结果中添加 CPU 数
XHPROF_FLAGS_MEMORY 分析结果中添加内存数据
XHPROF_FLAGS_NO_BUILTINS 跳过 PHP 内置函数

在代码结束

$xhprof_data = xhprof_disable();

注:我是在laravel5 框架里使用的,并且把xhprof_lib.php,xhprof_runs.php两个文件放到app\Libs目录下,并添加namespace,这里引入文件是关键,否则会报 Class XHProfRuns_Default not found。

$XHPROF_ROOT = base_path('app/Libs');                                                     
include_once($XHPROF_ROOT.'/xhprof_lib.php');                                                            
include_once($XHPROF_ROOT.'/xhprof_runs.php');                                                           

$xhprofRuns = new XHProfRuns_Default();                                                                  
$runId = $xhprofRuns->save_run($xhprof_data, 'xhprof_test');                                             

echo 'http://192.168.204.77:13000/index.php?run=' . $runId . '&source=xhprof_test';(http://192.168.204.77:13000是nginx搭建来访问xhprof_html目录)

最后输出$xhprof_data即可
当执行待测试代码时,在xhprof.output_dir=/tmp/xhprof 对应的目录下就会生成类似于 5aee7ebee4afd.xhprof_test.xhprof格式的文件,这是分析的结果数据文件。同时,也会得到url如下http://192.168.204.77:13000/index.php?run=5aee86c9b5174&source=xhprof_test,在浏览器中打开即可,列表结果出现。

listpic

6.结果分析

如果不图形化显示,你看到的是下面这几项数据
ct 函数调用次数,
wt 花费的时间,
cpu 花费的 CPU 时间(微秒即百万分之一秒),
mu 使用的内存(bytes),
pmu 使用的内存峰值(bytes)

Incl. 表示Including(包含)的缩写
Excl. 表示Excluding(不包含)的缩写
Function Name: 函数名
Calls: 调用次数
Calls%: 调用次数的百分比(图中带有百分比符号的字段皆表示百分比)
Incl. Wall Time: 包含子函数执行的所有花费时间。单位:微秒(下同)
Excl. Wall Time: 函数本身执行所花费的时间。
Incl. CPU: 包含子函数执行的所花费的CPU时间。
Excl. CPU: 函数本身执行所花费的CPU时间。
Incl.MemUse: 包含子函数执行的所占用的内存。单位:字节(下同)
Excl.MemUse: 函数本身执行所占用的内存。
Incl.PeakMemUse: 包含子函数执行,所占用内存的峰值。
Excl.PeakMemUse: 函数本身执行所占用内存的峰值。

如果图形化展示
在 xhprof 源码包中提供了xhprof_html 和 xhprof_lib用于分析结果的图形化展示
点击列表图中的view full callgraph,就能看到整个调用链图。

callgraph pic
这里可能有如下报错:

Error: either we can not find profile data for run_id 4d7f0bd99a12f or
the threshold 0.01 is too small or you do not have ‘dot’ image
generation utility installed

这个错误应该会遇到,解决方法是安装graphviz
sudo yum install -y graphviz(注意版本,我的是graphviz-2.26.0,可以正常显示),原因是xhprof绘制的是png图,需要升级dot版本。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值