linux PHP7環(huán)境安裝性能分析工具xhprof擴展及使用

前言

性能分析是衡量應用程序在代碼級別的相對性能。性能分析將捕捉的事件包括:CPU的使用医增,內(nèi)存的使用,函數(shù)的調(diào)用時長和次數(shù)环葵,以及調(diào)用圖调窍,性能分析的行為也會影響應用性能宝冕。

在PHP的世界里张遭,有兩個截然不同的性能分析器-----主動和被動

主動 vs 被動性能分析
XDebug是一種主動分析器,在開發(fā)過程中使用地梨,由開發(fā)人員啟用菊卷。主動分析器收集的信息比被動分析器多,對性能的影響較大宝剖。通常不能應用宇生成環(huán)境中洁闰。

XHprof(本文主角)是一種被動分析器,由Facebook推出万细。是為了在生產(chǎn)環(huán)境中使用而打造的扑眉。它對應用性能的影響最小,同時可收集足夠多的信息用于診斷性能問題赖钞。

PHP7編譯安裝xhprof擴展

# xhprof官方擴展暫不兼容php7腰素,使用第三方
git clone https://github.com/longxinH/xhprof
cd xhprof/extension/
phpize
./configure --with-php-config=/Data/apps/php/bin/php-config
make && sudo make install

#說明
#由于每個人的環(huán)境不同,phpize命令和php-config雪营、php.ini的路徑可能不同
#這里介紹一個找文件強大的命令:locate  ,具體參考(https://www.cnblogs.com/xqzt/p/5426666.html)

#編譯安裝完成后弓千,編輯php.ini
locate php.ini
sudo vi ****/****/php.ini
#在php.ini文件中增加extension=xhprof.so
#重啟php和nginx
#查看是否已經(jīng)安裝xhprof擴展
php -m | grep xhprof
#有輸出則代表安裝成功

xhprof實戰(zhàn)應用

使用起來很簡單,在你需要測試的代碼的首尾各添加xhprof_enable()和xhprof_disable()就好了

  • 模板
1 <?php
 2 // cpu:XHPROF_FLAGS_CPU 內(nèi)存:XHPROF_FLAGS_MEMORY
 3 // 如果兩個一起:XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY 
 4 xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
 5 
 6 // 要測試的php代碼
 7 
 8 
 9 $data = xhprof_disable();   //返回運行數(shù)據(jù)
10  
11 // xhprof_lib在下載的包里存在這個目錄,記得將目錄包含到運行的php代碼中
12 include_once "xhprof_lib/utils/xhprof_lib.php";  
13 include_once "xhprof_lib/utils/xhprof_runs.php";  
14  
15 $objXhprofRun = new XHProfRuns_Default(); 
16 
17 // 第一個參數(shù)j是xhprof_disable()函數(shù)返回的運行信息
18 // 第二個參數(shù)是自定義的命名空間字符串(任意字符串),
19 // 返回運行ID,用這個ID查看相關(guān)的運行結(jié)果
20 $run_id = $objXhprofRun->save_run($data, "xhprof");
21 var_dump($run_id);
  • 實例


    image.png
  • web查看
    nginx添加sever配置

server {
         listen 80;
         server_name dev.xhprof.haodf.net;
         root /home/dev/xhprof/xhprof_html;
         index index.php;
         location ~ \.php$ {
           include fastcgi_params;
           fastcgi_pass 127.0.0.1:9000;
           fastcgi_index index.php;
           include fastcgi.conf;
     }
  • 重啟nginx
  • 配置本地hosts 10.1.xx.xx dev.xhprof.haodf.net
  • 瀏覽器輸入訪問 dev.xhprof.haodf.net


    image.png
  • 隨便點一個文件訪問


    image.png
  • 查看view Full Callgraph (如果報錯的話:安裝graphviz: sudo yum install graphviz 即可)


    image.png

圖中紅色的部分為性能比較低献起,耗時比較長的部分洋访,我們可以根據(jù)根據(jù)哪些函數(shù)被標記為紅色對系統(tǒng)的代碼進行優(yōu)化

補充

Function Name:方法名稱镣陕。

Calls:方法被調(diào)用的次數(shù)。

Calls%:方法調(diào)用次數(shù)在同級方法總數(shù)調(diào)用次數(shù)中所占的百分比姻政。

Incl.Wall Time(microsec):方法執(zhí)行花費的時間呆抑,包括子方法的執(zhí)行時間。(單位:微秒)

IWall%:方法執(zhí)行花費的時間百分比扶歪。

Excl. Wall Time(microsec):方法本身執(zhí)行花費的時間理肺,不包括子方法的執(zhí)行時間。(單位:微秒)

EWall%:方法本身執(zhí)行花費的時間百分比善镰。

Incl. CPU(microsecs):方法執(zhí)行花費的CPU時間妹萨,包括子方法的執(zhí)行時間。(單位:微秒)

ICpu%:方法執(zhí)行花費的CPU時間百分比炫欺。

Excl. CPU(microsec):方法本身執(zhí)行花費的CPU時間乎完,不包括子方法的執(zhí)行時間。(單位:微秒)

ECPU%:方法本身執(zhí)行花費的CPU時間百分比品洛。

Incl.MemUse(bytes):方法執(zhí)行占用的內(nèi)存树姨,包括子方法執(zhí)行占用的內(nèi)存。(單位:字節(jié))

IMemUse%:方法執(zhí)行占用的內(nèi)存百分比桥状。

Excl.MemUse(bytes):方法本身執(zhí)行占用的內(nèi)存帽揪,不包括子方法執(zhí)行占用的內(nèi)存。(單位:字節(jié))

EMemUse%:方法本身執(zhí)行占用的內(nèi)存百分比辅斟。

Incl.PeakMemUse(bytes):Incl.MemUse峰值转晰。(單位:字節(jié))

IPeakMemUse%:Incl.MemUse峰值百分比。

Excl.PeakMemUse(bytes):Excl.MemUse峰值士飒。單位:(字節(jié))

EPeakMemUse%:Excl.MemUse峰值百分比查邢。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市酵幕,隨后出現(xiàn)的幾起案子扰藕,更是在濱河造成了極大的恐慌,老刑警劉巖芳撒,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邓深,死亡現(xiàn)場離奇詭異,居然都是意外死亡笔刹,警方通過查閱死者的電腦和手機芥备,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徘熔,“玉大人门躯,你說我怎么就攤上這事】崾Γ” “怎么了讶凉?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵染乌,是天一觀的道長唧席。 經(jīng)常有香客問我味悄,道長,這世上最難降的妖魔是什么承绸? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任褐望,我火速辦了婚禮勒庄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瘫里。我一直安慰自己实蔽,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布谨读。 她就那樣靜靜地躺著局装,像睡著了一般。 火紅的嫁衣襯著肌膚如雪劳殖。 梳的紋絲不亂的頭發(fā)上铐尚,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音哆姻,去河邊找鬼宣增。 笑死,一個胖子當著我的面吹牛矛缨,可吹牛的內(nèi)容都是我干的爹脾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼劳景,長吁一口氣:“原來是場噩夢啊……” “哼誉简!你這毒婦竟也來了碉就?” 一聲冷哼從身側(cè)響起盟广,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓮钥,沒想到半個月后筋量,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡碉熄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年桨武,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锈津。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡呀酸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出琼梆,到底是詐尸還是另有隱情性誉,我是刑警寧澤窿吩,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站错览,受9級特大地震影響纫雁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜倾哺,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一轧邪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧羞海,春花似錦忌愚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至申尤,卻和暖如春癌幕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昧穿。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工勺远, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人时鸵。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓胶逢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親饰潜。 傳聞我的和親對象是個殘疾皇子初坠,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容