安装tideways拓展
git clone https://github.com/tideways/php-xhprof-extension.git
cd php-xhprof-extension/
/usr/local/php-7.4.24/bin/phpize
./configure --with-php-config=/usr/local/php-7.4.24/bin/php-config
make && make install
echo "extension=tideways_xhprof.so " >> /usr/local/php-7.4.24/conf/php.ini
systemctl restart php-fpm
安装go
wget https://golang.google.cn/dl/go1.17.8.linux-amd64.tar.gz
tar xf go1.17.8.linux-amd64.tar.gz -C /usr/local/
export PATH=$PATH:/usr/local/go/bin
export GO111MODULE=on
export GOPROXY=https://goproxy.io
安装toolkit
安装路径 /root/go/bin/toolkit
go install github.com/tideways/toolkit@latest
ln -sf /root/go/bin/toolkit /usr/local/sbin/tk
apt-get install -y graphviz
样例
<?php
if (extension_loaded('tideways_xhprof')) {
tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_CPU | TIDEWAYS_XHPROF_FLAGS_MEMORY);
}
application_run();
if (extension_loaded('tideways_xhprof')) {
$data = tideways_xhprof_disable();
file_put_contents(
sprintf("%s/yourapp.%d.xhprof", sys_get_temp_dir(), getmypid()),
json_encode($data)
);
}
性能分析
tk analyze-xhprof /path/to/app.xphrof
默认性能分析的指标是wt_excl,其他的指标有
1.wt 调用时长,包括子函数
2.excl_wt 调用时长,不包括子函数
3.cpu CPU调用时长,包括子函数
4.excl_cpu CPU调用时长,不包括子函数
5.memory 内存消耗(字节),包括子函数
6.excl_memory 内存消耗(字节),不包括子函数
7.io io时长,包括子函数
8.excl_io io时长,不包括子函数
生成性能瓶颈图
tk generate-xhprof-graphviz /path/to/app.xhprof
dot -Tpng callgraph.dot > callgraph.png