XHProf是一個分層PHP性能分析工具。它報(bào)告函數(shù)級別的請求次數(shù)和各種指標(biāo),包括阻塞時間,CPU時間和內(nèi)存使用情況。一個函數(shù)的開銷,可細(xì)分成調(diào)用者和被調(diào)用者的開銷,XHProf數(shù)據(jù)收集階段,它記錄調(diào)用次數(shù)的追蹤和包容性的指標(biāo)弧在動態(tài)callgraph的一個程序。它獨(dú)有的數(shù)據(jù)計(jì)算的報(bào)告/后處理階段。在數(shù)據(jù)收集時,XHProfd通過檢測循環(huán)來處理遞歸的函數(shù)調(diào)用,并通過給遞歸調(diào)用中每個深度的調(diào)用一個有用的命名來避開死循環(huán)。XHProf分析報(bào)告有助于理解被執(zhí)行的代碼的結(jié)構(gòu),它有一個簡單的HTML的用戶界面( PHP寫成的)
xhprof安裝配置
[root@news ~]# wget http://pecl.php.net/get/xhprof-0.9.2.tgz
[root@news ~]# tar zxf xhprof-0.9.2.tgz
[root@news xhprof-0.9.2]#cd xhprof-0.9.2
[root@news xhprof-0.9.2]#cp -r xhprof_html xhprof_lib /www/auto/(網(wǎng)站源碼路徑復(fù)制完成之后記得修改用戶所有者權(quán)限)
[root@news xhprof-0.9.2]#cd extension
[root@news extension]# ./configure --with-php-config=/usr/local/php/bin/phpize
[root@news extension]# make && make install
安裝完成之后修改php.ini添加(前提是你的擴(kuò)展路徑已經(jīng)修改成extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/")
extension = xhprof.so
xhprof.output_dir=/log/xhprof
修改完成之后重新啟動web服務(wù) apache重啟服務(wù) nginx重啟php-fpm服務(wù)
安裝Graphviz:(也可以不安裝,如果安裝了Graphviz,XHProf會用比較牛的圖形方式展現(xiàn)統(tǒng)計(jì)數(shù)據(jù))
root@news ~]# wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
root@news ~]# tar zxf graphviz-2.24.0.tar.gz
root@news ~]# cd graphviz-2.24.0
[root@news graphviz-2.24.0]# ./configure
[root@news graphviz-2.24.0]#make
[root@news graphviz-2.24.0]#make install
安裝完成后,會生成/usr/local/bin/dot文件,你應(yīng)該確保路徑在PATH環(huán)境變量里,以便XHProf能找到它
xhprof_enable(); //統(tǒng)計(jì)的代碼部分之前加,如果要顯示CPU占用 可以加入XHPROF_FLAGS_CPU參數(shù),內(nèi)存是XHPROF_FLAGS_MEMORY,如果兩個一起:XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY,如:xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
xhprof_disable();//統(tǒng)計(jì)的代碼部分之后加
這樣xhprof就可以統(tǒng)計(jì)當(dāng)前頁面的函數(shù)性能情況了。xhprof會把每次訪問加入統(tǒng)計(jì)代碼的頁面的性能統(tǒng)計(jì)結(jié)果在指定目錄下生成一個文件,文件名命名方式為:本次訪問的系統(tǒng)ID.命名空間,每次刷新頁面都會重新生成一個文件,每個的系統(tǒng)ID都不同。
然后通過xhprof_html目錄的http訪問url來查看結(jié)果。如:http://app/xhprof_html/?run=運(yùn)行id&source=命名空間(其中運(yùn)行ID和命名空間可以根據(jù)xhprof生成的文件名來確定)
使用XHProf:
// start profiling
xhprof_enable();
// run program
....
// stop profiler
$xhprof_data = xhprof_disable();
//
// Saving the XHProf run
// using the default implementation of iXHProfRuns.
//
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();
// Save the run under a namespace "xhprof_foo".
//
// **NOTE**:
// By default save_run() will automatically generate a unique
// run id for you. [You can override that behavior by passing
// a run id (optional arg) to the save_run() method instead.]
//
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");
echo "---------------\n".
"Assuming you have set up the http based UI for \n".
"XHProf at some address, you can view run at \n".
"http://<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n".
"---------------\n";
貼下我的一個測試文件
[root@news trunk]# vi test.php
<?php
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
phpinfo();
$data = xhprof_disable();
include_once "xhprof_lib/utils/xhprof_lib.php";
include_once "xhprof_lib/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($data, "xhprof_foo");
echo "---------------\n".
"Assuming you have set up the http based UI for \n".
"XHProf at some address, you can view run at \n".
"http://XXXX/xhprof_html/index.php?run=$run_id&source=xhprof_foo\n".
"---------------\n";
?>
之后在瀏覽器里面直接訪問test.php的頁面會在上面設(shè)定的xhprof.output_dir目錄里生成名字類似52ba534254958.xhprof_foo.xhprof的數(shù)據(jù)文件,可以很方便的通過Web方式瀏覽效果:
http://XXXX/xhprof_html/index.php?run=52ba534254958&source=xhprof_foo
目前顯示的是表格形式的顯示,點(diǎn)擊頁面上的[View Full Callgraph],就能看到精美的圖片顯示了。
下面是一些參數(shù)說明
Inclusive Time 包括子函數(shù)所有執(zhí)行時間。
Exclusive Time/Self Time 函數(shù)執(zhí)行本身花費(fèi)的時間,不包括子樹執(zhí)行時間。
Wall Time 花去了的時間或掛鐘時間。
CPU Time 用戶耗的時間+內(nèi)核耗的時間
Inclusive CPU 包括子函數(shù)一起所占用的CPU
Exclusive CPU 函數(shù)自身所占用的CPU
所有參數(shù)說明
Function Name 函數(shù)名
Calls 調(diào)用次數(shù)
Calls% 調(diào)用百分比
Incl. Wall Time (microsec) 調(diào)用的包括子函數(shù)所有花費(fèi)時間 以微秒算(一百萬分之一秒)
IWall% 調(diào)用的包括子函數(shù)所有花費(fèi)時間的百分比
Excl. Wall Time (microsec) 函數(shù)執(zhí)行本身花費(fèi)的時間,不包括子樹執(zhí)行時間,以微秒算(一百萬分之一秒)
EWall% 函數(shù)執(zhí)行本身花費(fèi)的時間的百分比,不包括子樹執(zhí)行時間
Incl. CPU(microsecs) 調(diào)用的包括子函數(shù)所有花費(fèi)的cpu時間。減Incl. Wall Time即為等待cpu的時間
減Excl. Wall Time即為等待cpu的時間
ICpu% Incl. CPU(microsecs)的百分比
Excl. CPU(microsec) 函數(shù)執(zhí)行本身花費(fèi)的cpu時間,不包括子樹執(zhí)行時間,以微秒算(一百萬分之一秒)。
ECPU% Excl. CPU(microsec)的百分比
Incl.MemUse(bytes) 包括子函數(shù)執(zhí)行使用的內(nèi)存。
IMemUse% Incl.MemUse(bytes)的百分比
Excl.MemUse(bytes) 函數(shù)執(zhí)行本身內(nèi)存,以字節(jié)算
EMemUse% Excl.MemUse(bytes)的百分比
Incl.PeakMemUse(bytes) Incl.MemUse的峰值
IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比
Excl.PeakMemUse(bytes) Excl.MemUse的峰值
EPeakMemUse% EMemUse% 峰值百分比
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站名稱:php性能分析工具xhprof-創(chuàng)新互聯(lián)
分享URL:http://aaarwkj.com/article46/dopseg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、標(biāo)簽優(yōu)化、品牌網(wǎng)站建設(shè)、網(wǎng)站營銷、小程序開發(fā)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容