成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP性能追蹤及分析工具xhprof的安裝與使用

microelec / 1966人閱讀

摘要:為提高的性能,你可以運(yùn)行以下指令以添加索引安裝的擴(kuò)展在文件最后增加查看是否安裝成功重啟運(yùn)行的安裝腳本。

PHP性能追蹤及分析工具xhprof的安裝與使用

對于本地開發(fā)環(huán)境來說,進(jìn)行性能分析xdebug是夠用了,但如果是線上環(huán)境的話,xdebug消耗較大,配置也不夠靈活,因此線上環(huán)境建議使用xhprof進(jìn)行PHP性能追蹤及分析。

我們今天就簡單介紹一下xhprof的簡單安裝與使用

xhprof的安裝

下載xhprof,我們這里選擇的是通過git clone的方式,當(dāng)然你也可以從 http://pecl.php.net/package/x... 這里下載。

cd /usr/local/src
# 我自己漢化的版本
git clone https://github.com/maxincai/xhgui.git
# 你可以clone原版
git clone https://github.com/phacility/xhprof.git

注意:
php5.4及以上版本不能在pecl中下載,不支持。需要在github上下載hhttps://github.com/phacility/...。

另外xhprof已經(jīng)很久沒有更新過了,截至目前還不支持php7,php7可以試使用https://github.com/tideways/p...。

安裝xhporof

cd xhprof/extension
/usr/local/php5.6/bin/phpize
./configure --with-php-config=/usr/local/php5.6/bin/php-config --enable-xhprof
make
make install

最后如果出現(xiàn)類似的提示信息,就表示編譯安裝成功

stalling shared extensions:     /usr/local/php-5.6.14/lib/php/extensions/no-debug-non-zts-20131226/

修改配置文件/etc/php5.6.ini,在最后增加如下配置

[xhprof]
extension=xhprof.so
xhprof.output_dir=/data/www/xhprof/output

重啟php-fpm后通過phpinfo查看,或者在命令行通過php -m | grep xhprof查看是否安裝成功。

注意:

需要創(chuàng)建output_dir
mkdir -p /data/www/xhprof/output

xhprof的簡單用法

將下載的xhprof復(fù)制到webroot目錄,我這里以/data/www/project-xhprof為例

mkdir /data/www/project-xhprof
cp -R /usr/local/src/xhprof/* /data/www/project-xhprof/
cd /data/www/project-xhprof

在nginx中增加站點(diǎn)配置

server {
        listen  80;
        server_name xhprof.dev;
        root /data/www/project-xhprof;
        index index.php index.html;
        access_log /var/log/nginx/xhprof.dev.log main;
        error_log /var/log/nginx/xhprof.dev.log.err debug;
        rewrite_log on;

        location ~* .php$ {
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass  unix:/var/run/php5.6-fpm.sock;
                fastcgi_index index.php;

        }
}

重啟nginx,然后使用http://xhprof.dev/examples/sample.php,可以看到一些輸出,并且提示通過訪問http://


分析一下示例代碼sample.php,關(guān)健代碼:


$xhprof_data中記錄了程序運(yùn)行過程中所有的函數(shù)調(diào)用時間及CPU內(nèi)存消耗,具體記錄哪些指標(biāo)可以通過xhprof_enable的參數(shù)控制,目前支持的參數(shù)有:

HPROF_FLAGS_NO_BUILTINS 跳過所有內(nèi)置(內(nèi)部)函數(shù)。

XHPROF_FLAGS_CPU 輸出的性能數(shù)據(jù)中添加 CPU 數(shù)據(jù)。

XHPROF_FLAGS_MEMORY 輸出的性能數(shù)據(jù)中添加內(nèi)存數(shù)據(jù)。

之后的處理已經(jīng)與xhprof擴(kuò)展無關(guān),大致是編寫一個存儲類XHProfRuns_Default,將$xhprof_data序列化并保存到某個目錄,可以通過XHProfRuns_Default(__DIR__)將結(jié)果輸出到當(dāng)前目錄,如果不指定則會讀取php.ini配置文件中的xhprof.output_dir,仍然沒有指定則會輸出到/tmp。

xhprof_html/index.php將記錄的結(jié)果整理并可視化,默認(rèn)的UI里列出了:

funciton name : 函數(shù)名

calls: 調(diào)用次數(shù)

Incl. Wall Time (microsec): 函數(shù)運(yùn)行時間(包括子函數(shù))

IWall%:函數(shù)運(yùn)行時間(包括子函數(shù))占比

Excl. Wall Time(microsec):函數(shù)運(yùn)行時間(不包括子函數(shù))

EWall%:函數(shù)運(yùn)行時間(不包括子函數(shù))

xhprof_html/index.php中還可以看到[View Full Callgraph]鏈接,點(diǎn)擊后可以繪制出一張可視化的性能分析圖,如果點(diǎn)擊后報錯的話,可能是缺少依賴graphviz,
graphviz是一個繪制圖形的工具,可以更為直觀的讓你查看性能的瓶頸。

wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
cd graphviz-2.24.0
./configure
make && make install

或者直接使用yum安裝

yum install -y libpng
yum install -y graphviz

這時候就可以看到類似下面的效果

優(yōu)雅的接入現(xiàn)有項(xiàng)目

通過上面的這些介紹,我們其實(shí)就已經(jīng)可以將xhprof整合到任何我們已有的項(xiàng)目中,目前大部份的MVC框架都有唯一的入口文件,只需要在入口文件的開始處注入xhprof的代碼:


我們不可能在我們需要分析的所有地方都加上,但是這樣免不了要修改項(xiàng)目的源代碼,其實(shí)php本身就提供了更好的注入方式,比如將上述邏輯保存為/data/www/xhprof/inject.php,然后修改php配置文件中的auto_prepend_file配置

auto_prepend_file = /data/www/xhprof/inject.php

對于 Apache 服務(wù)器,添加以下代碼:

php_admin_value auto_prepend_file "/data/www/xhprof/inject.php"

對于 Nginx 服務(wù)器,在服務(wù)器配置中添加以下代碼:

fastcgi_param PHP_VALUE "auto_prepend_file=/data/www/xhprof/inject.php";

這樣所有的php請求文件都會自動注入/data/www/xhprof/inject.php這個文件,這樣侵入性更小,并且可以實(shí)現(xiàn)基于站點(diǎn)的注入。

更漂亮的數(shù)據(jù)展示xhgui

注入代碼后我們還需要實(shí)現(xiàn)保存xhprof數(shù)據(jù)以及展示數(shù)據(jù)的UI,現(xiàn)有的兩個比較流行的兩個輪子是 xhprof.io 和 xhgui 兩個項(xiàng)目都差不多,但綜合比較起來xhprof.io年久失修,xhgui還比較活躍,UI界面也相對比較美觀,我這里就選擇xhgui進(jìn)行數(shù)據(jù)展示了。

安裝xhgui

從github中clone代碼至站點(diǎn)目錄/data/www/project-xhgui

mkdir /data/www/project-xhgui
cd /data/www/project-xhgui
git clone https://github.com/perftools/xhgui.git ./

設(shè)置緩存目錄的權(quán)限,允許nginx創(chuàng)建文件

chmod -R 777

啟動mongodb實(shí)例,如果mongodb如沒有使用默認(rèn)的端口和配置,或者有使用安全驗(yàn)證,剛需要修改config/config.php中的相關(guān)配置,我們這里使用的是默認(rèn)配置,就不作修改了。

為提高 MongoDB 的性能,你可以運(yùn)行以下指令以添加索引:

$ /usr/local/mongodb/bin/mongo
> use xhprof
db.results.ensureIndex( { "meta.SERVER.REQUEST_TIME" : -1 } )  
db.results.ensureIndex( { "profile.main().wt" : -1 } )  
db.results.ensureIndex( { "profile.main().mu" : -1 } )  
db.results.ensureIndex( { "profile.main().cpu" : -1 } )  
db.results.ensureIndex( { "meta.url" : 1 } )  

安裝mongodb的PHP擴(kuò)展

wget http://pecl.php.net/get/mongodb-1.1.9.tgz
tar zxvf mongodb-1.1.9.tgz
cd mongodb-1.1.9
/usr/local/php5.6/bin/phpize
./configure --with-php-config=/usr/local/php5.6/bin/php-config
make && make install
vim /etc/php5.6.ini
# 在文件最后增加
[mongo]
extension=mongo.so

# 查看是否安裝成功
php -m | grep mongo

# 重啟php-fpm
/etc/init.d/php5.6-fpm restart

運(yùn)行XHGui的安裝腳本。安裝腳本將通過composer安裝XHGui的相關(guān)依賴。

php install.php
# 如果上面的命令執(zhí)行報錯,則執(zhí)行下面的命令
composer install

配置web服務(wù)器,我們這里以nginx為例

server {
        listen  80;
        server_name xhgui.dev;
        root /data/www/project-xhgui/webroot;
        index index.php index.html;
        access_log /var/log/nginx/xhgui.dev.log main;
        error_log /var/log/nginx/xhgui.dev.log.err debug;
        rewrite_log on;

        location / {
                try_files $uri $uri/ /index.php?$uri&$args;
        }
        
        location ~* .php$ {
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass  unix:/var/run/php5.6-fpm.sock;
                fastcgi_index index.php;

        }
}

配置完成后重啟nginx,這時候打開http://xhgui.dev/,就可以看到類似下面的頁面

修改/etc/php5.6.ini中的auto_prepend_file配置完成xhgui的接入

auto_prepend_file = /data/www/project-xhgui/external/header.php
xhgui的具體使用 最近運(yùn)行

也可以按時間范圍和請求的地址進(jìn)行搜索

可以按執(zhí)行時間、CPU時間、內(nèi)存占用進(jìn)行排序

可以點(diǎn)擊一個地址進(jìn)去看這個地址的最近趨勢

一次運(yùn)行的詳細(xì)

一個函數(shù)的運(yùn)行詳細(xì)

一次運(yùn)行的函數(shù)調(diào)用圖

一次運(yùn)行的火焰圖

對比多次請求


添加觀察函數(shù)


參考

使用xhprof進(jìn)行線上PHP性能追蹤及分析

PHP性能分析——xhprof

PHP 性能分析第一篇: Xhprof & Xhgui 介紹

PHP 性能分析第二篇: Xhgui In-Depth

PHP 性能分析第三篇: 性能調(diào)優(yōu)實(shí)戰(zhàn)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/21982.html

相關(guān)文章

  • PHP 性能追蹤分析工具XHPROF

    摘要:什么是開源的輕量級性能分析工具。它報告函數(shù)級別的請求次數(shù)和各種指標(biāo),包括阻塞時間,時間和內(nèi)存使用情況?;跒g覽器的性能分析用戶界面能更容易查看,或是與同行們分享成果。對于本地開發(fā)環(huán)境來說,進(jìn)行性能分析是夠用了。 什么是 XHPROF? XHPROF:Facebook 開源的輕量級PHP性能分析工具。 它報告函數(shù)級別的請求次數(shù)和各種指標(biāo),包括阻塞時間,CPU時間和內(nèi)存使用情況。 XHPr...

    raoyi 評論0 收藏0
  • 使用XHProf分析PHP性能瓶頸(二)

    摘要:上一篇文章里,我們介紹了如何基于擴(kuò)展來分析性能,并記錄到日志里,最后使用擴(kuò)展自帶的在里展示出來。本次測試中,實(shí)際使用了擴(kuò)展切換為擴(kuò)展后里看不到數(shù)據(jù),原因未知。雖然來自但已經(jīng)很久不更新,官方源已經(jīng)顯示此包已廢棄,不再維護(hù)。 上一篇文章里,我們介紹了如何基于xhprof擴(kuò)展來分析PHP性能,并記錄到日志里,最后使用xhprof擴(kuò)展自帶的UI在web里展示出來。本篇文章將講述2個知識點(diǎn): ...

    Worktile 評論0 收藏0
  • DockerLNMP一鍵安裝開發(fā)環(huán)境 + PHP非侵入式監(jiān)控平臺xhgui(優(yōu)化系統(tǒng)性能、定位Bu

    摘要:的一鍵安裝開發(fā)環(huán)境非侵入式監(jiān)控平臺優(yōu)化系統(tǒng)性能定位的神器之前在用做本地開發(fā)環(huán)境,因?yàn)闆]有這些對程序性能追蹤及分析的工具,所以索性基于的編排了一套自己使用。 DNMP PLUS dnmp = Docker + Nginx + MySQL + PHP + Redis + MongDB plus = xhgui + xhprof + tideways dnmp-plus = PHPer 的一...

    AlanKeene 評論0 收藏0
  • PHP性能被動分析工具之xhgui加tideways安裝實(shí)踐

    摘要:性能被動分析工具之加的安裝實(shí)踐前言最近一直想做個接口性能分析,但是手打?qū)嵲谀馨讶私o累死。怎么辦呢想到之前有寫過一篇我所知道的相關(guān)調(diào)優(yōu)匯總,里面有一個的調(diào)優(yōu)方式。但是使用它酷炫的需要付費(fèi),擴(kuò)展則不需要。 PHP性能被動分析工具之xhgui加tideways的安裝實(shí)踐 By:0x584A Date:2016-11-23 17:55:42 前言 最近一直想做個接口性能分析,但是手打log實(shí)在...

    Chiclaim 評論0 收藏0
  • xhprof使用

    摘要:它報告函數(shù)級別的請求次數(shù)和各種指標(biāo),包括阻塞時間,時間和內(nèi)存使用情況。它獨(dú)有的數(shù)據(jù)計算的報告后處理階段。在數(shù)據(jù)收集時,通過檢測循環(huán)來處理遞歸的函數(shù)調(diào)用,并通過給遞歸調(diào)用中每個深度的調(diào)用一個有用的命名來避開死循環(huán)。 簡介 XHProf是一個分層PHP性能分析工具。XHProf是一個分層PHP性能分析工具。它報告函數(shù)級別的請求次數(shù)和各種指標(biāo),包括阻塞時間,CPU時間和內(nèi)存使用情況。一個函數(shù)...

    darryrzhong 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<