PHP性能分析工具Xhprof安裝與使用

1.安裝xhprof

git地址:https://github.com/longxinH/xhprof.git

//path爲你的路徑
git clone https://github.com/longxinH/xhprof.git ./xhprof
cd xhprof/extension/
/path/to/php7/bin/phpize
./configure --with-php-config=/path/php7/bin/php-config
make && sudo make install
//配置到php.ini中
extension = xhprof.so
xhprof.output_dir = /tmp/xhprof

重啓php-fpm
查看xhprof是否安裝成功

php -m

注意:
之前make的時候一直報錯,找不到方法之類的錯誤。
‘zend_execute_data’ has no member named ‘function_state’
我的環境是PHP7,但是當時用的xhprof包是0.7,是不支持PHP7的。
所以一定要注意包的版本和PHP版本要兼容。

配置xhprof

將相關文件移入項目中,也可以移入示例文件

//切換到下載的 xhprof 目錄
cp  -r  xhprof/xhprof_html  ROOT_PATH/
cp  -r  xhprof/xhprof_lib  ROOT_PATH/
//此文件可選,也可以不移入,爲了方便測試,移入
cp -r   xhprof/examples  ROOT_PATH/

配置nginx

server {
    listen 80;
    server_name xhprof.test.com;
    root /var/www/xhprof/xhprof_html;
    index index.html index.php;
    location ~ \.php$ {
        fastcgi_pass php_pool;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
}

重啓nginx
訪問xhprof.test.com

示例

訪問 http://xhprof.test.com/examples/sample.php可以看到結果
在這裏插入圖片描述
拿到?run=5d86b71a8b75b&source=xhprof_foo
訪問
http://xhprof.test.com/xhprof_html/callgraph.php?run=5d86b66acd244&source=xhprof_foo
可以看到如下頁面
在這裏插入圖片描述
圖形化結果
點擊[View Full Callgraph]可以看圖形化結果
如果出現報錯
failed to execute cmd:" dot -Tpng". stderr:sh: dot:command not found。

//解決方案
yum install graphviz

點開View Full Callgraph

在這裏插入圖片描述

字段含義

Calls / Call Count:函數被調用的次數
Incl. Wall Time / Wall Time:執行該函數(包括子函數)耗費的時間
Incl. MemUse / Memory Usage:該函數(包括子函數)佔用的內存
Incl. PeakMemUse / Peak Memory Usage:函數(包括子函數)佔用內存的峯值
Incl. CPU / CPU:執行該函數(包括子函數)花費的CPU時間
Excl. Wall Time / Exclusive Wall Time:函數本身(不包括子函數)耗費的時間
Excl. MemUse / Exclusive Memory Usage:函數本身(不包括子函數)佔用的內存
Excl. PeakMemUse / Exclusive Peak Memory Usage:函數本身(不包括子函數)耗費內存的峯值
Exclusive CPU:函數本身(不包括子函數)花費的CPU時間

分析

看到在redis的get操作上是最耗時的,其次是curl。
那麼我程序的瓶頸點是在redis操作上,我應該做的是減少redis操作,並且減少curl請求次數。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章