xhprof簡(jiǎn)介
下載安裝與配置
1畅卓、下載
cd $ROOT_PATH/webroot
wget -nv 'ftp://getprod:getprod@product.scm.baidu.com:/data/prod-64/inf/odp/tools/perftool/perftool_1-0-2_BL/output/perftool.tar.gz'
tar xzf perftool.tar.gz
2、安裝與配置
如果是PHP蟋恬,修改php/etc/ext/xhprof.ini翁潘,并重啟php-cgi:
[xhprof]
extension="xhprof.so"
如果是HHVM,修改hhvm/conf/hhvm.hdf歼争,開啟xhprof開關(guān)拜马,并重啟hhvm:
Stats {
EnableHotProfiler = true
}
3、其他
想要在瀏覽器中查看結(jié)果文件矾飞,需要確認(rèn)下nginx中的配置是否包含所有index.php一膨,否則呀邢,需要自己配置洒沦,如下所示:
#nginx.conf
location ~ ^/perftool/.*\.php$ {
root $ROOT_DIR/webroot;
fastcgi_pass $php_upstream;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ ^/perftool/ {
root $ROOT_DIR/webroot;
index index.php;
}
使用
1、記錄全局使用 价淌,在index.php中申眼,其他在出口入口
require_once('/xxx/webroot/perftool/xhprof/include.php');
#出口處
XHProf::enable();
#結(jié)束的地方
XHProf::disable();
2、結(jié)果分析查看:
查看剛剛的接口性能鏈接:
http://xxx:8080/perftool/xhprof/xhprof_html/index.php?
結(jié)果如下圖所示:默認(rèn)是按Inc Wall Time(每個(gè)函數(shù)執(zhí)行總時(shí)間蝉衣,包含其調(diào)用的子函數(shù)的執(zhí)行時(shí)間)排列的括尸,各個(gè)解釋如后續(xù)引用:
Calls:函數(shù)的調(diào)用次數(shù)
Incl. Wall Time (microsec) :包含內(nèi)部函數(shù)花費(fèi)的時(shí)間,單位微秒
Excl. Wall Time (microsec):不包含內(nèi)部函數(shù)花費(fèi)的時(shí)間病毡,單位微秒
及所占百分比(%)
注:Incl.:為 Including 包含的簡(jiǎn)寫
Excl.:為 Excluding 不包含的簡(jiǎn)寫
Wall Time:意為掛鐘時(shí)間即任務(wù)花費(fèi)的時(shí)間
想知道哪個(gè)函數(shù)最花時(shí)間濒翻,應(yīng)該看Excl Wall Time(每個(gè)函數(shù)執(zhí)行時(shí)間,不包含其調(diào)用子函數(shù)的時(shí)間)啦膜,點(diǎn)擊按Excl Wall Time排列
發(fā)現(xiàn)花費(fèi)時(shí)間較多的是:
mysqli::query 和mysqli::real_connect 以及file_put_contents有送,file的可以通過后續(xù)文件上傳專門服務(wù)器解決,但是數(shù)據(jù)庫(kù)性能的問題如何解決僧家,需要再調(diào)研雀摘。