天天看點

tideways+toolkit對php代碼進行性能分析

安裝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