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

toolkit是tideway官方提供的性能分析的命令行工具。若是你只是本地開發調試接口性能,不想安裝xhgui,那麼使用toolkit就足夠了php

安裝

安裝tideways拓展

git clone https://github.com/tideways/php-xhprof-extension.git
cd php-profiler-extension
phpize
./configure
make && make install

在php.ini中加入git

extension=tideways_xhprof.so

重啓php-fpmgithub

service php-fpm restart

toolkit安裝

go get github.com/tideways/toolkit
# 安裝graphviz
# macOS
brew install graphviz
# ubuntu
sudo apt-get install -y graphviz

設置別名

alias tk=toolkit

tideways+toolkit

代碼埋點

在程序入口中加入shell

if (extension_loaded('tideways_xhprof')) {
    tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_CPU | TIDEWAYS_XHPROF_FLAGS_MEMORY);
}

// 你的代碼
application();

if (extension_loaded('tideways_xhprof')) {
    $data = tideways_xhprof_disable();
    file_put_contents(
        sprintf('%s/app.xhprof', '/path/to'),
        json_encode($data)
    );
}

執行下代碼,而後就會生成/path/to/app.xphrofjson

性能分析

tk analyze-xhprof /path/to/app.xphrof

圖片描述

默認性能分析的指標是wt_excl,其餘的指標有ubuntu

  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

圖片描述

顯示的指標有app

  1. 函數名
  2. Inc 函數運行時間,包括子函數
  3. Excl 函數運行時間,不包括子函數
  4. total calls 總調用次數
相關文章
相關標籤/搜索